gpt4 book ai didi

ios - QLPreviewController 隐藏底部工具栏

转载 作者:行者123 更新时间:2023-12-01 17:09:25 35 4
gpt4 key购买 nike

我在我的应用程序中使用 QLPreviewController 并想隐藏允许在其数据源项目中移动的底部工具栏。有可能以某种方式做吗?

我试图将其搜索为 QLPreviewController 的 View subview ,但它只有一个 _UISizeTrackingView 类的 subview 。据我所知,这是一个私有(private)类(class),所以我无权在那里寻找东西。

有什么方法可以隐藏这个工具栏吗?Apple 允许这样做吗?谢谢。

最佳答案

QLPreviewViewController 内部可以有多个工具栏。这就是为什么您需要在 subview 中找到所有 UIToolbar 并隐藏它们。

您还需要观察 hidden 属性的变化,因为当用户点击 QLPreviewViewController 时,它会改变工具栏和导航栏的可见性。

swift 3:

var toolbars: [UIToolbar] = []

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
toolbars = findToolbarsInSubviews(forView: view)
for toolbar in toolbars {
toolbar.isHidden = true
toolbar.addObserver(self, forKeyPath: "hidden", options: .new, context: nil)
}
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
for toolbar in toolbars {
toolbar.removeObserver(self, forKeyPath: "hidden")
}
}

private func findToolbarsInSubviews(forView view: UIView) -> [UIToolbar] {
var toolbars: [UIToolbar] = []
for subview in view.subviews {
if subview is UIToolbar {
toolbars.append(subview as! UIToolbar)
}
toolbars.append(contentsOf: findToolbarsInSubviews(forView: subview))
}
return toolbars
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let keyPath = keyPath,
let toolbar = object as? UIToolbar,
let value = change?[.newKey] as? Bool,
keyPath == "hidden" && value == false {
toolbar.isHidden = true
}
}

关于ios - QLPreviewController 隐藏底部工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811834/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com