iOS 嵌套 UIScrollViews 使用 AutoLayout

Posted

技术标签:

【中文标题】iOS 嵌套 UIScrollViews 使用 AutoLayout【英文标题】:iOS Nested UIScrollViews using AutoLayout 【发布时间】:2013-07-19 18:28:13 【问题描述】:

以上是我的程序外观布局的示例。 屏幕顶部应该有一个简单的标题视图,下面的剩余空间用于显示其他内容。 这其他内容基本上是3页的东西。 父滚动视图应一次显示一页,但可以使用分页向左或向右滚动以到达其他页面。 问题是这些页面中的每一个都将具有不同的高度。此外,通过在父视图中使用分页,垂直滚动也会被分页,所以我认为我必须为每个单独的页面分配一个滚动视图,每个页面都禁用分页。 这个过程对于自动布局来说相当烦人,因为我必须手动计算和覆盖每个视图的 intrinsicContentSize 并在视图控制器中创建一个自定义方法,以根据其子项的内在内容大小和它们使用的约束返回高度。然后我需要使用这个高度来约束视图的宽度和高度,以便容器滚动视图能够使用自动布局计算它们的内容大小。 我可以使用一堆容器 uiviews 和 uiscrollviews 来显示内容,但唯一接收事件的滚动视图是父滚动视图。为什么子滚动视图没有响应?

【问题讨论】:

【参考方案1】:

我在嵌套 UIScrollView 时遇到了类似的问题。我发现这个来自 WWDC 2010 的视频(下面的链接)确实帮助我理解了如何在分页 UIScrollView 中使用子 UIScrollViews,并且我通过按照此视频中的步骤并查看示例代码设法修复了我遇到的错误.

Designing Apps with Scroll Views (WWDC 2010) PhotoScroller sample code

注意: PhotoScroller 代码在录制视频后已更新,以支持 ARC、故事板和 UIPageViewController。我建议先看一下示例代码,如果您不确定它是如何工作的,请观看视频。

希望这会有所帮助!

【讨论】:

如果您能在此处总结视频中的信息,那将是最有用的,这样读者就不必观看一些未指定数量的非常长的视频来找到他们正在寻找的内容。

以上是关于iOS 嵌套 UIScrollViews 使用 AutoLayout的主要内容,如果未能解决你的问题,请参考以下文章

如何使用嵌套的 UIImageViews 实现两个单独的 UIScrollViews...只有一个正在缩放

具有水平滚动的嵌套 UIScrollViews

嵌套的 uiscrollviews 和自定义处理事件路由

滚动发生时嵌套 UIScrollViews 并获取信息

处理滚动嵌套 UIScrollViews 在同一方向滚动

处理嵌套 UIScrollViews 中的冲突手势