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实现图片的缩放和居中显示的更多相关文章
- ios 改变图片大小缩放方法
http://www.cnblogs.com/zhangdadi/archive/2012/11/17/2774919.html http://bbs.csdn.net/topics/39089858 ...
- NPOI 图片在单元格等比缩放且居中显示
NPOI导出的图片默认是在单元格左上方,这使得图片在单元格显示得很难看.居中,且等比缩放,才是图片在单元格上的完美展示. /// <summary> /// 图片在单元格等比缩放居中显示 ...
- CSS图片Img等比例缩放且居中显示
常用来做图片放大显示的遮罩层imgScale HTML <div id="imgScale" > <img src=""> </d ...
- 用<center/>标签实现markdown 图片文字等内容居中显示
markdown中,文字居中的方式是借助了html标签<center></center>的支持 示例  { var target_w ...
- 纯JS实现图片预览与等比例缩放和居中
最近做项目时有一个需求,广告位图片上传时要预览,并且要等比例缩放和居中.已经保存的广告位图片显示时也要等比例缩放和居中.我使用了下面的代码实现,不过可能有一些小问题. <!DOCTYPE HTM ...
- css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)
1.img 图片内容在不同分辨率下居中显示(如果隐藏多余,在img外面套一个div 设定overflow: hidden.div的大小就是img显示区域的大小) <!DOCTYPE html& ...
随机推荐
- C#泛型(C#_编程指南)CSDN学习整理笔记
1.1. 泛型概述 2.0版C#语言和公共语言运行时(CLR)中增加了泛型.泛型将类型参数的概念引入.NETFramework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定 ...
- 重构19-Extract Factory Class(提取工厂类)
在代码中,通常需要一些复杂的对象创建工作,以使这些对象达到一种可以使用的状态.通常情况下,这种创建不过是新建对象实例,并以我们需要的方式进行工作.但是,有时候这种创建对象的需求会极具增长,并且混淆了创 ...
- WebStrom9 体验nodejs
之前就有体验过 WebStrom8.0.3 版本,确实不错. 最喜欢的是集成了Terminal 很方便的使用NPM,今天装上发现 Terminal 死活打不上字.什么原因! WebStrom9 在wi ...
- Java Scoket编程
Java Scoket编程 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位, ...
- jquery plugins —— datatables 搜索后汇总
网上的例子 http://datatables.club/example/plug-ins/api.html只能对当前页面或所有数据进行汇总,不能对搜索结果数据汇总. 以下是对datatables自带 ...
- hdu-5686 Problem B(斐波那契数列)
题目链接: Problem B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- UISearchDisplayController隐藏navigationBar需注意
不能调用self.navigationController.navigationBar.hidden = YES: 调用此代码的话,你隐藏了navigationBar搜索展示控制器就拿不到导航条:就会 ...
- 304 CORS
304响应, CORS问题: 没有 Access-Control-Allow-Origin 这个头信息时,以前次返回的200请求为准. 示例:可能已被删除 http://7af3zm.com1.z0. ...
- ASP.NET MVC 4 SimpleMembership Provider (1)
新的ASP.NET MVC 4.0 提供了一个新的Membership Provider,叫SimpleMembership. 首先,我们建立一个新的solution 首先我们先看一下web.conf ...
- Android微信支付SDK开发笔记
一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki ...