B.S*_*.S. 4 objective-c ios qlpreviewcontroller
我QLPreviewController在我的应用程序中使用并希望隐藏底部工具栏,该工具栏允许在其数据源项目中移动。有可能以某种方式做吗?
我尝试将其作为subviewof进行搜索QLPreviewController's view,但它只有一个_UISizeTrackingViewclass 子视图。据我了解,这是一个私人课程,所以我无权在那里寻找东西。
有没有什么方法可以隐藏这个工具栏,Apple 允许这样做吗?谢谢。
QLPreviewViewController里面可以有1个以上的工具栏。这就是为什么您需要在子视图中查找所有内容UIToolbar并隐藏它们。
此外,您还需要观察hidden属性的变化,因为当用户点击QLPreviewViewController它时,工具栏和导航栏的可见性会发生变化。
斯威夫特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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3724 次 |
| 最近记录: |