.如果系统自己去管理
- (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
}