图片浏览效果(双击图片,弹出层)

  1. #import <UIKit/UIKit.h>  
  2. #import <QuartzCore/QuartzCore.h>  
  3.   
  4. @interface EnlargeImageDoubleTap : UIImageView  
  5. {  
  6.     UIView *parentview;         //父窗口,即用将UIImageEx所加到的UIView  
  7.     UIImageView *imageBackground;  //放大图片后的背景  
  8.     UIView* imageBackView;         //单独查看时的背景  
  9.       
  10.     UIView* maskView;              //遮罩层  
  11.     CGRect frameRect;  
  12. }  
  13.   
  14. @property (nonatomic,retain) UIView *parentview;  
  15. @property (nonatomic,retain) UIImageView *imageBackground;  
  16. @property (nonatomic,retain) UIView* imageBackView;  
  17. @property (nonatomic,retain) UIView* maskView;  
  18.   
  19.   
  20.   
  21. - (void)handleDoubleTap:(UITapGestureRecognizer *)recognizer;  
  22.   
  23. //必须设置的  
  24. - (void)setDoubleTap:(UIView*)imageView;  
  25. @end  
  1. #import "EnlargeImageDoubleTap.h"  
  2.   
  3. @implementation EnlargeImageDoubleTap  
  4.   
  5. @synthesize parentview;  
  6. @synthesize imageBackground,imageBackView,maskView;  
  7. @interface EnlargeImageDoubleTap (private)  
  8. - (void)fadeIn;  
  9. - (void)fadeOut;  
  10. - (void)closeImage:(id)sender;  
  11. @end  
  12.   
  13. /* 
  14.  * setDoubleTap 初始化图片 
  15.  * @parent UIView 父窗口 
  16.  */  
  17. - (void)setDoubleTap:(UIView*) parent  
  18. {  
  19.     parentview=parent;  
  20.     parentview.userInteractionEnabled=YES;  
  21.     self.userInteractionEnabled=YES;  
  22.       
  23.     UITapGestureRecognizer *doubleTapRecognize = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];  
  24.     doubleTapRecognize.numberOfTapsRequired = 2;  
  25.     [doubleTapRecognize setEnabled :YES];  
  26.     [doubleTapRecognize delaysTouchesBegan];  
  27.     [doubleTapRecognize cancelsTouchesInView];  
  28.       
  29.     [self addGestureRecognizer:doubleTapRecognize];  
  30.       
  31. }  
  32.   
  33.   
  34. #pragma UIGestureRecognizer Handles  
  35. /* 
  36.  * handleDoubleTap 双击图片弹出单独浏览图片层 
  37.  * recognizer 双击手势 
  38.  */  
  39. -(void) handleDoubleTap:(UITapGestureRecognizer *)recognizer  
  40. {     
  41.                 if (imageBackView==nil) {  
  42.                     if( [[UIDevice currentDevice] orientation]==UIDeviceOrientationLandscapeLeft||[[UIDevice currentDevice] orientation]==UIDeviceOrientationLandscapeRight)  
  43.                     {  
  44.                           
  45.                         frameRect = CGRectMake(0, 0, parentview.frame.size.height+20, parentview.frame.size.width);  
  46.                     }else  
  47.                     {     
  48.                         frameRect = CGRectMake(0, 0, parentview.frame.size.width, parentview.frame.size.height+20);  
  49.                     }  
  50.                       
  51.                    imageBackView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.image.size.width+20, self.image.size.height+60)];  
  52.                     imageBackView.backgroundColor = [UIColor grayColor];  
  53.                     imageBackView.layer.cornerRadius = 10.0; //根据需要调整  
  54.                       
  55.                     [[imageBackView layer] setShadowOffset:CGSizeMake(10, 10)];  
  56.                     [[imageBackView layer] setShadowRadius:5];  
  57.                     [[imageBackView layer] setShadowOpacity:0.7];  
  58.                     [[imageBackView layer] setShadowColor:[UIColor blackColor].CGColor];  
  59.                       
  60.                     maskView = [[UIView alloc]initWithFrame:frameRect];  
  61.                     maskView.backgroundColor = [UIColor grayColor];  
  62.                     maskView.alpha=0.7;  
  63.                       
  64.                     UIImage *imagepic = self.image;  
  65.                     UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(10, 30, self.image.size.width, self.image.size.height)];  
  66.                     [view setImage:imagepic];  
  67.                     UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];  
  68.                       
  69.                     UIImage *closeimg = [UIImage imageNamed:@"closeImage.png"];  
  70.                     btn.frame = CGRectMake(self.image.size.width-30,0, closeimg.size.width,closeimg.size.height);  
  71.                     [btn setBackgroundImage:closeimg forState:UIControlStateNormal];  
  72.                     [btn addTarget:self action:@selector(closeImage:) forControlEvents:UIControlEventTouchUpInside];  
  73.                       
  74.                     [imageBackView addSubview:view];  
  75.                     [parentview addSubview:maskView];  
  76.                     imageBackView.center= CGPointMake((frameRect.origin.x+frameRect.size.width)/2  
  77.                                                       ,(frameRect.origin.y+frameRect.size.height)/2);  
  78.                     [parentview addSubview:imageBackView];  
  79.                     [imageBackView addSubview:btn];  
  80.                     [parentview bringSubviewToFront:imageBackView];  
  81.   
  82.                     [self fadeIn];  
  83.                      
  84.                       
  85.                 }  
  86. }  
  87.   
  88. /* 
  89.  * fadeIn 图片渐入动画 
  90.  */  
  91. -(void)fadeIn  
  92. {  
  93.     imageBackView.transform = CGAffineTransformMakeScale(1.3, 1.3);  
  94.     imageBackView.alpha = 0;  
  95.     [UIView animateWithDuration:.55 animations:^{  
  96.         imageBackView.alpha = 1;  
  97.         imageBackView.transform = CGAffineTransformMakeScale(1, 1);  
  98.     }];  
  99.       
  100. }  
  101.   
  102. /* 
  103.  * fadeOut 图片逐渐消失动画 
  104.  */  
  105. - (void)fadeOut  
  106. {  
  107.     [UIView animateWithDuration:.35 animations:^{  
  108.         imageBackView.transform = CGAffineTransformMakeScale(1.3, 1.3);  
  109.         imageBackView.alpha = 0.0;  
  110.     } completion:^(BOOL finished) {  
  111.         if (finished) {  
  112.             [imageBackView removeFromSuperview];  
  113.         }  
  114.     }];  
  115. }  
  116.   
  117. /* 
  118.  * closeImage 关闭弹出图片层 
  119.  */  
  120. -(void)closeImage:(id)sender  
  121. {  
  122.     [self fadeOut];  
  123.     imageBackView=nil;  
  124.     [maskView removeFromSuperview];  
  125.     maskView=nil;  
  126. }  
  127.   
  128. @end  
运行后的效果图:

例子的下载连接:http://download.csdn.net/detail/toss156/4160496

转载于:https://my.oschina.net/jackyyang/blog/67401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值