在QLPreviewController中更改导航栏颜色

3

我想在Swift 3中更改QLPreviewController的导航栏颜色。 我已经使用了以下代码来更改颜色,但它没有起作用。

viewQLPreview = QLPreviewController()
viewQLPreview.dataSource = self
viewQLPreview.delegate = self
viewQLPreview.navigationController?.navigationBar.isTranslucent = false
viewQLPreview.navigationController?.navigationBar.tintColor = UIColor.red

如果这对您有用,请尝试以下链接:https://dev59.com/9lYO5IYBdhLWcg3wKeiM - tech_enthusiast
或者这个 https://dev59.com/9lYO5IYBdhLWcg3wKeiM#64154848 - ChikabuZ
3个回答

6
我使用以下代码更改了Swift 3.0中QLPreviewController的导航栏颜色:
UINavigationBar.appearance().barTintColor = UIColor.red

UINavigationBar.appearance(whenContainedInInstancesOf: [QLPreviewController.self]).backgroundColor = UIColor.red

当我这样做时,找不到QLPreviewController。 文件中导入了UIKit。有什么想法可以导入以使用QLPreviewController吗? - Kevin
QLPreviewController 位于 QuickLook 中: import QuickLook - schmidiii

4
在展示 QLPreviewController 之前,请使用以下代码:
UINavigationBar.appearance().tintColor = UIColor.red
UINavigationBar.appearance().barTintColor = UIColor.blue
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.red]
UINavigationBar.appearance().setBackgroundImage(fromColor(color: UIColor.blue), for: .default)
UINavigationBar.appearance().isTranslucent = false 

func fromColor (color: UIColor) -> UIImage{
        let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
        UIGraphicsBeginImageContext(rect.size)
        let context: CGContext? = UIGraphicsGetCurrentContext()
        context?.setFillColor(color.cgColor)
        context?.fill(rect)
        let image: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image ?? UIImage()
    }

-4
将以下代码放入 QLPreviewController 的 viewDidLoad 中。
viewQLPreview.navigationController?.navigationBar.isTranslucent = false
viewQLPreview.navigationController?.navigationBar.tintColor = UIColor.red

还要确保 viewQLPreview.navigationController != nil

如果你正在推送 QLPreviewController,那么这段代码将会起作用...

如果你正在展示 QLPreviewController,那么你需要确保根控制器应该是导航控制器,在你的情况下...

let viewQLPreview = QLPreviewController()
let nav = UINavigationController(rootViewController: viewQLPreview)
self.present(nav, animated: true, completion: nil)

感谢您的回答,使用您的代码我能够改变颜色,但是取消按钮没有出现在导航栏中。 - Rushabh
只需设置导航栏的tintColor和barTintColor即可。:) - Mahendra
这对我来说是完美的答案,谢谢你的解释。 - Mehul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接