我的应用程序中存在一个奇怪的视觉错误,该错误仅适用于从Xcode 11版本运行的iOS 13。我在导航控制器中嵌入了一个表格视图,默认色调颜色设置为应用程序的主要橙色。在iOS12上,当您取消搜索操作时,将显示一个后退按钮,该按钮紧随主橙色的全局导航控制器色调。这是预期的行为。如下图所示:
但是,iOS13中的相同代码会产生系统默认的蓝色后退箭头,如下所示:
我已经尝试了一切尝试来覆盖该蓝色后退按钮,包括使用自定义操作创建一个自定义的Bar Button项,但这太乱了,我只想简单地覆盖色调颜色。我尝试了明显的searchController.searchBar.tintColor = UIColor(named:"Primary")
,其中searchController是我的UISearchController,并且尝试覆盖self.navigationController的颜色。我尝试以本机访问SearchBar,例如:UISearchBar.appearance().tintColor = UIColor(named:"Primary")
,但还是没有运气。我已经尝试了IB中可以想到的所有其他功能,但是我不知道如何达到此后退按钮的色调颜色。有人可以帮忙吗?
答案 0 :(得分:2)
到目前为止,我发现在iOS13.1上获得此修复的唯一方法是遍历导航栏中的子视图并手动修改tintColor。
新的UINavigationBarAppearance
方法似乎都无法解决问题。如果您在backButtonAppearance
中修改了UINavigationBarAppearance
,则可以修复后退按钮中的标题,但找不到修复图像(<)的方法。
答案 1 :(得分:0)
尝试
override func viewWillAppear(_ animated: Bool) {
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
self.navigationItem.backBarButtonItem?.tintColor = .blue
}
答案 2 :(得分:0)
在iOS 13中,导航栏几乎没有新的外观类型。当您要自定义与大标题或任何类型的滚动视图相关的导航栏时,只需为.scrollEdgeAppearance设置外观参数
if #available(iOS 13.0, *) {
let standartAppearence = UINavigationBarAppearance()
standartAppearence.configureWithDefaultBackground()
// Your configuration
UINavigationBar.appearance().scrollEdgeAppearance = standartAppearence
}
答案 3 :(得分:0)
事实证明,这是一个XCode / Swift错误,仅影响iOS 13.1。不必在代码中考虑到这一点,因为只有一小部分用户群仍在13.1上。