关于在IOS7下实现点击UIImageView是实现放大图片的原理(完全是自己参考其他的文脏,自己总结出来的,如有雷同,那咱就是心有灵犀啦)
我这里的情况是,在UITableView中的UITableviewCell中使用UIImageView,UIImageView是放在cell中的。这里的实现代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| NSString *imagepath = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:imagepath];
GBPathImageView *headImageView = [[GBPathImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageWidth, imageHeight) image:image pathType:GBPathImageViewTypeCircle pathColor:[UIColor whiteColor] borderColor:[UIColor whiteColor] pathWidth:1.0]; headImageView.userInteractionEnabled = YES; headImageView.multipleTouchEnabled = YES; headImageView.tag = row; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showBigImage:)]; tap.view.tag= (int)headImageView.image; tap.delegate = self; [headImageView addGestureRecognizer:tap];
[cell.contentView addSubview:headImageView];
|
这里就是使用了UITapGestureRecognizer,添加了排击的事件。
注意点:
- 第一点:UIImageview的userInteractionEnabled和multipleTouchEnabled的设置,不然不起作用
- 第二点:代理UIGestureRecognizerDelegate的引入
- 第三点:tag的使用,这个是为了后面的操作,主要是因为加了tag我们就会知道是哪个UIImageView被点击了,从而做一些其他的处理。
那么关于方法图片和缩小图片的方法如下:
放大图片的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| -(void) showBigImage:(id)sender { UITapGestureRecognizer *tap = (UITapGestureRecognizer*)sender; NSLog(@"tag = %d",tap.view.tag); UIImageView *imageViewer=[[UIImageView alloc] init]; UITapGestureRecognizer *closeTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideBigImage:)]; closeTap.delegate = self; imageViewer.multipleTouchEnabled = YES; imageViewer.userInteractionEnabled = YES; [imageViewer addGestureRecognizer:closeTap]; imageViewer.animationDuration = 2.0; imageViewer.animationRepeatCount = 1; [imageViewer setFrame:CGRectMake(0.0, _tableview.frame.origin.y, _tableview.frame.size.width, _tableview.frame.size.height)]; [imageViewer startAnimating]; NSString *imagepath = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:imagepath]; [imageViewer setImage:image]; UIWindow *mainWindow=[UIApplication sharedApplication].delegate.window; [mainWindow.rootViewController.view addSubview:imageViewer]; }
|
缩小图片的方法:
1 2 3 4 5
| -(void) hideBigImage:(id)sender { UITapGestureRecognizer *tap = (UITapGestureRecognizer*)sender; [tap.view removeFromSuperview]; }
|
大概的原理全在代码中了,如何放大图片,如何做出图片更加好的效果,这个是后面优化要做的。
参考文章:
- http://hi.baidu.com/jt_one/item/95babe35583f3598b80c0316
- http://www.cocoachina.com/bbs/simple/?t70503.html
- http://stackoverflow.com/questions/11552184/uitapgesturerecognizer-not-working-in-uiimageview
- http://blog.csdn.net/zjwen1006/article/details/6916591
- http://hi.baidu.com/moon_2009/item/b3eca83262582d86c2cf291f