UIViewController가 사라지게하기 전에 애니메이션을 사용하여 탐색 모음을 숨기려고합니다.viewDidDisAppear에서 애니메이션이 끝날 때까지 기다리는 방법?
-(void) viewWillDisappear:(BOOL) animated {
[UIView transitionWithView:self.view
duration:UINavigationControllerHideShowBarDuration
options:UIViewAnimationCurveEaseOut
animations:^{
[self.navigationController setNavigationBarHidden:YES];
}
completion:^(BOOL finished){
NSLog(@"animation finished");
}];
[super viewWillDisappear:animated];
}
문제는 viewWillDisappear 실행 그냥 돌아가 전체보기 애니메이션 완료하기 전에 멀리 갈 것입니다 계속 것입니다 : 그러므로 나는 다음과 같은 구현했습니다. 애니메이션이 완료되기 전에 메소드가 반환되지 않게하려면 어떻게해야합니까? ("애니메이션 마침"이 인쇄되는 곳).
애니메이션을 만들 수 없습니다. 어쩌면 당신은'setNavigationBarHidden : animated :'메소드를 대신 찾고있을 것인가? –
'setNavigationBarHidden : animated :'를 사용하고 싶지 않습니다. iOS 4 (왼쪽으로 슬라이드)와 iOS 5 (위쪽으로 슬라이드)에서 다르게 애니메이션을 적용하기 때문입니다. 아무튼, 'viewNillDisappear' 블록 내에'setNavigationBarHidden : animated :'를 넣는 것은 여전히 애니메이션이 끝나기 전에 메소드가 돌아 오기 때문에 중요하지 않습니다. 아마도 여기에 두 개의 스레드가 필요하다고 생각합니까? –