当 PHPickerViewController 中的导航按钮显示为 iOS 上的照片库访问权限有限时,我在自定义导航按钮颜色时遇到了问题。导航栏按钮(“取消”和“完成”)在白色背景上以白色显示,这使得它们不可见。我希望它们显示为黑色以获得更好的可见性。
我尝试过的:
UINavigationBar.appearance().tintColor = UIColor.black
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
appearance.titleTextAttributes = [.foregroundColor: UIColor.black]
appearance.buttonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.black]
appearance.shadowColor = .clear
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
@objc func openPHPicker() {
if #available(iOS 14.0, *) {
var configuration = PHPickerConfiguration()
configuration.selectionLimit = 4
configuration.filter = .images
let picker = PHPickerViewController(configuration: configuration)
picker.navigationController?.navigationBar.tintColor = .black
picker.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.black]
picker.delegate = self
self.present(picker, animated: true, completion: nil)
}
}
尽管尝试了这两种方法,按钮在受限访问库视图中仍然显示为白色。我注意到其他应用程序(例如 Instagram)设法以黑色显示这些按钮,所以我认为必须有一种方法来强制执行这种样式,但我不知道如何实现。
我不知道这是否是一个有效的方法,你可以尝试更改
tintColor
的PHPickerViewController
:
picker.view.tintColor = .black