Нужна помощь с Scroll View Crashing - PullRequest
0 голосов
/ 17 июня 2009

Я пытаюсь отобразить около 53 изображений в Xcode для iphone, но около 37-го изображения вылетает все мое приложение! Если кто-нибудь увидит какие-либо ошибки в моем коде, я был бы очень признателен за вашу помощь. Спасибо !!

Я думаю, что я не выпускаю свои изображения где-то ... просто не знаю, что делать!

#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

Спасибо !!!!!

Ответы [ 2 ]

2 голосов
/ 17 июня 2009

Насколько велики изображения? Я подозреваю, что проблема не в самом коде, а в ограничениях памяти iPhone / iPod - если вы загружаете большие изображения, они просто съедают всю память и программа закрывается.

1 голос
/ 18 июня 2009

Ну, наиболее вероятная причина в том, что вам не хватает памяти. Поместите сообщение NSLog в didReceiveMemoryWarning, чтобы проверить, получаете ли вы предупреждение о нехватке памяти.

В любом случае я бы посоветовал вам лениво загружать изображения, а не все изображения одновременно. Это значительно сократит время загрузки вашего приложения, а также, вероятно, решит проблемы с памятью. Используйте UIScrollViewDelegate, чтобы узнать, когда загружать изображения, которые еще не были загружены, в соответствии с положением значения смещения UIScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...