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