2017-03-19 31 views
0

我無法禁用我的QLPreviewController的半透明屬性。我已經嘗試過:推QLPreviewController並將半透明設置爲false?

let preview = SideQLPreviewController() 
preview.navigationController?.navigationBar.isTranslucent = false //before 
self.navigationController?.pushViewController(preview, animated: false) 
preview.navigationController?.navigationBar.isTranslucent = false //after 
self.navigationController?.navigationBar.isTranslucent = false 

而且已經嘗試過的子類,並設置:

class SideQLPreviewController: QLPreviewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationController?.navigationBar.isTranslucent = false 
    // Do any additional setup after loading the view. 
} 

但仍然沒有成功 - 任何想法?

回答

0

如果您提供的是QLPreviewController,則根本沒有導航控制器。像這樣的東西可以工作:

class PreviewController: QLPreviewController { 
    var navigationBar: UINavigationBar? { 
     return view.recursiveSubviews.filter({ $0 is UINavigationBar }).first as? UINavigationBar 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     navigationBar?.isTranslucent = false 
    } 
} 

extension UIView { 
    var recursiveSubviews: [UIView] { 
     var recursiveSubviews: [UIView] = [] 
     for subview in subviews { 
      recursiveSubviews.append(subview) 
      recursiveSubviews.append(contentsOf: subview.recursiveSubviews) 
     } 
     return recursiveSubviews 
    } 
}