iOS

当前位置:首页 > iOS

ios – 在视图控制器转换中获取子视图的最终帧 - iOS

我正在iOS 7中的视图控制器之间实现自定义转换.特别是,我在视图控制器A和视图控制器B中有相同的按钮,唯一的区别在于它的位置(它在视图控制器B中略高一些). 我希望在从...
我正在iOS 7中的视图控制器之间实现自定义转换.特别是,我在视图控制器A和视图控制器B中有相同的按钮,唯一的区别在于它的位置(它在视图控制器B中略高一些).

我希望在从视图控制器A到视图控制器B的过渡中,来自A的按钮向上移动,使其在视图控制器B中的最终位置结束.

这是我的animateTransition:方法:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];    UIView *containerView = [transitionContext containerView];    [containerView insertSubview:toViewController.view belowSubview:fromViewController.view];    UIButton *fromButton = (UIButton *)[containerView viewWithTag:1];    UIButton *toButton = (UIButton *)[containerView viewWithTag:2];    toButton.hidden = YES;    [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{        fromButton.center = toButton.center;    } completion:^(BOOL finished) {        toButton.hidden = NO;        [transitionContext completeTransition:![transitionContext transitionWasCancelled]];    }];}

我看到的问题是toButton.center不是正确的位置.就像AutoLayout约束还没有被应用(我得到与IB中相同的框架矩形).这导致在转换完成后按钮不会在正确的位置结束.

哪里出错?如何从呈现的视图控制器中获取正确的子视图最终帧?如果由于视图控制器B尚未出现而无法实现,那么我如何设置子视图动画才能实现此效果?

解决方法

在开始动画之前,可以在toViewController的视图中调用layoutIfNeeded().这应该布局您的子视图,并为您提供toButton的最终框架.

以上是来客网为你收集整理的ios – 在视图控制器转换中获取子视图的最终帧全部内容,希望文章能够帮你解决ios – 在视图控制器转换中获取子视图的最终帧所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。

相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

评论排行榜

热门标签