ios - 如何在 tableview 中为图像设置动画以同时扩展和打开另一个 View Controller ?

标签 ios ios7 uikit

我正在制作一个 Messenger 应用程序,我希望用户单击我的表格 View 中的图像,它应该扩展到全屏并在导航栏上显示不同的控件。

我该怎么做?

我想我可以拍摄相同的图像,将 UIImageView 放在原始单元格图像的顶部并将其设置为全屏动画。但是,我该如何在没有闪烁、延迟和动画的情况下呈现不同的 Controller ?

这在许多消息传递应用程序中完成。

最佳答案

使用自定义过渡,将 ImageView 从初始预览大小扩展到全屏。调用时,从 transitioningDelegate 返回一个转换委托(delegate),它又应该从 animationControllerForPresentedController:presentingController:sourceController: 返回一个动画 Controller 。此动画 Controller 将负责在调用 presentViewController:animated:completion: 时执行的动画。

在您的动画 Controller 中,实现并在其中创建动画:

- (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]];
    }];
}

在这里,MyChatViewController 是您的聊天 View Controller ,imageViewToTransitionFrom 包含您希望从中转换的 ImageView 。

如果您需要推送 View Controller 而不是呈现它(就像 WhatsApp 那样),可以使用类似的方法来执行自定义推送动画。

您可以以类似的方式执行关闭/弹出动画,或使用默认的系统动画。

阅读here关于 iOS7 中的自定义 View Controller 转换。

关于ios - 如何在 tableview 中为图像设置动画以同时扩展和打开另一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858525/

相关文章:

iphone - 在 UIActionSheet 中添加 UIPickerView 时,iOS 7 上出现无效上下文错误?

ios - 编辑表格时的附加选项卡

ios - 在 iOS 13 中使用 UITabBar.ItemPositioning

ios - UITableViewCell 使用自定义 layoutSubviews() 出现在屏幕上后隐藏部分内容

ios - 为什么身份验证不适用于我的 ASP.NET REST API?

ios - 实时应用程序图标,如 iOS 7 时钟

ios - 如何根据单元格 subview (自定义添加的标签)的值对 UITableView 中的行进行正确排序?

iphone - UIPageViewController 与 UIViewControllerInteractiveTransitioning

ios - 支持的视频格式 iOS7 UIImagePickerController

ios - AddressBookUI View Controller 在 iOS 7 中的行为不符合预期