UIDocumentPickerViewController导航栏按钮颜色

时间:2017-09-22 10:53:16

标签: ios uinavigationbar ios11

我的应用正在使用带有白色按钮和文字的红色导航栏(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)
    }

navigation bar

4 个答案:

答案 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)

see my answer here

答案 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
            })

我知道它不是最优的,但我尝试为我工作的解决方案都不是