解决 isTranslucent 导航栏透明的一个问题

.如果系统自己去管理

  • (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated;

Tells a child controller its appearance is about to change.

If you are implementing a custom container controller, use this method to tell the child that its views are about to appear or disappear. Do not invoke viewWillAppear:, viewWillDisappear:, viewDidAppear:, or viewDidDisappear: directly.

场景如下:

v1:母控制器
v2:子控制器
v1 addChildViewController 多个v2 展示v2.view 然后以UIScrollView 滑动

代码中我们发现:
当添加v2的时候 会先执行baseController的 viewWillApper方法 再执行 viewWillDisApper方法
我们在基类控制器上对navigationBar 做了 isTranslucent 将要出现的时候为false 将要消失的时候 至为 true

这样会造成一个问题
就是子控制器每次滑动消失 都会造成导航栏的透明度为true
而我之前希望的是 viewWillApper isTranslucent false viewWillDisApper isTranslucent true
在这种自控制器滑动中就会出现问题

既然找到问题,解决方法就同样找到了
我这里对父控制器v1
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.navigationController?.navigationBar.isTranslucent = false
}

你可能感兴趣的:(解决 isTranslucent 导航栏透明的一个问题)