iPhone视图切换 - 卷曲过渡

iYa*_*sin 1 iphone animation transition

我正在使用以下代码在我的应用中加载视图:

- (void)showPicker {
ImagePickerViewController *imagePickerView = [[ImagePickerViewController alloc] initWithNibName:@"ImagePickerViewController" bundle:nil];
[self.navigationController presentModalViewController:imagePickerView animated:YES];
Run Code Online (Sandbox Code Playgroud)

}

如何通过卷曲/卷曲过渡加载它?

提前致谢,

亚辛

Jac*_*ues 7

使用您在那里显示的代码,您可以设置imagePickerView的modalTransitionStyle属性.但是,您的可能值是(来自SDK文档):

  • UIModalTransitionStyleCoverVertical:显示视图控制器时,其视图从屏幕底部向上滑动.在解雇时,视图向下滑动.这是默认的过渡样式.
  • UIModalTransitionStyleFlipHorizo​​ntal:当呈现视图控制器时,当前视图从右向左启动水平3D翻转,从而导致新视图的显示,就像它在前一视图的背面一样.在解雇时,翻转从左到右发生,返回到原始视图.
  • UIModalTransitionStyleCrossDissolve:当显示视图控制器时,当新视图同时淡入时,当前视图淡出.在解雇时,使用类似类型的交叉淡入淡出返回原始视图.

你的另一个选择要求你获得更多的发烧友.假设navigationController是应用程序的根视图控制器,它存储在名为navigationController的应用程序委托的属性中.您可以实现以下方法:

- (void)curlInViewController:(UIViewController *)viewController {
    self.curledViewController = viewController;

    [UIView beginAnimations:@"curlInView" context:nil];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES];
    [self.navigationViewController.view removeFromSuperview];
    [self.window addSubview:viewController.view];
    [UIView commitAnimations];
}

- (void)curlOutViewController {
    [UIView beginAnimations:@"curlOutView" context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES];
    [self.curledViewController removeFromSuperview];
    [self.window addSubview:navigationController.view];
    [UIView commitAnimations];
}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    if([animationID isEqualToString:@"curlOutView"]) {
        self.curlViewController = nil;
    }
}
Run Code Online (Sandbox Code Playgroud)