您的位置:首页 > 移动开发 > IOS开发

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

2014-07-09 12:05 381 查看
直接上代码

//

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