UIPinchGestureRecognizer 缩放,移动,旋转,UIImagePickerController 横屏,全屏 的实现

  1. 原文链接:http://blog.csdn.net/ssihc0/article/details/6735462#
    @interface PhotographViewController : UIViewController <UIImagePickerControllerDelegate,UIGestureRecognizerDelegate> {  
  2.     UIImagePickerController *imagePicker;  
  3.     UIImage *photoImage;  
  4.     UIView *overlay;  
  5.     UIImageView *photoCar;  
  6.     UIView *viewPhoth;  
  7.       
  8.       
  9.     CGFloat lastScale ;  
  10.     UIImageView  *outPhotoImage;  
  11. }  
  12. @property (nonatomic,retain) IBOutlet UIImagePickerController *imagePicker;  
  13. @property (nonatomic,retain) IBOutlet UIView *overlay;  
  14. @property (nonatomic,retain) IBOutlet UIImageView  *outPhotoImage;  
  15. @property (nonatomic,retain) IBOutlet UIImageView *photoCar;  
  16. @property (nonatomic,retain) IBOutlet   UIView *viewPhoth;  
  17. -(void)performAction:(id)sender;  
  18. -(IBAction)returnView;  
  19. -(IBAction)photographAction;  
  20. -(IBAction)photographActionImage;  
  21.   
  22. -(void)scale:(UIPinchGestureRecognizer *)sender;  
  23. - (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer;  
  24. - (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer;  
  25. @end  

上面是头文件就要加
  1. UIGestureRecognizerDelegate  

协议


。M

  1. //  
  2. //  PhotographViewController.m  
  3. //  test1  
  4. //  
  5. //  Created by Mica001 on 11-8-30.  
  6. //  Copyright 2011年 __MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import "PhotographViewController.h"  
  10.   
  11.   
  12. @implementation PhotographViewController  
  13. @synthesize imagePicker;  
  14. @synthesize overlay;  
  15. @synthesize outPhotoImage;  
  16. @synthesize photoCar;  
  17. @synthesize viewPhoth;  
  18. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  19. {  
  20.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  21.     if (self) {  
  22.         // Custom initialization  
  23.     }  
  24.     return self;  
  25. }  
  26.   
  27. - (void)dealloc  
  28. {  
  29.     [viewPhoth release];  
  30.     [photoCar release];  
  31.     [outPhotoImage release];  
  32.     [overlay release];  
  33.     [imagePicker release];  
  34.     [super dealloc];  
  35. }  
  36.   
  37.   
  38.   
  39.   
  40. -(IBAction)returnView  
  41. {  
  42.      [self dismissModalViewControllerAnimated:YES] ;  
  43. }  
  44.   
  45. -(IBAction)photographAction  
  46. {  
  47.     self.imagePicker.sourceType= UIImagePickerControllerSourceTypeCamera;  
  48.     self.imagePicker.showsCameraControls = NO;  
  49.     self.imagePicker.cameraOverlayView=self.overlay;  
  50.  //这里放大,把工具栏隐藏,  在<pre name="code" class="cpp">//overlay  里手工添加一些控制button  当这,这里要用imageview 模拟成button  
  51.    imagePicker.cameraViewTransform = cameraTransform;   
  52.     [self presentModalViewController:imagePicker animated:YES];  
  53. }  
  54.   
  55. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo   
  56. {  
  57.      
  58.   NSLog(@"image");  
  59. }  
  60. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;  
  61. {  
  62.     photoImage=[info objectForKey:@"UIImagePickerControllerOriginalImage"];  
  63.     outPhotoImage.image=photoImage;  
  64.     [picker dismissModalViewControllerAnimated:YES];  
  65. }  
  66. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;  
  67. {  
  68.    NSLog(@"s");  
  69. }  
  70.   
  71.   
  72. - (void)didReceiveMemoryWarning  
  73. {  
  74.     // Releases the view if it doesn't have a superview.  
  75.     [super didReceiveMemoryWarning];  
  76.       
  77.     // Release any cached data, images, etc that aren't in use.  
  78. }  
  79.   
  80. #pragma mark - View lifecycle  
  81.   
  82. - (void)viewDidLoad  
  83. {  
  84.     [super viewDidLoad];  
  85.     lastScale=1.0;  
  86.     UIImage *image1=[UIImage imageNamed:@"dzlogo.png"];  
  87.     UIImageView *imageViewCarS1= [[UIImageView alloc] initWithImage:image1];  
  88.     imageViewCarS1.frame=CGRectMake(0, 0, imageViewCarS1.frame.size.width * 0.4, imageViewCarS1.frame.size.height * 0.4)   ;  
  89.     [imageViewCarS1 setTag:11];  
  90.     self.navigationItem.titleView=imageViewCarS1 ;  
  91.     [imageViewCarS1 release];    
  92.       
  93.     self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc] initWithTitle:@"选项" style:UIBarButtonItemStylePlain target:self action:@selector(performAction:)] autorelease];  
  94.       
  95.       
  96.      // 放大缩小手势  
  97.     UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc]   
  98.                                                    
  99.                                                  initWithTarget:self action:@selector(scale:)];  
  100.     [pinchRecognizer setDelegate:self];  
  101.     [self.overlay addGestureRecognizer:pinchRecognizer];  
  102.     [pinchRecognizer release];      
  103.       
  104.    // 旋转手势  
  105.     UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotatePiece:)];  
  106.     [self.viewPhoth addGestureRecognizer:rotationGesture];  
  107.     [rotationGesture release];      
  108.       
  109.       
  110.       
  111.     UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panPiece:)];  
  112.       
  113.     [panGesture setMaximumNumberOfTouches:1];  
  114.       
  115.     [panGesture setDelegate:self];  
  116.       
  117.     [viewPhoth addGestureRecognizer:panGesture];  
  118.       
  119.     [panGesture release];  
  120.   
  121.   
  122. }  
  123.   
  124. -(void)scale:(UIPinchGestureRecognizer*)sender {  
  125.       
  126.     //当手指离开屏幕时,将lastscale设置为1.0  
  127.     if([sender state] == UIGestureRecognizerStateEnded) {  
  128.         lastScale = 1.0;  
  129.         return;  
  130.     }  
  131.       
  132.     CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);  
  133.     CGAffineTransform currentTransform = self.photoCar.transform;  
  134.     CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);  
  135.       
  136.     [self.photoCar setTransform:newTransform];  
  137.     lastScale = [sender scale];  
  138.       
  139. }  
  140.   
  141. - (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer  
  142. {  
  143.        
  144.     if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {  
  145.         [gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]);  
  146.        // rotate = [gestureRecognizer rotation];  
  147.         [gestureRecognizer setRotation:0];  
  148.     }  
  149. }  
  150.   
  151. - (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer  
  152.   
  153. {  
  154.       
  155.     UIView *piece = [gestureRecognizer view];  
  156.       
  157.     if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {  
  158.           
  159.         CGPoint translation = [gestureRecognizer translationInView:[piece superview]];  
  160.           
  161.         [piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)];  
  162.           
  163.         [gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];  
  164.           
  165.     }  
  166.       
  167. }  
  168.   
  169.   
  170.   
  171. - (void)viewDidUnload  
  172. {  
  173.     [super viewDidUnload];  
  174.     // Release any retained subviews of the main view.  
  175.     // e.g. self.myOutlet = nil;  
  176. }  
  177.   
  178. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  179. {  
  180.     // Return YES for supported orientations  
  181.     return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)  
  182.             ||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));  
  183. }  
  184.   
  185. -(void)performAction:(id)sender;  
  186. {  
  187.      
  188. }  
  189.   
  190. -(IBAction)photographActionImage  
  191. {  
  192.     [self.imagePicker takePicture];  
  193. }  
  194. @end  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值