Storyboard中UIScrollView autoresizing异常,无需代码如何解决?
纯Storyboard解决UIScrollView autoresizing失效问题
当然有完全不用写代码的方案!其实UIScrollView的autoresizing在Storyboard里不好用,本质是因为它的contentSize需要明确的尺寸参考,而Auto Layout能完美解决这个问题,不用手动设置contentSize。下面是具体操作步骤:
- 第一步:给UIScrollView添加一个内部容器视图(我习惯叫它
contentView),这个视图是用来承载所有你要滚动的子视图的核心载体。 - 第二步:给
contentView设置约束:- 让它的leading、trailing、top、bottom四个约束完全对齐UIScrollView的content布局边(不是scrollView的frame边界,Storyboard里选约束时注意选“Scroll View Content Leading”这类选项)。
- 关键一步:给
contentView添加一个宽度等于UIScrollView宽度的约束(如果是需要横向滚动的场景,就改成高度等于UIScrollView高度)。这一步是固定滚动方向,让contentView的另一维度(比如纵向的高度)由子视图的布局自动撑开。
- 第三步:把你原本放在UIScrollView里的所有子视图,全部移到这个
contentView上,然后给这些子视图添加正常的Auto Layout约束——比如让最顶部的子视图顶对齐contentView,最底部的子视图底对齐contentView,中间的子视图按需求排列,这样contentView的高度就会被子视图自动撑起来,UIScrollView的contentSize也会跟着自动更新。 - 第四步:最后确认UIScrollView本身的约束:确保它能正确适配父视图(比如和父视图的四个边对齐,或者用autoresizingMask设置好拉伸规则)。
这样设置完成后,不管子视图的内容怎么变化,UIScrollView的滚动范围都会自动调整,完全不需要写一行代码去设置contentSize。
内容的提问来源于stack exchange,提问作者Deep
相关产品推荐
相关产品推荐

