1.有图有真相,加油!好好理解
为了便于理解UIScrollView(滚动视图)(下文用scr)的原理,先来三张图片,以便在大脑里有一个摸你的模型,
- 图中手机的屏幕框内的就是我们设置的scr的frame,scr怎么滚动能看到的只是fram大小的 空间
- 屏幕背后图片的大小 ,是contentSize设置的大小,图片有多大contentSize要是指多大
1
2
3
2..scr一些常用的属相,以及代理方法 (注释的好清楚咯)
UIScrollView *scr =[[UIScrollView alloc]init];
//1、滚动视图要有一个滚动的范围,滚动的范围就是内容视图的大小,我们用contentSize来表示//一般来说,滚动视图的内容视图大小都要大于他的frame,不然没法滚
scr.contentSize = CGSizeMake(530, 596);
//3、把想要滚得东西贴在滚动视图上,就会随着滚动视图一起滚了,所以换一句话说,滚动视图的内容大小应该至少保证大于等于想滚的东西的大小
//4、scrollview的属性
// 1、边界弹不弹
scr.bounces = YES;
// 2、scrollview的代理
scr.delegate = self;
// 3、分页属性 , 按照scrollView的frame来分页,每一页都是一个frame的大小,最后不够的部分算一页,尽量让contentSize 为fram的整数倍
scr.pagingEnabled = NO;
// 4、显示或隐藏滑块
//水平进度条
scr.showsVerticalScrollIndicator = NO;
//垂直进度条
scr.showsHorizontalScrollIndicator = NO;
// 5、是否允许手动滚动
scr.scrollEnabled = YES;
// 6、偏移量,就是内容视图相对于frame视图的左上角坐标的x和y的偏移的值
scr.contentOffset = CGPointMake(0, 0);
// 7.设置偏移量,(滑动视图)
// - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
// 8.放大和缩小的倍数,
// @property(nonatomic) CGFloat minimumZoomScale;
// @property(nonatomic) CGFloat maximumZoomScale;
#pragma mark- 滚动视图的代理方法
//滑动过程中,会一直在执行
// - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
//开始拖动
// - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
//停止拖动
// - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//开始滑动减速
// - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
//停止滑动 减速停止
// - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
//允许缩放的视图(一个scrollview中只能有一个可以缩放且必须设置可以缩放的范围)
// - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
我在理解代理的执行过程中遇到过得问题:
// 第一个DidEndDragging 停止拖拽的时候开始执行 ,也就是手指离开的时
// 第二个:DidEndDecelerating 减速停止的时候开始执行,也就是视图停止是
// 它俩执行的时间不一样 scrollview 先是执行 停止拖住的代理 然后在执行减速停止的代理