程序员

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后,发现还是会报错;

image

9、这步骤很重要,如果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;
}
上一篇下一篇

猜你喜欢

热点阅读