标签:
#import "RootViewController.h" #define kScreenSize [UIScreen mainScreen].bounds.size #define kPrintDebug NSLog(@"%s",__func__) @interface RootViewController ()<UIScrollViewDelegate> { UIScrollView *_scrollView; } @end @implementation RootViewController - (void)dealloc { [_scrollView release]; [super dealloc]; } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor lightGrayColor]; [self creatScrollView]; } /* - imageNamed: - imageWithContentsOfFile: 区别: 1.- imageNamed: 加载图片 第一次 加载的时候 会把图片从app包内(手机磁盘) 加载到手机内存的缓存中,下次如果再加载相同的图片那么直接从缓存中加载,提高效率。但是缓存是有限的,app程序都要用到缓存,如果缓存低了那么直接影响app 运行效率。- imageNamed:方式加载的对象 是不释放的 应用场合:加载小图片 (几kb 几十kb),少量图片 2.- imageWithContentsOfFile: 加载图片 每次调用都会从app包内(磁盘) 中 获取,用完之后 也会自动释放。但是相对于- imageNamed:加载效率低一些 */ - (void)creatScrollView { //实例化一个滚动视图对象 //内容 是可以滚动的 _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, kScreenSize.width, kScreenSize.height-90)]; //UIImage *image = [UIImage imageNamed: @"car4"]; //获取图片在app包内的路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:path]; //设置图片的真实大小 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; imageView.image = image; //粘贴到滚动视图 [_scrollView addSubview:imageView]; [imageView release]; //背景颜色 _scrollView.backgroundColor = [UIColor redColor]; //1.滚动视图的内容一般要大于 滚动视图的范围 //2.设置 滚动视图的 滚动范围 (滚动范围 一般就是 内容的大小范围) // 滚动区域范围 > 滚动视图的范围 //设置滚动视图的滚动区域范围(要想滚动必须设置滚动内容大小) _scrollView.contentSize = imageView.bounds.size; //设置回弹(默认可以回弹) _scrollView.bounces = YES; //显示或者隐藏 滚动条 默认显示 _scrollView.showsHorizontalScrollIndicator = NO;//水平 _scrollView.showsVerticalScrollIndicator = NO;//竖直 //设置 是否可以滚动 NO禁用滚动 //_scrollView.scrollEnabled = NO; //设置方向锁 _scrollView.directionalLockEnabled = YES;//同时允许一个方向滚动 //设置 内容 偏移量(相对于 粘到到滚动视图的位置滚动偏移) //如果偏移量CGPointMake(-50 ,-50) 内容会向 右 下偏移 //如果偏移量CGPointMake(50 ,50) 内容会向 左 上偏移 //_scrollView.contentOffset = CGPointMake(-50 ,-50); //点击状态栏是否可以滚动到内容视图的顶部 _scrollView.scrollsToTop = YES; //设置缩放(必须设置代理 实现协议的方法) //实现- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView _scrollView.minimumZoomScale = 0.5; _scrollView.maximumZoomScale = 2.0; //设置代理 _scrollView.delegate = self; //self.view当前视图是RootViewVontroller, [self.view addSubview:_scrollView]; } #pragma mark - UIScrollViewDelegate //常用1 //当 缩放 滚动视图 的视图 通知代理 返回一个指定 内容视图 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { //返回需要缩放的视图地址 //当前滚动视图中只有 一个 视图 return scrollView.subviews[0]; } //常用2 //手指 将要拖拽滚动视图的时候调用 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { kPrintDebug; } //常用3 //滚动视图滚动的时候调用 滚动的时候一直调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { //kPrintDebug; //CGPoint point = scrollView.contentOffset; //NSLog(@"偏移量:%@",NSStringFromCGPoint(point)); } //常用4 //将要结束拖拽的时候调用 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { kPrintDebug; } //常用5 //已经结束拖拽调用 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { kPrintDebug; } //常用6 //将要开始 减速停止 的时候调用 - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { kPrintDebug; } //常用7 //已经 减速停止的时候调用 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { kPrintDebug; } //扩展 //将要开始 变形的时候调用 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view { kPrintDebug; } //变形过程中一直调用 - (void)scrollViewDidZoom:(UIScrollView *)scrollView { kPrintDebug; } //变形结束的时候调用 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale { kPrintDebug; } //下面两个协议方法 有效 必须 设置滚动视图的_scrollView.scrollsToTop = YES;为yes //_scrollView.scrollsToTop = YES; //上面设置之后 可以通过 代理的协议的方法设置点击状态栏时候可以滚动顶部 //通过代理设置 点击状态栏是否可以滚动到顶部 - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView { kPrintDebug; return YES; } //点击状态栏已经滚动到顶部 - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView { kPrintDebug; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
标签:
原文地址:http://my.oschina.net/u/2410306/blog/524269