让 UIScrollView 与 AutoLayout 一起工作
Posted
技术标签:
【中文标题】让 UIScrollView 与 AutoLayout 一起工作【英文标题】:Getting UIScrollView to work with AutoLayout 【发布时间】:2013-11-11 04:07:12 【问题描述】:这似乎是一个很常见的问题,但无论我进行哪段代码或更改,我都无法让它工作。我正在研究一个非常简单的示例。
故事板设置为 4" 纵向。UIScrollView 320px 宽 x 440px 高。它包含一个 320px 宽 x 900px 高的 UIView。应用程序仅锁定为纵向,但需要在 3.5" 和 4" 屏幕上工作。
我需要做什么才能让 UIView 在 UIScrollView 中垂直滚动?我需要设置一个约束吗? Clip Subviews 和 Autoresize Subviews 应该设置为什么,它有什么不同吗?应该将查看模式设置为什么,它有什么不同吗?我是否需要以编程方式重置 UIScrollView 的 ContentSize?如果是这样,这是否在 ViewDidLoad 事件中完成?
我尝试向 UIView、UIView 的底部元素和 UIScrollView 本身添加垂直约束。我以编程方式设置内容大小以匹配 UIView。
我已经在各种其他工具中构建了 UI,这只是让我为如此简单的事情而发疯。如果我关闭自动布局,它可以正常工作,但这不是我正在寻找的解决方案。
【问题讨论】:
这可能有助于***.com/questions/12846351/… 【参考方案1】:最终得到了这个答案。 https://***.com/a/16029013/1342779
特别是我在 viewDidLoad 方法中的代码:
[_scrollView addConstraint:[NSLayoutConstraint constraintWithItem:_innerView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:_scrollView
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0]];
【讨论】:
【参考方案2】:看看this video。此外,您也可以尝试设置滚动视图的内容大小。
// For verical scrolling
scrollView.contentSize = CGSizeMake(viewToScroll.width, viewToScroll.height * numberOfPages);
// For horizontal scrolling
scrollView.contentSize = CGSizeMake(viewToScroll.width * numberOfPages, viewToScroll.height);
【讨论】:
以上是关于让 UIScrollView 与 AutoLayout 一起工作的主要内容,如果未能解决你的问题,请参考以下文章