scrollView 控制滚动控件
1.定义:
/*
1.UIScrollView 是 IOS 中提供滚动的控件,用于解决当内容区域大小大于可是区域大小时,可以通过滚动的方式查看全部内容,
2.UIScrollView滑动视图的基类; 子类: UITableView UITextView 是他的子类
3.内部实现原理:修改视图的 bounds,bounds代表的是视图在自身坐标系中原点的位置,改变父视图的bounds,能够影响其子视图的位置(相对位置)。
*/
//1.1创建 scroll对象
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(20, 30, 280, 500)];
//1.2配置属性
scrollView .backgroundColor = [UIColor redColor];
//1.3设置内容区域比可视区域大
scrollView.contentSize = CGSizeMake(560, 1000) ;
// 1.4设置偏移量 默认的是(0.0); 意思就是间接的修改bounds值,等于修改了scrollView的原点位置
scrollView .contentOffset = CGPointMake(0, 00);
// 1.5 设置水平方向滚动条显隐 默认 YES
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
// 1.6设置滚动条格式 颜色
scrollView . indicatorStyle = UIScrollViewIndicatorStyleWhite;
// 1.7设置关闭滑动 默认YES
// scrollView.scrollEnabled = NO;
// 1.8设置方向锁 滑动时 只往一个方向
scrollView . directionalLockEnabled = NO;
// 1.9设置 scrollView 的整屏滑动 一次滑动 整个屏幕的大小 默认 是 NO
scrollView . pagingEnabled = YES;
//1.10设置当滑动到屏幕边缘 是否有弹簧效果 默认 YES
scrollView .bounces = YES;
// 1.11设置当内容大小等于视图大小时,依然有反弹效果
scrollView.alwaysBounceHorizontal = YES;
scrollView.alwaysBounceVertical = YES;
// 1.12设置点击状态栏 scrollView 返回顶部(y 轴为0); 默认 NO;
scrollView . scrollsToTop = YES;
// 1.13设置代理
scrollView.delegate = self;
// 1.14设置缩放比例
scrollView.minimumZoomScale = 1.0;
scrollView.maximumZoomScale = 4.0;
//添加到父视图 并释放
[self.view addSubview:scrollView];
[scrollView release];
//添加个图片 到 srollView 上面
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)];
imageView.tag = 100;
imageView.image = [UIImage imageNamed:@"Pic.jpg"];
[scrollView addSubview:imageView];
[imageView release];
遵循协议的方法,
=========自定义协议和系统协议的使用流程===========
1,自定义协议和代理 例如:DelegateView,Girl
①,先制定一个协议,协议中的方法都是代理要实现的
②,定义代理属性(存放从别的文件中传入的代理对象,语义属性设置为assign,定义的时候id<遵循的协议>delegate)
③,在其他文件中指定代理对象(让谁去帮忙干活)
④,让代理遵循协议,可以写在.h中也可以写在.m中(知道要去干什么活)
⑤,代理类实现协议方法(知道怎么干,就是实现代理方法)
⑥,委托方(制订协议的类)通知代理去执行协议中的方法(要求在什么情况下去干活),这个是写在委托方的.m中的
2,系统协议和代理 例如 UIScrollViewDelegate
①,在其他文件中指定代理对象
②,让代理遵循协议
③,代理类实现协议方法。
scrollView 遵循UIScrollViewDelegate 协议要实现的方法
①,- (void)scrollViewDidScroll:(UIScrollView *)scrollView{}//触发时机,只要scrollView在滚动就会一直触发
②,- (void)scrollViewDidZoom:(UIScrollView *)scrollView{}//触发时机,只要缩放就触发
③,- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}//触发时机,scrollView将要开始拖拽的时候触发(指手指刚刚触摸scrollView)
④,- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{}//触发时机,scrollView将要结束拖拽的时候触发
⑤,- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}//触发时机,scrollView已经结束拖拽的时候触发
⑥,- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{}//触发时机,scrollView将要开始减速的时候触发,该方法在特定条件下才会触发,加速后开始减速的时候触发
⑦,- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//触发时机,scrollView已经结束减速的时候触发,在这里可以实现一个小方法,让其停止减速的时候图片回到最初位置
//当scrollView停止滑动时,回到最初位置,直接跳回去
scrollView.contentOffset = CGPointZero;
//当scrollView停止滑动时,回到最初的位置,有个动画的过程,慢慢回去不会直接跳回去
[scrollView setContentOffset:CGPointZero animated:YES];
}
⑧,- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{}//触发时机,scrollView结束滑动并且带有动画效果时触发(必须有动画效果才会触发)
⑨,- (UIView *)viewForZoomIngInScrollview:(UIScrollView *)scrollView{
//触发时机,准备缩放的时候触发
return [scrollView viewWithTag:100];//返回缩放的imageView,只能是scrollView上的子视图。
}
⑩,- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{}//触发时机,将要开始缩放的时候触发
,- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
11 //触发时机,结束缩放的时候触发
[scrollView setZoomScale : 1.0 animated YES];//缩放完后回复到图片原来的大小
}
12 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
//触发时机,点击状态栏的时候用该方法,询问点击状态栏的scrollView是否可以回到顶部,(前提是:scrollsToTop = YES)
return YES;
}
13,- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{}//触发时机,已经回到顶部的时候触发,此时可以在这个方法里写个刷新的功能