Development Tip

모달 UIViewController의 애니메이션 스타일을 어떻게 변경할 수 있습니까?

yourdevel 2020. 11. 2. 19:54
반응형

모달 UIViewController의 애니메이션 스타일을 어떻게 변경할 수 있습니까?


현재 다음과 같은 UIViewController를 표시하고 있습니다.

[[self navigationController] presentModalViewController:modalViewController animated:YES];

다음과 같이 숨 깁니다.

[self.navigationController dismissModalViewControllerAnimated:YES];

애니메이션은 "아래에서 위로 슬라이드"입니다. 그런 다음 다시 아래로 슬라이드합니다. 애니메이션 스타일은 어떻게 변경합니까? 페이드 인 / 아웃 할 수 있습니까?

건배!


Marcus Zarra는 SDK 메일 링리스트에 이에 대한 훌륭한 솔루션을 게시했습니다.

UIViewController *controller = [[[MyViewController alloc] init] autorelease];
UIViewAnimationTransition trans = UIViewAnimationTransitionCurlUp;
[UIView beginAnimations: nil context: nil];
[UIView setAnimationTransition: trans forView: [self window] cache: YES];
[navController presentModalViewController: controller animated: NO];
[UIView commitAnimations];

뒤집기 및 페이지 말림 전환이 있습니다. 페이딩으로 설정된 경우 새 뷰의 알파를 조정 해 볼 수 있습니다.

UIViewController *controller = [[[MyViewController alloc] init] autorelease];
controller.view.alpha = 0.0;
[navController presentModalViewController: controller animated: NO];
[UIView beginAnimations: nil context: nil];
controller.view.alpha = 1.0;
[UIView commitAnimations];

그러나 아마도 원하는 것은 크로스 페이드 또는 적어도 페이드 오버입니다. UINavigationController가 새보기로 전환되면 이전보기를 제거합니다. 이 효과의 경우 기존 UIViewController에 새 뷰를 추가하고 시간이 지남에 따라 알파를 페이드 인하는 것이 더 좋습니다.

참고 : 앱에 있지 않은 경우 위임 [셀프 창]이 작동하지 않습니다. 이것을 지적한 user412500의 게시물 덕분에 self.view.window를 사용하십시오.


iPhone 3.0+의 경우 다음과 같이 기본 크로스 페이드가 가장 쉽습니다.

modalViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[[self navigationController] presentModalViewController:modalViewController
                                               animated:YES];

iOS 4에서 알파 페이딩을 업데이트하려면 :

modalController.view.alpha = 0.0;
[self.view.window.rootViewController presentModalViewController:modalController animated:NO];
[UIView animateWithDuration:0.5
                 animations:^{modalController.view.alpha = 1.0;}];

그것은해야 [self.view.window]작업에 코드를 위해

(적어도 그것은 ios 3.2에있는 방식입니다)

참고 URL : https://stackoverflow.com/questions/237310/how-can-i-change-the-animation-style-of-a-modal-uiviewcontroller

반응형