IOS手指控制图片的缩放
来源:互联网 发布:mysql查看连接池 编辑:程序博客网 时间:2024/04/28 08:26
//// MoveScaleImageController.h// MoveScaleImage//// Created by on 12-4-24.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import <UIKit/UIKit.h>#import "MoveScaleImageView.h"@interface MoveScaleImageController : UIViewController<UIScrollViewDelegate>{ UIScrollView *myScrollView; UIImageView *myImageView;}@property(retain,nonatomic)UIScrollView *myScrollView;@property(retain,nonatomic)UIImageView *myImageView;@end //// MoveScaleImageController.m// MoveScaleImage//// Created by on 12-4-24.// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.//#import "MoveScaleImageController.h"@interface MoveScaleImageController ()@end@implementation MoveScaleImageController@synthesize myScrollView;@synthesize myImageView;-(void)dealloc{ [myScrollView release]; [myImageView release]; [super dealloc];}-(void)loadView{ [super loadView]; self.view.backgroundColor = [UIColor lightGrayColor]; // UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(110, 200, 100, 50)];// [btn setFrame:CGRectMake(110, 200, 100, 40)]; [btn setBackgroundColor:[UIColor whiteColor]]; [btn setTitle:@"点击查看图片" forState:UIControlStateNormal]; [btn.titleLabel setFont:[UIFont systemFontOfSize:13]]; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(clickEvent:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; [btn release]; //下面是我要剪切区域的覆盖层// if(self.centerOverLayView==nil)// {// UIView *centerView=[[UIView alloc] initWithFrame:CGRectMake(20, 100, 280, 210)];// self.centerOverLayView=centerView;// [centerView release];// }// self.centerOverLayView.backgroundColor=[UIColor clearColor];// self.centerOverLayView.layer.borderColor=[UIColor orangeColor].CGColor;// self.centerOverLayView.layer.borderWidth=2.0;// [self.view addSubview:self.centerOverLayView]; }-(void)clickEvent:(id)sender{ NSLog(@"***********clickeventad"); myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; if(self.myScrollView==nil) { UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; self.myScrollView=scrollView; [scrollView release]; } self.myScrollView.backgroundColor=[UIColor blueColor]; self.myScrollView.delegate=self; self.myScrollView.multipleTouchEnabled=YES; self.myScrollView.minimumZoomScale=1.0; self.myScrollView.maximumZoomScale=10.0; [self.view addSubview:self.myScrollView]; UIImage *_image = [UIImage imageNamed:@"image.jpg"]; CGFloat imageView_X = (_image.size.width > self.view.frame.size.width) ? self.view.frame.size.width : _image.size.width; CGFloat imageView_Y; CGFloat origin; if(_image.size.width > self.view.frame.size.width){ origin = self.view.frame.size.width/_image.size.width; imageView_Y = _image.size.height*origin; } myImageView = [[UIImageView alloc]initWithFrame:CGRectMake((self.view.frame.size.width-imageView_X)/2, (self.view.frame.size.height-imageView_Y)/2, imageView_X, imageView_Y)]; if(self.myImageView==nil) { UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; self.myImageView=imageView; [imageView release]; } // [myImageView setImage:_image]; UIImage *originImage=[[UIImage alloc]initWithCGImage:_image.CGImage]; [myImageView setImage:originImage];// [myImageView setFrame:CGRectMake(0, 0, _image.size.width, _image.size.height)]; [self.myScrollView addSubview:self.myImageView]; UIButton *closeBtn = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 50, 50)]; [closeBtn setBackgroundColor:[UIColor redColor]]; [closeBtn setAlpha:0.5]; [closeBtn addTarget:self action:@selector(closeEvent:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:closeBtn]; [closeBtn release]; // UIView *backView = [[UIView alloc] initWithFrame:CGRectInset(self.view.frame, 5, 5)];// backView.alpha = 0.5;// backView.backgroundColor = [UIColor blackColor];//// [self.view addSubview:backView];// // UIImage* image=[UIImage imageNamed:@"image.jpg"];// MoveScaleImageView*fileContent = [[MoveScaleImageView alloc]initWithFrame:CGRectMake(0, 44, 320, 436)];// [fileContent setImage:image];// //// [backView addSubview:fileContent];// [self.view addSubview:fileContent];// // [backView release];// [fileContent release];}-(void)closeEvent:(id)sender{ [self.myImageView setHidden:YES]; [self.myScrollView setHidden:YES];}#pragma mark UIScrollView delegate methods//实现图片的缩放-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ NSLog(@"**************viewForZoomingInScrollView"); return self.myImageView;}//实现图片在素芳过程中居中- (void)scrollViewDidZoom:(UIScrollView *)scrollView{ CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width)?(scrollView.bounds.size.width - scrollView.contentSize.width)/2 : 0.0; CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height)?(scrollView.bounds.size.height - scrollView.contentSize.height)/2 : 0.0; self.myImageView.center = CGPointMake(scrollView.contentSize.width/2 + offsetX,scrollView.contentSize.height/2 + offsetY);}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view.}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation == UIInterfaceOrientationPortrait);}@end