我正在制作一个消息应用程序,我希望用户单击我的表格视图中的图像,它应该扩展到全屏并在导航栏上显示不同的控件。
我该怎么办?
我想我可以拍摄相同的图像,将 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]];
}];
}
Here, MyChatViewController
是你的聊天视图控制器并且imageViewToTransitionFrom
保存您想要从中转换的图像视图。
如果您需要推送视图控制器而不是呈现它(就像 WhatsApp 那样),可以使用类似的方法来执行自定义推送动画。
您可以以类似的方式执行关闭/弹出动画,或使用默认的系统动画。
Read here http://www.objc.io/issue-5/view-controller-transitions.html关于 iOS7 中的自定义视图控制器转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)