2012-05-31 103 views
2

我有一個視圖控制器,其工作是顯示一個大的圖像,最初的大小適合屏幕,用戶可以平移和縮放。該圖像是用手機的相機拍攝的,然後保存到設備並使用+[UIImage imageWithData:]重新加載。如何讓視圖控制器在動畫之前繪製其視圖?

我顯示在導航堆棧中的控制器,但我用這樣的衰落過渡:

SGBImageController *imageController = [[[SGBImageController alloc] init] autorelease]; 
imageController = <theImage>; 
[imageController loadView]; 

[UIView transitionWithView:self.navigationController.view 
        duration:0.33 
        options:UIViewAnimationOptionAllowAnimatedContent 
          |UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 

    [self.navigationController pushViewController:imageController animated:NO]; 

} completion:nil]; 

的動畫漸變應光滑,但它的生澀,並期待在儀器我看到它的花所有的時間在CA::Layer::Render。我已經添加了loadView系列,試圖強制它顯示其視圖,但沒有幫助。如何讓視圖控制器在動畫之前繪製自己?

回答

0

你不應該直接調用loadView,這是操作系統處理的東西。相反,只要以任何方式引用imageController.view就會開始加載。您可以使用委託回調或NSNotification在SGBImageController的viewDidLoad方法被調用時通知您的課程,然後從那裏開始您的動畫。

+0

這是不正確的。如果您使用筆尖,則使用viewDidLoad,但不使用筆尖。如果你想自己構建視圖,你可以使用viewDidLoad。 – Simon

+0

是的,你可以覆蓋loadView,如果你不從Nib加載視圖,但你不必直接調用該方法。 來源:http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/loadView –

+0

是的。但是如果你調用[imageController視圖]而不做任何事情,你也會得到警告,而[imageController loadView]更具表現力。 – Simon

相關問題