gpt4 book ai didi

ios - 自定义 Controller 包含和导航栏高度

转载 作者:行者123 更新时间:2023-11-28 05:32:32 26 4
gpt4 key购买 nike

我正在实现一个自定义包含 View Controller 。子 VC 是导航 Controller 并且是全屏的。要执行我正在使用的过渡/动画:

// controller hierarchy setup
parentVC.addChildViewController(targetVC)
currentVC.willMoveToParentViewController(nil)
// position target
targetVC.view.frame = currentVC.view.frame
targetVC.view.autoresizingMask = .FlexibleHeight | .FlexibleWidth
// swap em
parentVC.transitionFromViewController(currentVC, toViewController: targetVC, duration: 0.3, options: .TransitionCrossDissolve, animations: {}) { (finished) -> Void in
// controller hierarchy complete
self.currentVC.removeFromParentViewController()
self.targetVC.didMoveToParentViewController(self.parentVC)
}

它工作正常,但有一个很大的异常(exception),即导航栏在状态栏下方重叠,直到动画完成,此时它弹出到位,高度增加了 20 像素。

由于帧是在动画之前设置的,而动画不会影响帧,我很茫然……有什么想法吗?

最佳答案

我能够通过放弃 transitionFromViewCon... 并仅使用 UIView 的 animateWithDuration 来获得所需的效果。似乎弄清楚如何坚​​持使用 transitionFromViewCon... 是最理想的,但我现在就开始吧。

    // controller hierarchy setup
parentVC.addChildViewController(targetVC)
currentVC.willMoveToParentViewController(nil)
// position target
targetVC.view.alpha = 0
parentVC.view.addSubview(targetVC.view)
// swap em
UIView.animateWithDuration(0.3, animations: { () -> Void in
// crossfade
self.targetVC.view.alpha = 1
self.currentVC.view.alpha = 0
}, { (finished) -> Void in
self.currentVC.view.removeFromSuperview()
// controller hierarchy complete
self.currentVC.removeFromParentViewController()
self.targetVC.didMoveToParentViewController(self.parentVC)
})

关于ios - 自定义 Controller 包含和导航栏高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220839/

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