【发布时间】:2019-06-06 18:07:19
【问题描述】:
在 Xcode 11 beta 中编译我的一个应用程序后,我注意到在设置 prefersLargeTitles 时导航栏没有背景。这是预期的行为吗?
我注意到这是消息应用程序现在向下滚动时的工作方式,并且可以看到大标题,没有导航栏背景。
这是用于设置navBar 属性的代码:
override func viewWillAppear(_ animated: Bool) {
let textAttributes = [NSAttributedString.Key.foregroundColor:ThemeManager.shared.default1]
self.navigationController?.navigationBar.largeTitleTextAttributes = textAttributes
self.navigationController?.navigationBar.titleTextAttributes = textAttributes
self.navigationController?.navigationBar.tintColor = ThemeManager.shared.default1
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.prefersLargeTitles = true
let nav = self.navigationItem
nav.title = "My Profile"
}
这里有几张显示差异的图片:
左,在 Xcode 10 上编译,右,Xcode 11 beta:
在 11 Beta 版本上向上滚动后,背景会重新淡入。请注意,未在 Xcode 11 Beta 中编译的应用程序仍会以正常方式运行,只是在编译后由于某种原因发生变化。这是有意的吗?我将如何恢复原来的行为?
【问题讨论】:
-
这种差异是在同一设备上运行的同一个应用程序上,还是在 iOS 13 上一个而另一个在 iOS 12(或更早版本)上?
-
一个在我的 iOS 13 物理设备上,另一个在 ios 12 模拟器上。但是我的 iOS 13 设备上有另一个应用程序,它以完全相同的方式(相同的代码)处理导航栏,并且在我的 iOS 13 设备上正常工作,我怀疑如果我在 Xcode 11 上编译该应用程序,它会改变。
-
@rmaddy 刚刚测试,我的其他应用在 ios 13 设备上运行良好,在 Xcode 11 上编译了代码,导航栏背景消失了。
-
可能是 Apple 的意图。如果您想保留旧的行为,只需为您的导航栏设置一个模糊的背景。 (通过模糊,我的意思是 setBackgroundImage 的图像由部分透明的颜色制成)。不要忘记 shadowImage。
-
Cœur,鉴于此站点,使用解决方案发布代码比“做这个然后做那个”更好。
标签: swift navigationbar xcode11