7

我注意到我的 UIDocumentPicker 的导航栏中仅在 iOS 11 中存在问题,完成、取消或编辑按钮是不可见的,并且当用户触摸它时它会出现,即正常状态下的颜色是白色,即使在更改时也是如此UINavigationBar.appearnce().tintColor,仅颜色触摸改变。

在此处输入图像描述 在此处输入图像描述

4

3 回答 3

4

我不喜欢在viewWillAppear和之间设置全局外观viewWillDisappear。外观 API 应仅在应用程序启动时使用。UIDocumentPickerViewController您可以通过放入此代码仅重置外观而无需子类application:didFinishLaunchingWithOptions:化,并且条形按钮将返回其原始蓝色:

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
于 2018-04-19T16:40:49.157 回答
4

Objective-C出于未知原因,我发现如果您使用并设置[UINavigationBar appearance].tintColor = [UIColor black];in func创建 UIDocumentPicker 的子类viewWillAppear,并将其重置为您的默认值viewWillDisappear,则效果很好。

但是,如果您使用swift它执行相同的步骤,则不会。

于 2017-12-18T07:23:16.320 回答
3

使用带有黑色appearance的CustomDocumentPickerViewControllerUINavigationBarUIBarButtonItem

import UIKit

class CustomDocumentPickerViewController: UIDocumentPickerViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        UINavigationBar.appearance().tintColor = UIColor.black
        UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.black], for: .normal)
    }

    override func viewWillDisappear(_ animated: Bool) {

        UINavigationBar.appearance().tintColor = UIColor.white // your color
        UIBarButtonItem.appearance().setTitleTextAttributes(nil, for: .normal)
        super.viewWillDisappear(animated)

    }

}
于 2018-02-18T09:54:21.293 回答