2009-06-17 17 views
0

Ich versuche, etwa 53 Bilder in Xcode für iPhone anzuzeigen, aber über das 37. Bild stürzt meine gesamte App ab! Wenn jemand Fehler in meinem Code sieht, würde ich Ihre Hilfe sehr schätzen. Vielen Dank!!Brauchen Sie Hilfe mit Scroll View Crashing

Ich denke, ich gebe meine Bilder nicht irgendwo ... nur nicht sicher, was zu tun ist!

#import "MyProjectViewController.h" 

@implementation MyProjectViewController 


@synthesize scrollView1; 

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation { 
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 


const CGFloat kScrollObjHeight = 320.0; 
const CGFloat kScrollObjWidth = 480.0; 
const NSUInteger kNumImages = 53; 


- (void)layoutScrollImages 
{ 
UIImageView *view = nil; 
NSArray *subviews = [scrollView1 subviews]; 
CGFloat curXLoc = 0; 
for (view in subviews) 
{ 
if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
{ 
CGRect frame = view.frame; 
frame.origin = CGPointMake(curXLoc, 0); 
view.frame = frame; 

curXLoc += (kScrollObjWidth); 
} 
} 

[scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 
} 

- (void)viewDidLoad 
{ 
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor]; 

[scrollView1 setBackgroundColor:[UIColor blackColor]]; 
[scrollView1 setCanCancelContentTouches:NO]; 
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
scrollView1.clipsToBounds = YES; 
scrollView1.scrollEnabled = YES; 
scrollView1.pagingEnabled = YES; 




NSUInteger i; 

for (i = 1; i <= kNumImages; i++) 
{ 
NSString *imageName = [NSString stringWithFormat:@"c1_%d.jpg", i]; 
UIImage *image = [UIImage imageNamed:imageName]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

CGRect rect = imageView.frame; 
rect.size.height = kScrollObjHeight; 
rect.size.width = kScrollObjWidth; 
imageView.frame = rect; 
imageView.tag = i; 
[scrollView1 addSubview:imageView]; 
[imageView release]; 

} 

[self layoutScrollImages]; 

} 



- (void)dealloc 
{ 
[scrollView1 release]; 

[super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
} 


@end 

Vielen Dank !!!!!

+0

Was ist der Fehler in Xcode, wenn die App beendet wird? –

Antwort

2

Wie groß sind Bilder? Ich vermute, das Problem ist nicht mit dem Code selbst, aber mit Speicherbeschränkungen von iPhone/iPod - wenn Sie große Bilder laden, essen sie einfach alle Speicher und Programm ist geschlossen.

1

Nun der wahrscheinlichste Grund ist, dass Sie keinen Speicher mehr haben. Fügen Sie eine NSLog-Nachricht in didReceiveMemoryWarning ein, um zu prüfen, ob Sie eine Warnung für wenig Arbeitsspeicher erhalten.

In jedem Fall würde ich vorschlagen, dass Sie faul laden Bilder und nicht alle Bilder auf einmal. Es wird die Ladezeit Ihrer App erheblich reduzieren und wahrscheinlich auch Ihre Speicherprobleme lösen. Verwenden Sie UIScrollViewDelegate, um zu wissen, wann Bilder geladen werden sollen, die noch nicht geladen wurden, abhängig von der Position des UIScrollView-Offsetwerts.