我正在制作一个信使应用程序,我希望用户点击我的tableview中的图像,它应该扩展到全屏并在导航栏上显示不同的控件.
我该怎么办呢?
我想我可以拍摄相同的图像,将UIImageView放在原始细胞图像的顶部并将其设置为全屏幕.但是,如何在没有闪烁,延迟和动画的情况下呈现不同的控制器?
这在许多消息传递应用程序中完成.
使用自定义转换,将图像视图从初始预览大小扩展到全屏.调用时,返回一个转换委托transitioningDelegate,从而返回一个动画控制器animationControllerForPresentedController:presentingController:sourceController:.此动画控制器将负责presentViewController:animated:completion:调用时将执行的动画.
在动画控制器中,实现并在其中创建动画:
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
MyChatViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
[[transitionContext containerView] addSubview:toViewController.view];
toViewController.view.frame = [transitionContext.containerView convertRect:fromViewController.imageViewToTransitionFrom.frame fromView:fromViewController.imageViewToTransitionFrom];
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];
} completion:^(BOOL finished) {
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
}];
}
Run Code Online (Sandbox Code Playgroud)
这MyChatViewController是聊天视图控制器,它imageViewToTransitionFrom包含您要转换的图像视图.
如果您需要推送视图控制器而不是呈现它(就像WhatsApp那样),有类似的方法来执行自定义推送动画.
您可以以类似方式执行消除/弹出动画,或使用默认系统动画.
请阅读此处关于iOS7中的自定义视图控制器转换.
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |