Aln*_*tak 44 uinavigationbar ios swift ios11.2
在我的应用程序中,我有多个视图控制器,大多数都有右侧,UIBarButtonItem附加了直接"显示"segue操作.
缝制到另一个视图然后按下'< Back'按钮,原始按钮项目仍然淡出,但仍然可用.
这似乎只发生在iOS 11.2下.
我看不到任何可以做到这一点的设置,并且在至少一个发生这种情况的情况下,没有特定的segue展开或viewDidAppear处理.我发布了一些代码,但AFAICS它只是默认UINavigationBar行为.
mat*_*att 24
我所做的是在视图控制器中解决这个bug,viewWillAppear如下所示:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.tintAdjustmentMode = .normal
self.navigationController?.navigationBar.tintAdjustmentMode = .automatic
}
Run Code Online (Sandbox Code Playgroud)
这似乎唤醒了没有视觉伪影的按钮.
小智 5
另一个解决方法是在父navigationController上实现修复 - 以便它的每个子viewController获得如下修复
注意:这需要将接收类设置为UINavigationController委托
迅速
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
if #available(iOS 11.2, *) {
navigationBar.tintAdjustmentMode = .normal
navigationBar.tintAdjustmentMode = .automatic
}
}
Run Code Online (Sandbox Code Playgroud)
Objective-C的
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (@available(iOS 11.2, *)) {
self.navigationBar.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
self.navigationBar.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5139 次 |
| 最近记录: |