【发布时间】:2018-02-22 02:58:53
【问题描述】:
iOS 11 中如何为大标题 NavigationBar 设置自定义背景图片?我正在使用已分配给故事板中的 navigationControllers 的自定义子类。
这就是我创建自定义导航栏的方式:
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.navigationBar.tintColor = UIColor(red:1, green:1, blue:1, alpha:0.6)
self.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
if #available(iOS 11.0, *) {
self.navigationBar.prefersLargeTitles = true
self.navigationItem.largeTitleDisplayMode = .automatic
self.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
self.navigationBar.barTintColor = UIColor.green
}
self.navigationBar.isTranslucent = false
self.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "navigationBarBackground"), for: .default)
self.navigationBar.shadowImage = #imageLiteral(resourceName: "navigationBarShadow")
}
}
奇怪的是,setBackgroundImage(image, for: .default) 不适用于大标题。它以前在 iOS 10 上工作过,如果我旋转 iPhone(并激活小 NavBar)背景又回来了?
编辑:
backgroundImage 仍然被渲染,但不知何故被隐藏了。仅当您开始滚动并出现“正常”导航栏时,背景图像才可见。在这种情况下,barTintColor 也被完全忽略。
【问题讨论】:
-
嗨@alexkaessner。你找到问题的任何解决方案了吗..?
-
@OceanBlue 不! :/ 我刚刚检查了一下新的 NavBar。显示的大布局似乎有一个完全不同的视图,但这个视图没有改变。
-
可以设置导航栏背景颜色或bartintcolor。但不幸的是我无法设置导航栏背景图像。这是ios 11的bug吗?你知道什么吗..?
-
@OceanBlue 我刚刚添加了更多分析信息,但这似乎是一个错误。我稍后会向 Apple 提交报告!
-
@Tulleb 一点也不。 Apple 将其标记为“与 33345493 重复”,但问题仍未解决。
标签: ios swift uinavigationbar ios11