Xib 约束 UIScrollerView
2017-12-26 本文已影响43人
小希嘻
1、在使用xib定制界面时,我们经常会用到AutoLayout自动布局,或者不用AutoLayout,自己在xib属性的地方进行约束
2、xib中,ScrollView的自动约束并不像我们平常约束其他view一样,由于ScrollView的滚动范围是由有属性ContentSize决定的,所以在xib中使用AutoLayout约束的时候会相对复杂一下。
3、在xib中拖动一个scrollerView到xib中,scrollerView直接在View下面,界面结构如下:
4、对srollerView进行约束,并更新位置
Snip20171226_3.png
5、添加View 发现有个小红点报错;
Snip20171226_4.png
6、点击小红点进入;
Snip20171226_5.png
7、给View添加约束;
Snip20171226_6.png
8、添加完VIew后,发现还是会报错;
image9、这步骤很重要,如果scrollerView要垂直滚动,这时要给view添加一个垂直约束;如果scrollerView要水平滚动,这时要给view添加一个水平约束;
image
10、添加完后发现还是会报错
image
11、 然后我们再选中View,添加height约束,这里约束的是600;
Snip20171226_7.png
12、这时就可以正常使用了;
13、如果要在控制器中动态的设置scrollerView的contentSize 可以将VIew的高度拉线设置成属性,然后就可以在控制器中设置scrollerView的垂直滚动范围了;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollerViewContentHeight; // 属性设置
注意:在计算滚动范围之后立即根据某一个控件设置constant时,有的时候不起作用,这是因为界面只是加载了控件和计算出了范围,并没有刷新界面,某些控件的高度还没有被调整,这里建议在一个方法中写 就好了;
- (void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
self.scrollerViewHeight.constant = CGRectGetMaxY(self.sendMessageButton.frame) + 150;
}