无法使用 Autolayout 正确构建 UIScrollView
Posted
技术标签:
【中文标题】无法使用 Autolayout 正确构建 UIScrollView【英文标题】:Can't build UIScrollView with Autolayout properly 【发布时间】:2015-12-05 07:08:58 【问题描述】:无法使用自动布局在滚动视图内构建内容。是的,我已经调查了很多,阅读了苹果技术说明和一些文章,我知道,内容视图应该受到滚动视图的超级视图的限制,但仍然无法达到预期的结果。我期待这个结果:
-
固定或可滚动(适用于小屏幕)纵向模式
始终可滚动横向模式,不会松动或重叠我的固定内容
我的按钮(红色视图)应始终位于底部
我的照片(黄色视图)应始终为固定大小,并且不能丢失内容
(就像我错误的横向模式一样)
【问题讨论】:
那么您添加了哪些约束以及它做错了什么(以及何时)? 您可以在图片中看到的约束条件。错误在于它在横向模式下不可滚动。我应该在代码中设置滚动视图的内容大小吗?你能建议一些autolayot阅读或大师学习吗?因为我经常因为缺乏相关知识而在自动布局上苦苦挣扎。谢谢:-) 将 contentView 的高度固定为恒定值! scrollView 应该有一个 contentView 基于它决定可滚动区域。内容视图的宽度应该等于主视图的宽度,这样它就不能在水平方向上滚动,但高度应该大于视图,使它可以在垂直方向上滚动。 你可能会发现这很有用theglowingtree.wordpress.com/2015/09/30/… 【参考方案1】:完成这项工作实际上很容易。您只需执行以下步骤:
-
将
UIScrollView
添加为 UIViewController 的子视图`
将UIView
添加为UIScrollView
的子视图
将UIButton
添加为UIViewController
的子视图。如果您希望它粘在底部,请不要将其添加为 UIScrollView
的子视图。
然后添加以下约束:
-
将
UIScrollView
固定在UIViewControllers
视图的顶部、左侧和右侧
将UIButton
固定在UIViewControllers
视图的left、right和底部
将UIButton
顶部固定到UIScrollView
底部
将UIImageView
顶部、horizontalCenter和底部固定到UIScrollView
设置UIImageView
height和width约束
设置UIButton
高度约束
就是这样。不要向UIScrollView
contentView
添加任何内容,也不要以编程方式设置contentSize
! contentSize
是由 Auto Layout 自动设置的。
这里是约束和结果的截图:
【讨论】:
以上是关于无法使用 Autolayout 正确构建 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 内的 UIStackView 在 AutoLayout 上无法正确调整
iOS 8 xib + AutoLayout 无法为 tableViewHeaderView 正常工作