gpt4 book ai didi

ios - 在 View Controller 转换中获取 subview 的最终帧

转载 作者:可可西里 更新时间:2023-11-01 03:30:29 26 4
gpt4 key购买 nike

我正在 iOS 7+ 中实现 View Controller 之间的自定义转换。特别是,我在 View Controller A 和 View Controller B 中有相同的按钮,唯一的区别在于它的位置(它在 View Controller B 中稍微高一点)。

我希望在从 View Controller A 到 View Controller B 的转换中,A 中的按钮向上移动,以便它在 View Controller 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 中相同的框架矩形)。这会导致按钮在转换完成后没有在正确的位置结束。

哪里出错了?如何从呈现的 View Controller 中获取正确的 subview 最终帧?如果那是不可能的,因为 View Controller B 还没有出现,我怎样才能为 subview 设置动画来实现这种效果?

最佳答案

在开始动画之前,您可以在 toViewController 的 View 上调用 layoutIfNeeded()。这应该布置您的 subview 并为您提供 toButton 的最终框架。

关于ios - 在 View Controller 转换中获取 subview 的最终帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com