AutoLayout UIScrollView

本文介绍如何使用Auto Layout实现UIScrollView的自动布局,并通过调整约束来精确控制内容尺寸,确保不同设备上的显示效果一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在storyBoard 上放置一个 UISCrollView ,设置它的四个约束,使其铺满屏幕。




UISCrollView 是否需要能滚动是由其contentSize 来决定的,如果使用代码中我们需要设置contentSize,但如果使用autoLayout,UISCrollView的contentSize 将由其subView的size来决定。

现在做一个demo,我们放置两个按钮,一个在屏幕的上方, 一个在其屏幕的底边,使其底边的button 在6上无需滚动,在其它的屏幕是需要滚动才能看到。

我们现在给UISCrollView 添加一个View作为其SubView, SubView的contentSize将由View的size来决定。 设置view的约束。



这里必须设置上面所有的约束条件,否则会报错说ContentSize无法确定。注意,这里对于上下左右的约束并不是相对于UISCrollView,而是UISCrollView内部的ContentSize容器而言。width ,height 决定了View的宽高,ContenSize 所在的容器的四个边跟view的四个约束关系就能计算出ContentSize的大小。


运行代码我们实现了在6上无需滚动而在5及4上都要滚动的效果,但似乎ConetentSize 不太精确,我们需要更精确的ContentSize。

我们创建 View 的width, height constraint的 IBOutlet 




在ViewController中添加如下代码


[objc]  view plain copy
  1. - (void)viewDidLayoutSubviews {  
  2.       
  3.     [super viewDidLayoutSubviews];  
  4.     self.widthConstraint.constant = self.view.frame.size.width;  
  5.     self.heightConstraint.constant = CGRectGetMaxY(self.button.frame) + 20;  
  6.   
  7. }  

上面的代码滚据屏幕宽度计算了view的宽度,即UIScrollView的ContnetSize的width使其在水平是不能滚动, 根据底边的UIBUtton计算出View的height,即UIScrollView的ContnetSize的height.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值