我的应用正在使用带有白色按钮和文字的红色导航栏(2)栏。当我使用系统联系人选择器(3)时,状态栏为红色。当我使用文件选择器(1)UIDocumentPickerViewController
时,导航栏是白色的。如何更改导航栏或文本的颜色?
当我使用下面的代码时,它可以工作,但它也会改变我的导航栏。
UINavigationBar.appearance().tintColor = .red
感谢您的帮助
代码:
func open() {
UINavigationBar.appearance().barTintColor = .green
let documentsController = UIDocumentPickerViewController(documentTypes: makeDocumentTypesList(), in: .import)
documentsController.delegate = self
viewControllerProvider.getViewController().present(documentsController, animated: true, completion: nil)
}
答案 0 :(得分:19)
您只需将此代码放在UIDocumentPickerViewController
功能的某个位置即可重置application:didFinishLaunchingWithOptions:
的外观,条形按钮将恢复为原始蓝色,或者您可以设置您选择的任何其他颜色。另一方面,条形颜色不可定制。
if #available(iOS 11.0, *) {
UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
答案 1 :(得分:3)
使用setTitleTextAttributes
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.white], for: .normal)
答案 2 :(得分:1)
这是我找到的唯一解决方案:
UINavigationBar.appearance().tintColor = ... some color
_viewController?.present(documentPicker, animated: true)
据我所知,无法仅将色调设置为色调(文本颜色)。为了保持项目其余部分的色调颜色,我在底层视图控制器的viewWillAppear中重置它。
答案 3 :(得分:-1)
正如您要求"更改导航栏或文字的颜色?" 我没有改变导航栏的解决方案,它总是返回零
self.present(documentPicker, animated: true,completion: {
if documentPicker.navigationController?.navigationBar != nil{
documentPicker.navigationController?.navigationBar.barTintColor = .red
}
})
但如果您同意仅更改文字
这对我有用
self.present(documentPicker, animated: true,completion: {
documentPicker.view.tintColor = .red
})
我知道它不是最优的,但我尝试为我工作的解决方案都不是