iOS实现图片的缩放和居中显示

直接上代码



//



//  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

 转载自:http://blog.sina.com.cn/s/blog_9c3c519b0100za22.html

你可能感兴趣的:(ios)