Я новичок в разработке для iPhone, и у меня проблема с UINavigationControoler в моем приложении.
У меня есть список изображений из основного комплекта приложений в UITableView (с миниатюрами), и когда изображение выбрано, представление UIScrollView передается в контроллер навигации.Проблема возникает во время анимации с нажимным переходом, когда я использую большие изображения (например, те, которые сняты на камеру iPhone).Это не гладко (низкая частота кадров), поэтому мне интересно, в чем проблема (+ нет проблем с поп-переходом).Вот мой фрагмент кода из представления изображения:
- (void)loadView
{
//consider loading in seperate thread?
//[NSThread detachNewThreadSelector:@selector(loadImage:) toTarget:self withObject:[photo URL]];
UIImage *image = [UIImage imageNamed :[photo URL]];
imageView = [[UIImageView alloc] initWithImage:image];
UINavigationController *navController = [self navigationController];
//get navigation controller view frame
CGRect scrollViewSize = self.navigationController.view.frame;
//take navigation bar height into account for scroll view size
if(![navController isNavigationBarHidden]) {
scrollViewSize.size.height -= [[navController navigationBar] frame].size.height;
}
//take status bar height into account for scroll view size}
UIApplication *sharedApp = [UIApplication sharedApplication];
if(![sharedApp isStatusBarHidden]) {
scrollViewSize.size.height -= [sharedApp statusBarFrame].size.height;
}
//calculate minimum zoom scale
CGSize screenSize = scrollViewSize.size;
CGFloat widthRatio = screenSize.width / image.size.width;
CGFloat heightRatio = screenSize.height / image.size.height;
CGFloat initialZoom = (widthRatio > heightRatio) ? heightRatio : widthRatio;
//init scroll view
scrollView = [[PhotoScrollView alloc] initWithFrame:scrollViewSize];
[scrollView setMaximumZoomScale:1.0];
[scrollView setMinimumZoomScale:initialZoom];
[scrollView setBouncesZoom:YES];
[scrollView setContentSize :[image size]];
[scrollView setScrollEnabled :YES];
[scrollView setDelegate: self];
//imageView has to be added to scrollView in order for setZoomScale to work
[scrollView addSubview :imageView];
[scrollView setZoomScale:initialZoom];
imageDescription = [[UILabel alloc] initWithFrame:CGRectMake(0, (screenSize.height/2)-20, screenSize.width, 40)];
[imageDescription setText:[[self photo] getDetails]];
[imageDescription setFont:[UIFont systemFontOfSize:20]];
[imageDescription setTextAlignment:UITextAlignmentCenter];
[imageDescription setBackgroundColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5]];
[imageDescription setAlpha:0];
[image release];
[super loadView];
}
- (void)viewDidLoad
{
[self.view addSubview :scrollView];
[self.view addSubview:imageDescription];
[super viewDidLoad];
}
Я уже пытался загрузить изображение в отдельном потоке ([NSThread detachNewThreadSelector: @selector (loadImage :) toTarget: self withObject: [URL фотографии]]), ноэто не помогает.Должен ли я изменить размер изображения?Также мне интересно, как написано приложение iPhone для фотографий по умолчанию, потому что оно имеет схожую функциональность, но изображение при переходе размыто.