当我们在view中添加了一个scrollView并设置其约束后,再向scrollView中添加一个以scrollView为基准的约束的控件时,约束会报错,这是因为scrollView需要根据添加在其内部的子控件的宽高及与四周的距离计算出它的contentSize,
也就是说,内部子控件约束的添加需要遵循两个原则:
- 1、scrollView内部子控件的尺寸不能以scrollView的尺寸为参照
- 2、scrollView内部的子控件的约束必须完整
解决方法:
1、提供一个具体值的约束
2、子控件的尺寸可以参照scrollView以外其它的控件的尺寸(如控制器的view的尺寸)
另外,scrollView不能滑动的原因:
1、contentSize 这个属性,比scrollView的frame小就不会滚动
2、在self.view上添加scrollview 能正常滚动,向里面添加其他控件的时候,不能正常滚动:需要在viewDidLayoutSubviews中设置scrollView的contentSize
或在xib中使用autoLayout,也需要在viewDidLayoutSubviews中设置contentSize
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.scrollView.contentSize = CGSize(width: 0, height: IS_IPHONE_5 ? kScreenHeight+150 : kScreenHeight)
}