pgb*_*pgb 6 uinavigationcontroller ios
我们使用的自定义子类UINavigationController显示自定义视图,而不是UINavigationBar仅显示第一个视图控制器.
为此,我们覆盖pushViewController和popViewController动画出来,在我们的自定义视图.
代码pushViewController看起来像:
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
super.pushViewController(viewController, animated: animated)
defer { showTopViewIfNeeded(animated: animated) }
guard let transitionCoordinator = viewController.transitionCoordinator else { return }
transitionCoordinator.animateAlongsideTransition(in: self.view, animation: { (context) in
let fromViewController = context.viewController(forKey: UITransitionContextViewControllerKey.from)
if fromViewController == self.viewControllers.first {
var navigationViewFrame = self.topNavigationView.frame
navigationViewFrame.origin.x -= navigationViewFrame.size.width
self.topNavigationView.frame = navigationViewFrame
}
}, completion:nil)
}
Run Code Online (Sandbox Code Playgroud)
基本上,我调用了super实现,所以transitionCoordinator创建了一个(nil直到我调用它),然后我在转换的同时为视图设置动画.
它popViewController是相似的,只是反转动画(通过将原点改回零).
我遇到的问题是,第一次按下视图控制器时,动画不会发生.相反,自定义视图的框架会立即更改.
弹出并再次推动时,动画效果很好.
为了使它更奇怪,这在iOS 9和iOS 10模拟器中工作正常,并且仅在iOS 11中失败.
我的代码看起来不错吗?我是否正在与transitioningCoordinator标准互动?我试图了解这是iOS 11问题,还是我的代码问题.
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |