在QLPreviewController中配置底部栏

7
我已经在我的应用程序中集成了QLPreviewController和UIDocumentInteractionController,它们都可以正常工作。
唯一的问题是我想配置底部工具栏,我想要删除默认的工具栏项目,就像下图所示:
https://istack.dev59.com/rm9fe.webp 请问有什么方法可以做到这一点吗?谢谢。

将工具栏设置为nil并调用setneedsdisplay。 - itechnician
你解决了这个问题吗?在iOS 7上无法工作。 - iSmita
3个回答

2
  1. 创建一个 UIToolbar 的子类
  2. 使用 init(navigationBarClass:toolbarClass:) 创建 UINavigationController,并将步骤1中创建的 UIToolbar 子类 作为参数传入 toolbarClass
  3. 创建 QLPreviewController 实例,并将其推入 UINavigationController 栈中
  4. UIToolbar 子类 中覆盖 setItems(_:animated:) 方法。若要删除所有按钮,请调用带有空数组的超类方法 super.setItems([], animated: false),或仅添加您想要保留的按钮。
  5. 呈现步骤2中创建的 UINavigationController

以下是示例代码:PreviewControllerHideBottomButtons


2

短答案: 在IOS6+中不行

描述:

需要注意的一件事是,QLPreviewController并不是用来自定义的。虽然有其他库可以让您更改功能,例如:

https://github.com/rob-brown/RBFilePreviewer
iOS 6+中无法工作,因为苹果在QLPreviewController中进行了重大更改,它在技术上是在单独的进程中运行。虽然可能可以使用私有API(不确定),但您的应用程序将被拒绝。您可以在此处找到有关此更改的更多信息:http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/。希望这能帮到您。

只是在想WhatsApp的开发者们可能是如何配置它的?我的意思是他们在右下角显示了一个小的“删除图标”,并且在顶部显示了“All Media Files”,而这在默认预览控制器的情况下通常出现在右下角。 - Devarshi
@Miraaj 他们可能有自己的查看器。不确定。还要看看iOS8的东西,可能在这方面有一些新的东西。 - Mojtaba

0
  • 子类化 QLPreviewController。
  • 在视图层次结构中搜索工具栏。
  • 在您的类中拥有一个 UIToolbar 属性,其框架与原始工具栏相同。
  • 使用任何您想要的按钮将自己的工具栏放置在默认工具栏上方。
  • 如果您希望它像 QLPreviewController 的默认行为一样被隐藏,可以键值观察默认工具栏的 hidden 属性,并相应地呈现/隐藏您自己的工具栏。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接