【发布时间】:2018-04-29 02:40:07
【问题描述】:
我有 uinavigationbar 的默认首选项:
UINavigationBar.appearance().barTintColor = .red
UINavigationBar.appearance().titleTextAttributes = [ NSAttributedStringKey.foregroundColor:#colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1)]
if #available(iOS 11.0, *) {
UINavigationBar.appearance().largeTitleTextAttributes = [ NSAttributedStringKey.foregroundColor:#colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1)]
}
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().tintColor = #colorLiteral(red: 1, green: 0.99997437, blue: 0.9999912977, alpha: 1)
结构:UINaviagtionController -> PostsTableViewController -> PostTableViewController。
我想在 PostsViewController 上有大的导航栏(背景颜色不透明),在 PostViewController 上有透明的导航栏。
在 PostTableViewController 我添加:
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.barTintColor = .clear
self.automaticallyAdjustsScrollViewInsets = false
//self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
//self.navigationController?.navigationBar.shadowImage = UIImage()
if #available(iOS 11.0, *) {
print("asd")
self.tableView.insetsContentViewsToSafeArea = false
self.tableView.contentInsetAdjustmentBehavior = .never
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
更新:
git hub 仓库:https://github.com/Mazorati/testnavbar
我设置 isTranslucent = true,但大导航也变得透明。只有默认导航是可以的。
但我希望导航栏颜色不透明,所以:
self.navigationController?.view.backgroundColor = .red
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationItem.largeTitleDisplayMode = .automatic
结果:
3D 图层:
【问题讨论】:
-
这与我的问题无关。我使用推送转场
-
没关系。相同的视图堆栈,不同的过渡。你试过了吗?
-
@Mazorati 你能解决这个问题吗?
标签: ios swift uinavigationbar