I use QLPreviewController
在我的应用程序中,想要隐藏底部工具栏,该工具栏允许在其数据源项目中移动。有可能以某种方式做吗?
我尝试将其搜索为subview
of QLPreviewController's view
但它只有一个子视图_UISizeTrackingView
班级 。据我了解,这是一个私人课程,所以我无权在那里寻找东西。
有没有什么方法可以隐藏这个工具栏,Apple 允许这样做吗?谢谢。
QLPreviewViewController
里面可以有1个以上的工具栏。这就是为什么你需要找到所有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
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)