Kle*_*oke 5 objective-c uinavigationbar ios swift ios11
如何在 iOS 11 中将导航栏设置为透明并实现从正常到透明的平滑过渡?
在 iOS 11 之前,我找到了_UIBarBackground视图并将其设置alpha在 中viewWillAppear:,并且在弹出、推入和向后滑动时效果很好。
但是在 iOS 11 中,_UIBarBackground的 alpha 会在之后viewDidAppear自动设置为 1 。
所以我想知道,还有其他完美的解决方案吗?
在故事板中设置“在视图控制器的顶部栏下”,这样您的视图将位于导航栏下方
使用框架 {0,0,screenWidth,64} 将子视图添加到视图中,或对其使用自动布局约束。
设置该视图的背景颜色:
将导航栏的背景设置为透明:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
}
Run Code Online (Sandbox Code Playgroud)
现在您可以通过动画将黄色视图更改为透明
示例项目: https: //github.com/josshad/AnimatedNavBar