我有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 即可。
我想在PostViewView上使用PostsViewController上的大导航栏(具有不透明的背景颜色)和透明导航栏。
在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 repository: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图层:
答案 0 :(得分:1)
您是否尝试过将其更改为半透明?
self.navigationController?.navigationBar.isTranslucent = true
更新:
您必须记住导航栏属于UINavigationController,它将视图保存在其中,因此当您将其更改为一个时,它将全部更改。
解决方案是在第二个视图控制器的viewWillAppear方法中将其更改为半透明,并在viewDidDissapear方法中将其更改为不透明。使用viewWill和viewDid播放方法,直到找到符合您需要的方法。
答案 1 :(得分:0)
试试这个,这会让你的导航栏变得透明。
let img = UIImage()
navigationController?.navigationBar.shadowImage = img
navigationController?.navigationBar.setBackgroundImage(img, for: .default)