gpt4 book ai didi

带有 UINavigationController 的 iOS 7 自定义呈现转换

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

我正在使用 iOS 7 自定义转换来呈现 UINavigationController。但有一个问题。在动画的同时,导航栏的大小只有 44 点。然后在完成动画后,导航 Controller 发现有一个状态栏,所以它为状态栏添加了 20points。

我的问题是,是否可以在设置动画时将导航栏设置为 64 点,以便在完成动画后不再更改。

详情请看这里Custom View Transitions

这是我的自定义动画代码:

 - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{

UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

CGRect finalFrame = [transitionContext finalFrameForViewController:toViewController];

UIView *containerView = [transitionContext containerView];

CGRect screenBounds = [[UIScreen mainScreen] bounds];
toViewController.view.frame = CGRectOffset(finalFrame, 0, screenBounds.size.height);
[containerView addSubview:toViewController.view];

NSTimeInterval duration = [self transitionDuration:transitionContext];

[UIView animateWithDuration:duration delay:0.0 usingSpringWithDamping:0.6 initialSpringVelocity:0.0 options:UIViewAnimationOptionCurveLinear animations:^{
toViewController.view.frame = finalFrame;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}

更新:有人解决了这个问题。但很hacky。在将 toViewController.view 添加到 containerView 之后添加此代码。

if ([toViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController* navigationController = (UINavigationController*) toViewController;
UINavigationBar* bar = navigationController.navigationBar;
CGRect frame = bar.frame;
bar.frame = CGRectMake(frame.origin.x, frame.origin.y + 20.0f, frame.size.width, frame.size.height);
}

有更好的方法吗?

最佳答案

我遇到了同样的问题,并解决了在设置此框架之前将 toViewController 添加到容器中的问题。

像下面这样反转行:

[containerView addSubview:toViewController.view];
toViewController.view.frame = CGRectOffset(finalFrame, 0, screenBounds.size.height);

关于带有 UINavigationController 的 iOS 7 自定义呈现转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19803993/

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