我正在尝试为自定义过渡(iOS7,UIViewControllerAnimatedTransitioning)实现动画,当来自 UITableViewCell 的缩略图开始缩小到全屏并且过渡以带有背景图像的新(模态)UIViewController 全屏结束时,即源 UITableViewCell 的缩略图中的图像质量更高。
使用自定义转换的“准备”代码很好,现在我正在努力处理委托方法中的实际动画实现:
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext
{
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
CGRect sourceRect = [transitionContext initialFrameForViewController:fromVC];
CGRect finalRect = [transitionContext finalFrameForViewController:toVC];
UIView *container = [transitionContext containerView];
if (self.mode == TRANSITION_MODE_INITIAL) {
//TODO: back to the table listing
} else if (self.mode == TRANSITION_MODE_MODAL) {
//TODO: take a thumbnail and zoom out, then replace with toVC's view?
}
}
我将选定的 UITableViewCell 传递给这个自定义转换类,因此我可以访问单元格的所有子视图来实现动画。
我无法正确理解的要点:
- 仅放大 toVC 并将其放置在缩略图位置(帧)上然后为其缩小设置动画而不是缩放实际缩略图是否正确?
- 容器在这里的作用是什么?如何正确使用?