您的位置:首页 > 产品设计 > UI/UE

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

2011-11-01 14:39 393 查看
原文链接: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

上面是头文件就要加

view
plain

UIGestureRecognizerDelegate

协议

。M

view
plain

//

// 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  image uiview button 工具
相关文章推荐