2012-05-31 6 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를 직접 호출하면 안됩니다. 즉, OS가 처리하는 내용을 직접 호출하면 안됩니다. 대신 어떤 식 으로든 imageController.view을 참조하면로드가 시작됩니다. SGBImageController의 viewDidLoad 메서드가 호출 될 때 위임자 콜백 또는 NSNotification을 사용하여 클래스에 알린 다음 애니메이션을 시작할 수 있습니다.

+0

사실이 아닙니다. 펜촉을 사용하는 경우 viewDidLoad를 사용하지만 펜촉은 사용하지 않습니다. 뷰를 직접 구성하려면 viewDidLoad를 사용합니다. – Simon

+0

Nib에서 뷰를로드하지 않아도 loadView를 재정의 (override) 할 수는 있지만 메서드를 직접 호출 할 필요는 없습니다. 출처 : http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/loadView –

+0

참. 그러나 [imageController loadView]가 더 표현력이있는 반면에 아무 것도하지 않고 [imageController view]를 호출하면 경고 메시지가 나타납니다. – Simon

관련 문제