【问题标题】:Push QLPreviewController and set Translucent to false?推送 QLPreviewController 并将 Translucent 设置为 false?
【发布时间】:2017-03-19 12:50:50
【问题描述】:

我无法禁用 QLPreviewController 的半透明属性。我已经尝试过的:

 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.
}

但仍然没有成功 - 有什么想法吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    如果您提供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
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以在子类的 viewDidLayoutSubviews 中执行此操作,这对我有用。

      class PreviewController: QLPreviewController {
      
          override func viewDidLayoutSubviews() {
              super.viewDidLayoutSubviews()
              navigationController?.navigationBar.isTranslucent = false
          }
      }
      

      然后实例化新类

      let previewController = PreviewController()//QLPreviewController()
      previewController.dataSource = self
      navigationController?.pushViewController(previewController, animated: true)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 1970-01-01
        • 2014-09-30
        • 2014-05-08
        相关资源
        最近更新 更多