UIScrollView的介绍和原理
2019-04-12 本文已影响2人
追逐_chase
UIScrollView 滚动视图
常用的属性
- 一下3个比较中的属性
-
contentOffset
内容的偏移量- 控制内容滚动的位置
- 可以获取到 内容滚动的位置
-
contentSize.Width
-scrollView.frame.Widtn
就是在X抽的偏移量
-
contentSize
内容视图的大小 -
contentInset
内部的内边距
// 1.UIImageView
UIImage *image = [UIImage imageNamed:@"minion"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.scrollView addSubview:imageView];
// 2.设置contentSize 内容的size
self.scrollView.contentSize = image.size;
//设置 弹簧效果
self.scrollView.bounces = YES;
//设置 水平 和 垂直 方向的弹簧效果 o默认是NO
//这2个属性一般用于 上啦和下拉 刷新的控件显示
self.scrollView.alwaysBounceVertical = YES;
self.scrollView.alwaysBounceHorizontal = YES;
//是否显示滚动条
self.scrollView.showsVerticalScrollIndicator = YES;
self.scrollView.showsHorizontalScrollIndicator = YES;
//内容便宜量,
//作用:
// 控制内容滚动的位置
// 可以获取到 内容滚动的位置
self.scrollView.contentOffset = CGPointMake(200, 100);
//设置代理 组训协议
self.scrollView.delegate = self;
代理 方法
//开始拖拽的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
}
// scrollView会自动调用 只要滚动就会调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
}
// 拖拽结束
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
}
// 滚动结束
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
}
//手势缩放代理方法 记得设置缩放比例
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
UIView *view = [[UIView alloc] init];
//返回需要缩放的子控件
return view;
}
scrollView的原理
-
scrollView
之所以可以滚动式基于bounds
这个属性的变化 -
scrollView
继承与UIView
对bounds
属性的深入了解
-
之前我们对
bounds
了解是:以自己左上角为原点(0,0),并可以设置自身尺寸大小 -
frame
:决定一个视图在它父视图上的显示区域和大小,以父视图左上角为原点(0,0) -
正常
bounds
没有更改的时候
//俯视图View 没有设置bounds属性
UIView *boundsView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 270, 300)];
boundsView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:boundsView];
//子视图
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 50, 50)];
subView.backgroundColor = [UIColor redColor];
[boundsView addSubview:subView];
下图:
![](https://img.haomeiwen.com/i2838971/7739c10c343fd688.png)
- 更改boundsView 视图的
bounds
属性
更改bounds属性.png
![](https://img.haomeiwen.com/i2838971/485da7ae7f96e8f8.png)