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

原文链接:http://blog.csdn.net/ssihc0/article/details/6735462#

@interface PhotographViewController : UIViewController <UIImagePickerControllerDelegate,UIGestureRecognizerDelegate> { UIImagePickerController *imagePicker; UIImage *photoImage; UIView *overlay; UIImageView *photoCar; UIView *viewPhoth; CGFloat lastScale ; UIImageView *outPhotoImage; } @property (nonatomic,retain) IBOutlet UIImagePickerController *imagePicker; @property (nonatomic,retain) IBOutlet UIView *overlay; @property (nonatomic,retain) IBOutlet UIImageView *outPhotoImage; @property (nonatomic,retain) IBOutlet UIImageView *photoCar; @property (nonatomic,retain) IBOutlet UIView *viewPhoth; -(void)performAction:(id)sender; -(IBAction)returnView; -(IBAction)photographAction; -(IBAction)photographActionImage; -(void)scale:(UIPinchGestureRecognizer *)sender; - (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer; - (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer; @end

上面是头文件,就要加:

UIGestureRecognizerDelegate 协议

实现文件:

// // PhotographViewController.m // test1 // // Created by Mica001 on 11-8-30. // Copyright 2011年 __MyCompanyName__. All rights reserved. // #import "PhotographViewController.h" @implementation PhotographViewController @synthesize imagePicker; @synthesize overlay; @synthesize outPhotoImage; @synthesize photoCar; @synthesize viewPhoth; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)dealloc { [viewPhoth release]; [photoCar release]; [outPhotoImage release]; [overlay release]; [imagePicker release]; [super dealloc]; } -(IBAction)returnView { [self dismissModalViewControllerAnimated:YES] ; } -(IBAction)photographAction { self.imagePicker.sourceType= UIImagePickerControllerSourceTypeCamera; self.imagePicker.showsCameraControls = NO; self.imagePicker.cameraOverlayView=self.overlay; //这里放大,把工具栏隐藏, 在<pre name="code" class="cpp">//overlay 里手工添加一些控制button 当这,这里要用imageview 模拟成button imagePicker.cameraViewTransform = cameraTransform; [self presentModalViewController:imagePicker animated:YES]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { NSLog(@"image"); } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info; { photoImage=[info objectForKey:@"UIImagePickerControllerOriginalImage"]; outPhotoImage.image=photoImage; [picker dismissModalViewControllerAnimated:YES]; } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; { NSLog(@"s"); } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; lastScale=1.0; UIImage *image1=[UIImage imageNamed:@"dzlogo.png"]; UIImageView *imageViewCarS1= [[UIImageView alloc] initWithImage:image1]; imageViewCarS1.frame=CGRectMake(0, 0, imageViewCarS1.frame.size.width * 0.4, imageViewCarS1.frame.size.height * 0.4) ; [imageViewCarS1 setTag:11]; self.navigationItem.titleView=imageViewCarS1 ; [imageViewCarS1 release]; self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc] initWithTitle:@"选项" style:UIBarButtonItemStylePlain target:self action:@selector(performAction:)] autorelease]; // 放大缩小手势 UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; [pinchRecognizer setDelegate:self]; [self.overlay addGestureRecognizer:pinchRecognizer]; [pinchRecognizer release]; // 旋转手势 UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotatePiece:)]; [self.viewPhoth addGestureRecognizer:rotationGesture]; [rotationGesture release]; UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panPiece:)]; [panGesture setMaximumNumberOfTouches:1]; [panGesture setDelegate:self]; [viewPhoth addGestureRecognizer:panGesture]; [panGesture release]; } -(void)scale:(UIPinchGestureRecognizer*)sender { //当手指离开屏幕时,将lastscale设置为1.0 if([sender state] == UIGestureRecognizerStateEnded) { lastScale = 1.0; return; } CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]); CGAffineTransform currentTransform = self.photoCar.transform; CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale); [self.photoCar setTransform:newTransform]; lastScale = [sender scale]; } - (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer { if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { [gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]); // rotate = [gestureRecognizer rotation]; [gestureRecognizer setRotation:0]; } } - (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer { UIView *piece = [gestureRecognizer view]; if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { CGPoint translation = [gestureRecognizer translationInView:[piece superview]]; [piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)]; [gestureRecognizer setTranslation:CGPointZero inView:[piece superview]]; } } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||(interfaceOrientation == UIInterfaceOrientationLandscapeRight)); } -(void)performAction:(id)sender; { } -(IBAction)photographActionImage { [self.imagePicker takePicture]; } @end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值