scrollView自动布局技巧
- 步骤:
1. sb中拖scrollView
2. 设置scrollView上下左右为0
4. 拖一个UIView"yellowView"到scrollView中(不是imageView)
5. 设置yellowView的自动布局上下左右为0(此时报错,实际缺少尺寸"无法算出contentSize")
6. 设置yellowView和scrollView等宽等高
7. 更新frame,并运行
- 此时无法滚动,因为contentSize和scrollView的size一样大
8.设置yellowView宽约束的是scrollView宽的2倍,并运行
- 此时 可以滚动了,因为yellowView的宽大于scrollView自身的宽
9. 设置yellowView顶部约束为64,并运行,会影响它的contentSize
10. 给yellowView上的添加按钮,并设置约束,演示分页属性,并运行
- 实验小结:
1. 设置scrollView中内容的距离scrollView四边边距值,会影响contentSize即滚动范围,上下间距
会影响contentSize的Hieght"垂直滚动范围",左右间距会影响水平滚动范围(不常用,了解装逼使用)
2. 如果用AutoLayout约束scrollView中的内容时只设置四边间距约束是不够的,还要设置view宽高
3. 除了UIImageView可以不用直接设置宽高,因为它里面如果设置了图片,imageView的size会根据图片
自适应,对应设置 scrollView的contentSize
4. 切记scrollView在实用自动布局时比较特殊
5. 建议:如果一个scrollView中有很多小控件可以把小控件添加一个容器视图 view,设置容器view的尺
寸为contentSize
scrollView-代理方法
- scrollViewDidScroll: 滚动视图滚动时使用
- scrollViewDidEndDecelerating: 滚动视图停止滚动时使用
- viewForZoomingInScrollView: 缩放视图时使用
- 滚动相关方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"%@", @"scrollview视图开始滚动");
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
NSLog(@"%@", @"将要减速 - 在释放开手之后调用");
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"%@", @"完成减速 - 完全静止后调用");
}
- 缩放相关方法
实现缩放的两个步骤
- 需要设置最小缩放比例(minimumZoomScale)和最大缩放比例(maximumZoomScale)都为1时无法缩放
- 需要实现 “viewForZoomingInScrollView” 方法 告诉 scrollView 缩放的视图
( 只要缩放就会调用 )
// 告诉滚动视图缩放的视图
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return _imageView;
}
// @param scrollView 滚动视图
// @param view 缩放的视图
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view {
NSLog(@"%@", @