Ste*_*ser 8 objective-c uiviewanimationtransition ios autolayout
我使用iOS 7引入的新自定义过渡,我试图将视图从我的'主'视图控制器移动到我的'详细'视图控制器中的视图,类似于Photos.app放大照片时的方式你点击它,除了详细视图中的这个视图只占用屏幕的一半.要做到这一点,我试图通过从细节或toViewController获取最终帧来将此视图设置为最终帧的动画.然而,我得到的框架是来自Interface Builder的toViewController视图的起始框架,而不是AutoLayer在其上传递后出现的视图.如何通过自动布局设置框架后获取框架?我在toViewController特殊视图框架返回animateTransition之前尝试了[self.view layoutSubviews]:但仍然给出了IB布局.
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
[[transitionContext containerView] addSubview:toViewController.view];
toViewController.view.alpha = 0;
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
fromViewController.view.alpha = 0;
toViewController.view.alpha = 1;
fromViewController.specialView = [toViewController detailSpecialViewFrame];
} completion:^(BOOL finished) {
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |