答案 0 :(得分:1)
我解决了。以下代码完美地为我工作:
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
UINavigationBar.appearance().barTintColor = Colors.redColor()
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white, NSFontAttributeName: UIFont.systemFont(ofSize: 14, weight: UIFontWeightBold)]
return self
}
答案 1 :(得分:1)
它有点hacky,因为它依赖于QLPreviewController是实现UIDocumentInteractionController的类,但是这样的东西是最不具侵入性的解决方案。在显示UIDocumentInteractionController
之前执行此操作import QuickLook
UIBarButtonItem.appearance(whenContainedInInstancesOf [QLPreviewController.self]).tintColor = UIColor.black
答案 2 :(得分:1)
尝试一下:(您需要实现UIDocumentInteractionControllerDelegate)
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return self.navigationController ?? self
}
答案 3 :(得分:0)
我有改变条形颜色的想法:
let allNavigationBar = UINavigationBar.appearance()
allNavigationBar.barTintColor = UIColor.red // change the bar background color
allNavigationBar.tintColor = UIColor.black // change the Done button's tintColor
let alloolbar = UIToolbar.appearance()
allToolbar.barTintColor = UIColor.red // dones't work, try backgroundImage
allToolbar.backgroundColor = UIColor.blue // dones't work
allToolbar.tintColor = UIColor.brown // change the toolbar's item tint color
但是此方法效果很好,您的所有UINavigationBar
和UIToolBar
都会进行更改。
希望其他人能更好地解决问题。
答案 4 :(得分:0)
您可以暂时更改窗口的色调颜色。
func presentDocument() {
//present the controller here
self.appDelegate.window.tintColor = UIColor.red
}
然后稍后再改回来:
func documentInteractionControllerDidEndPreview(documentInteractionController) { //replace parameter with your uidocumentviewinteractioncontroller
self.appDelegate.window.tintColor = UIColor.white
}
答案 5 :(得分:0)
@Dee。我想你已经在另一个问题中提出了这个问题。在这种情况下,您无法显示预览控制器。在那个问题中,建议的答案是回归" self"从该委托方法。如果您正确实现,那么您的预览将使用与其父控制器使用相同的导航栏颜色。我的意思是如果您直接从某些ViewController打开了UIDocumentInteractionController,那么UIDocumentInteractionController将使用其父viewController的导航栏颜色。这可以帮助您更改完成按钮颜色
答案 6 :(得分:-1)
let QLNavAppearance = UINavigationBar.appearance(whenContainedInInstancesOf: [QLPreviewController.self])
QLNavAppearance.tintColor = UIColor.red // some
QLNavAppearance.barTintColor = UIColor.red // some
QLNavAppearance.backgroundColor = UIColor.red // some