为 PDF 查看器自动调整 UIViews 的大小

Posted

技术标签:

【中文标题】为 PDF 查看器自动调整 UIViews 的大小【英文标题】:Autoresizing UIViews for a PDF viewer 【发布时间】:2010-12-31 00:00:21 【问题描述】:

我正在尝试自动调整大小以使用我为 iPad 构建的 PDF 查看器。

我的视图结构包括:

Scroll view
    Document view
        Page view
        Page view
        Page view

如图所示:http://i.stack.imgur.com/unV4J.png

显示 PDF 页面没有问题。假设出于这个问题的目的,每个页面都是一个 UIImageView。

为了创建视图,我一页一页地加载所有页面,并设置框架以使它们的大小正确,并且它们之间的间距为 10 像素。然后我将文档视图框架设置为所有页面的总大小。然后我将文档视图添加到滚动视图。这很好用。

问题在于自动调整大小。我希望文档视图(以及其中的页面视图)的宽度随着滚动视图宽度的缩放而缩放。文档视图和页面显然需要保持它们的纵横比,因此宽度和高度需要灵活。但是,如果我使页面高度灵活,则页面框架高度将变为文档视图的高度。

我已经玩了几个小时试图让它正确布局,但我没有成功。以前我刚刚更新了旋转的帧,但如果能通过平滑调整大小来实现这一点会很好。

【问题讨论】:

【参考方案1】:

我以编程方式解决了这个问题。

首先我尝试使用 layoutSubviews UIView 方法在调整大小时重新定位子视图。然而,这仅在动画开始时发生一次(使用 MGSplitViewController,在其他情况下可能会有所不同),因此我重写了 setFrame 方法以将子视图重新定位在那里。这很好用,现在我的视图可以流畅地动画到它们应该在的位置。

如果其他人可以帮助我使用自动调整大小,那么我会认为这是一个更好的答案,但目前我对这个解决方案很满意。

【讨论】:

以上是关于为 PDF 查看器自动调整 UIViews 的大小的主要内容,如果未能解决你的问题,请参考以下文章

UIView 使用约束自动布局居中和调整大小

调整超级视图大小时自动调整子视图

[pdf文件合并软件]PDF合并器

sizeToFit 如何确定合适的尺寸?

如何在 Qt 设计器中使控件自动调整大小?

自动调整大小时 UITextField 字体粗细变化