UIScrollView 使用AutoLayout布局遇到的问题

UIScrollView使用AutoLayout布局,和其他控件,比如UIButton的布局略有差别。使用其他控件的布局方式,会发现Xcode会报错。
原因是:UIScrollView的contentSize需要根据内容控件的大小来确定。而常规布局方式,设定内容控件的约束,一般上、下、左、右拉线,是由父视图的大小来决定内容控件的大小的。这就产生了矛盾,双方相互依赖,不能确定大小。
解决方案:
1. UIScrollView 上、下、左、右 设置约束到它的父视图。
2. 往UIScrollView中拖入一个子视图,比如叫做contentView。上、下、左、右 设置约束到UIScrollView。关键点:再设置contentView的宽度和高度约束。写死值,比如320,480。
3. 假如你想横向滑动,将contentView的宽度约束,按住control拖线到ViewController,生成一个宽度约束的成员变量。例如: @property ( weak , nonatomic ) IBOutlet NSLayoutConstraint *widthCon;
4. 更改widthCon的值 self . widthCon . constant = CGRectGetMaxX (imageView. frame ); 假如imageView的宽度超出屏幕,你会发现scrollView也变得可以横向滑动了。
5.其他子控件的布局,因为放在了contentView上,子控件的父视图是contentView,而contentView由于我们把宽高固定了,所以可以按常规布局方式来设置约束条件。
6.无需在代码中设置scrollView的contentSize属性,因为scrollView的contentSize取决于contentView的大小,所以只需变更contentView的宽度约束或高度约束就可以了。
7.此方法只需考虑contentView和UIScrollView的特殊布局关系。因为其他控件都放在了contentView中,可以采用正常布局方式。实现起来还是比较简单方便的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值