我有一个UIScrollView,它具有分页和AutoLayout功能,并且运行得非常好。这是我的设置:
UIView
|---> Dummy UIView
|---> UIScrollView
|---> Content UIView
|---> Page 1 Container
|---> Page 2 Container
我使用的限制条件是Dummy UIView -> Parent UIView
表示我想要分页滚动视图的大小,UIScrollView -> Dummy UIView
在四个方向上都是(0,0,0,0)。这只是常规的自动布局,其中创建了一个虚拟 UIView 来放置滚动视图和一个完全填充虚拟 UIView 的 UIScrollView。
有关 AutoLayout 和 UIScrollViews
,请参阅苹果的 Technote:https://developer.apple.com/library/content/technotes/tn2154/_index.html
滚动视图内部的内容必须具有固有大小。它不能依赖于滚动视图来获取其大小。
如 TechNote 中所示,将 Content View 的四个边缘约束设置为 UIScrollView 的 (0,0,0,0)。确切的值并不重要,因为您告诉 UIScrollView 的只是从这个视图获取 contentSize。
此时 Xcode 会投诉 Content View 没有固有大小。在这里我们使用上面创建的 Dummy UIView。Dummy UIView 的大小恰好等于 UIScrollView 中每个页面的大小。
因此,我们使用 AutoLayout 将 Content UIView 的高度设置为 Dummy UIView 的高度,并将 Content UIView 的宽度设置为页面数量乘以 Dummy UIView 的宽度。对于后者,请将约束中的乘数更改为页面数量。
现在,按照通常的方式在 Content UIView 中创建页面,并将 UIScrollView 上的 Paging Enabled 设置为是,即可使用 AutoLayout 在 UIScrollView 中进行分页。
我已在 IOS 6、7 和 8 中测试过此方法。
更新:
如请求所示,这里有一个带有此设置的示例项目:
https://github.com/kostub/PagingScrollView