如何在子视图中使用QLPreviewController显示页面滑块

时间:2012-11-20 15:56:58

标签: ios uiviewcontroller uikit qlpreviewcontroller

我在我自己的视图控制器中嵌入QLPreviewController,将它添加为像这样的子视图控制器(contentArea是一个UIView属性,用于确定预览的哪个部分应该使用):

    QLPreviewController* preview = [[QLPreviewController alloc] init];
    preview.dataSource = self;
    preview.delegate = self;
    [self addChildViewController:preview];
    CGFloat w = self.contentArea.frame.size.width;
    CGFloat h = self.contentArea.frame.size.height;
    preview.view.frame = CGRectMake(0, 0,w, h);
    [self.contentArea addSubview:preview.view];
    [preview didMoveToParentViewController:self];
    self.qlPreviewController = preview;

到目前为止这是有效的。但是,当我打开PDF时,当QLPreviewController全屏显示时,我看不到右侧显示的页面清理器(参见屏幕截图)。

Page scrubber shown when presented as modal view controller

使用DCIntrospect我看到有一个QLScrubView类型的特殊子视图负责:

...
| <QLScrubView: 0x1274e990; frame = (963 64; 61 704); autoresize = LM+H; layer = <CALayer: 0x1274eb30>>
|   | <QLThumbnailView: 0x11fc6460; frame = (17 329; 32 45); layer = <CALayer: 0x11fcb4b0>>
|   | <QLThumbnailView: 0x11fd45a0; frame = (17 382; 32 45); layer = <CALayer: 0x11fbe830>>
|   | <QLThumbnailView: 0x1274dae0; frame = (9 268; 48 61); layer = <CALayer: 0x1273b860>>
...

但是,嵌入式用例中缺少此擦除视图。

任何想法如何让它出现?

1 个答案:

答案 0 :(得分:0)

当您有多个页面时会自动显示。我猜你的PDF有问题。尝试其他来源的其他PDF,看看你是否遇到同样的问题。我一直使用PDF,而且洗涤器显示得很好。

我的另一个想法是,调整预览控制器的大小可能不正常。尝试将预览控制器加载为模态视图控制器(无父级),并查看是否仍然隐藏了滑块。