UIScrollView总结
2015-09-19 14:29
435 查看
学习了scrollView一个相册的案例来总结下。
相册起始是一个大的scrollView里面嵌套多个小的scrollView。大的scollView控制图片间的切换,小的scrollView控制图片的缩放。
控制图片的scrollView
相册起始是一个大的scrollView里面嵌套多个小的scrollView。大的scollView控制图片间的切换,小的scrollView控制图片的缩放。
//创建外面大的scrollView UIScrollView *rootAlbum = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,deviceWidth + 5, deviceHeight)]; rootAlbum.tag = 10; //设置滚动的时候是否按页滚动 rootAlbum.pagingEnabled = YES; rootAlbum.delegate = self; //设置scrollView的内容框架坐标 rootAlbum.contentSize = CGSizeMake((deviceWidth + 5) * 4, deviceHeight); //不显示水平滚动条 rootAlbum.showsHorizontalScrollIndicator = NO; //在大的scrollView中添加小的scrollView和图片 for (int i = 0; i < 4; i ++) { PhotoView *myPhoto = [[PhotoView alloc] initWithFrame:CGRectMake(i * (deviceWidth + 5), 0, deviceWidth, deviceHeight)]; NSString *photoName = [NSString stringWithFormat:@"%d.jpg",i + 1]; myPhoto.tag = i + 1; myPhoto.photo.image = [UIImage imageNamed:photoName]; [rootAlbum addSubview:myPhoto]; // NSLog(@"%f",myPhoto.frame.origin.x); } [self.view addSubview:rootAlbum]; // Do any additional setup after loading the view, typically from a nib. } int current = 1; //scrollView滚动中调用的方法 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if(scrollView.tag == 10){ //contentOffset的起点坐标是原始scrollView的左下角那个点 NSLog(@"%f",scrollView.contentOffset.y); } } //滚动结束调用的方法 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ int loc = scrollView.contentOffset.x / (deviceWidth + 5) + 1; UIScrollView *currentView = (UIScrollView *)[self.view viewWithTag:current]; //当切换图片时,如果页面有缩放就还原 if (current != loc && currentView.zoomScale != 1) { currentView.zoomScale = 1; } current = loc; }
控制图片的scrollView
- (id) initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.delegate = self; _photo = [[UIImageView alloc] initWithFrame:self.bounds]; self.showsHorizontalScrollIndicator = NO; //设置最大缩放 self.maximumZoomScale = 2.5; //设置最小缩放 self.minimumZoomScale = 0.5; [self addSubview:_photo]; //创建双击事件,当双击图片时放大双击的位置 UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapEvent :)]; doubleTap.numberOfTapsRequired = 2; [self addGestureRecognizer:doubleTap]; } return self; } - (void) doubleTapEvent : (UITapGestureRecognizer *) doubleTap{ //如果当前页面没有缩放双击则放大双击部位,如果有缩放则还原 if(self.zoomScale == 1 ){ [UIView animateWithDuration:0.5 animations:^{ CGPoint point = [doubleTap locationInView:self]; //以所点击位置为中心的长80宽80的矩形填充当前的scrollView [self zoomToRect:CGRectMake(point.x - 40, point.y - 40, 80, 80) animated:YES]; }]; }else{ [UIView animateWithDuration:0.5 animations:^{ self.zoomScale = 1; }]; } } //让代理对象实现下面的方法,返回需要缩放的视图控件 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return _photo; }
相关文章推荐
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧
- C++实现读取图片长度和宽度
- PHP根据图片色界在不同位置加水印的方法
- php通过修改header强制图片下载的方法
- PHP安全上传图片的方法
- 使用GD库生成带阴影文字的图片
- php获取网页里所有图片并存入数组的方法