嵌套的UIScrollViews PDFs- Uniform Zooming

时间:2012-04-02 18:35:21

标签: iphone ipad pdf uiscrollview

我正在尝试获取包含一些PDF的UIScrollView的UIScrollView。

与App Store中的此视图相同的想法(仅具有PDF和缩放功能): App Store Screenshot Viewer

我无法让缩放正常工作。如何让它们同时缩放?

当我只能从此方法返回一个视图时,如何实现此目的:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

谢谢!

2 个答案:

答案 0 :(得分:5)

观看WWDC 2011视频,尤其是“高级ScrollView技术”Session 104,如果您也喜欢104 Session from 2010。它们都处理缩放和滚动图像的方面。采用pdf视图(来自另一个教程)应该不是什么大问题。

viewForZoomingInScrollView:方法中,您可以调用另一个scrollView并以编程方式设置缩放比例

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    if (scrollView == firstSV) {
        return viewForFirstScrollView;
    } else {
        return viewForSecondScrollView;
    }
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    firstSV.zoomScale = secondSV.zoomScale;
    // and the other way if you can zoom the second scrollView too
}

答案 1 :(得分:2)

您应该将容器UIView返回到viewForZoomingInScrollView:委托方法。 在此容器视图中,您应该像放置图像一样并排放置所有PDF视图。 现在,当您放大时,容器视图将与其内容一起缩放。 热潮,完成。

除非您必须构建缩放PDF视图,并确保不会同时加载太多页面以避免使用太多内存。 那就是它变得棘手的时候。

构建缩放PDF视图意味着构建一个包含将使用PDFKit呈现的图像的视图,并在每次放大时刷新(滚动视图委托告诉您),或者您将不得不使用CATiledLayer将PDF页面呈现为切片,从而节省内存并提高性能。

不加载太多页面意味着您必须在滚动视图滚动时在容器视图中添加和删除PDF页面视图。

我为客户做了两件事,并且需要永远保持正确和无bug(至少如果你不熟悉滚动视图或PDFKit,大约需要3周)。 如果您想构建它,请参阅this Stack Overflow question以帮助您入门。

另一个选择是购买一个价值800美元的PSPDFKit许可证和大约2小时的集成,以使其在您的应用中发挥作用。 在自己构建PDF阅读器之后,我会选择第二种选择。 这将节省您的时间和金钱。