NT_iOS笔记—iOS图片显示1_图片放大缩小
来源:互联网 发布:淘宝有哪些靠谱的日代 编辑:程序博客网 时间:2024/06/05 11:44
<span style="font-size:18px;"></span>
文章内图片点击后需要单独显示有木有、需要支持放大缩小有木有、需要支持横屏显示有木有....
图片放大缩小结合UIImageView和UIScrollVIew实现。
通过UIScrollView的方法
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
来获取放大缩小比例然后改变UIScrollView的zoomScale值来实现。
<span style="font-size:18px;">//// NTImageView.h// NTCoreTextReader//// Created by liying on 14-7-3.// Copyright (c) 2014年 liying. All rights reserved.//#import <UIKit/UIKit.h>@class NTImageView;@protocol NTImageViewDelegate <NSObject>@required-(void)closeTheImageView;@end@interface NTImageView : UIScrollView<UIScrollViewDelegate>{ CGFloat imageValue;}@property (nonatomic, strong)NSString *imagePath;@property (nonatomic, strong)UIImageView *imageView;@property (nonatomic, assign)id idelegate;@property (nonatomic, strong)UIImage *image;@property (nonatomic, assign)CGRect imageRect;-(void)ResetView;-(void)changeImageView:(UIImageView *)imageview;@end</span></span>
<span style="font-size:18px;">//// NTImageView.m// NTCoreTextReader//// Created by liying on 14-7-3.// Copyright (c) 2014年 liying. All rights reserved.//#import "NTImageView.h"@implementation NTImageView- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.delegate = self; self.zoomScale=1;self.minimumZoomScale = 1;self.maximumZoomScale = 3.0;self.showsVerticalScrollIndicator = NO;self.showsHorizontalScrollIndicator = NO; self.backgroundColor=[UIColor clearColor]; } return self;}-(void)ResetView{ _imageView=[[UIImageView alloc] initWithFrame:self.frame]; if (_image) { _imageView.image=_image; } else _imageView.image=[UIImage imageWithContentsOfFile:_imagePath]; _imageView.backgroundColor=[UIColor clearColor]; [self addSubview:_imageView]; [self changeImageView:_imageView];}-(void)changeImageView:(UIImageView *)imageview{ self.zoomScale=1; if (self.frame.size.width<self.frame.size.height) { if (imageview.image.size.width>imageview.image.size.height) { if (imageview.image.size.width<self.frame.size.width) { imageview.frame = CGRectMake((self.frame.size.width-imageview.image.size.width)/2, (self.frame.size.height-imageview.image.size.height)/2, imageview.image.size.width, imageview.image.size.height); } else { imageview.frame = CGRectMake(0, (self.frame.size.height-imageview.image.size.height*self.frame.size.width/imageview.image.size.width)/2, self.frame.size.width, imageview.image.size.height*self.frame.size.width/imageview.image.size.width); } } else { if (imageview.image.size.height<self.frame.size.height) { if (imageview.image.size.width<self.frame.size.width) { imageview.frame = CGRectMake((self.frame.size.width-imageview.image.size.width)/2, (self.frame.size.height-imageview.image.size.height)/2, imageview.image.size.width, imageview.image.size.height); } else { imageview.frame = CGRectMake(0, (self.frame.size.height-imageview.image.size.height*self.frame.size.width/imageview.image.size.width)/2, self.frame.size.width, imageview.image.size.height*self.frame.size.width/imageview.image.size.width); } } else { float wid= imageview.image.size.width*self.frame.size.height/imageview.image.size.height; if (wid>self.frame.size.width) { imageview.frame = CGRectMake(0, (self.frame.size.height-imageview.image.size.height*self.frame.size.width/imageview.image.size.width)/2, self.frame.size.width, imageview.image.size.height*self.frame.size.width/imageview.image.size.width); } else { imageview.frame = CGRectMake((self.frame.size.width-wid)/2, 0, wid, self.frame.size.height); } } } } else { if (imageview.image.size.width<imageview.image.size.height) { if (imageview.image.size.height<self.frame.size.height) { imageview.frame = CGRectMake((self.frame.size.width-imageview.image.size.width)/2, (self.frame.size.height-imageview.image.size.height)/2, imageview.image.size.width, imageview.image.size.height); } else { imageview.frame = CGRectMake((self.frame.size.width-imageview.image.size.width*self.frame.size.height/imageview.image.size.height)/2, 0, imageview.image.size.width*self.frame.size.height/imageview.image.size.height, self.frame.size.height); } } else { if (imageview.image.size.height<self.frame.size.height) { if (imageview.image.size.width<self.frame.size.width) { imageview.frame = CGRectMake((self.frame.size.width-imageview.image.size.width)/2, (self.frame.size.height-imageview.image.size.height)/2, imageview.image.size.width, imageview.image.size.height); } else { imageview.frame = CGRectMake(0, (self.frame.size.height-imageview.image.size.height*self.frame.size.width/imageview.image.size.width)/2, self.frame.size.width, imageview.image.size.height*self.frame.size.width/imageview.image.size.width); } } else { float wid= imageview.image.size.width*self.frame.size.height/imageview.image.size.height; if (wid>self.frame.size.width) { imageview.frame = CGRectMake(0, (self.frame.size.height-imageview.image.size.height*self.frame.size.width/imageview.image.size.width)/2, self.frame.size.width, imageview.image.size.height*self.frame.size.width/imageview.image.size.width); } else { imageview.frame = CGRectMake((self.frame.size.width-wid)/2, 0, wid, self.frame.size.height); } } } } _imageRect=imageview.frame;}#pragma mark - UIScrollView Delegate -- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return _imageView;}- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIImageView *)view atScale:(float)scale{CGFloat zs = scrollView.zoomScale;zs = MAX(zs, 1);zs = MIN(zs, 3.0);[UIView beginAnimations:nil context:NULL];[UIView setAnimationDuration:0.3];scrollView.zoomScale = zs; imageValue=zs;[UIView commitAnimations]; if (self.contentSize.width>=self.frame.size.width&&self.contentSize.height>=self.frame.size.height) { view.center=CGPointMake(self.contentSize.width/2, self.contentSize.height/2); } else if (self.contentSize.width>=self.frame.size.width&&self.contentSize.height<=self.frame.size.height) { view.center=CGPointMake(self.contentSize.width/2, self.frame.size.height/2); } else if (self.contentSize.width<=self.frame.size.width&&self.contentSize.height>=self.frame.size.height) { view.center=CGPointMake(self.frame.size.width/2, self.contentSize.height/2); } else if (self.contentSize.width<=self.frame.size.width&&self.contentSize.height<=self.frame.size.height) { view.center=CGPointMake(self.frame.size.width/2, self.frame.size.height/2); }}#pragma mark - UITouch Delegate --(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; switch (touch.tapCount) { case 1: [self performSelector:@selector(singleTap) withObject:nil afterDelay:0.3]; break; case 2:{ [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil]; [self performSelector:@selector(doubleTap) withObject:nil afterDelay:0]; } break; default: break; }}-(void)singleTap{ self.zoomScale=1; _imageView.frame=_imageRect; [_idelegate closeTheImageView];}-(void)doubleTap{ imageValue=self.zoomScale; if (imageValue>=3.0) { imageValue=1; } else { imageValue+=0.5; } [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; self.zoomScale = imageValue; [UIView commitAnimations]; if (self.contentSize.width>=self.frame.size.width&&self.contentSize.height>=self.frame.size.height) { _imageView.center=CGPointMake(self.contentSize.width/2, self.contentSize.height/2); } else if (self.contentSize.width>=self.frame.size.width&&self.contentSize.height<=self.frame.size.height) { _imageView.center=CGPointMake(self.contentSize.width/2, self.frame.size.height/2); } else if (self.contentSize.width<=self.frame.size.width&&self.contentSize.height>=self.frame.size.height) { _imageView.center=CGPointMake(self.frame.size.width/2, self.contentSize.height/2); } else if (self.contentSize.width<=self.frame.size.width&&self.contentSize.height<=self.frame.size.height) { _imageView.center=CGPointMake(self.frame.size.width/2, self.frame.size.height/2); }}-(void)dealloc{ _imageView.image=nil; _imageView=nil;}@end</span></span>
上面的方法中加入了单击关掉图片,双击放大图片的方法。
0 0
- NT_iOS笔记—iOS图片显示1_图片放大缩小
- NT_iOS笔记—iOS图片显示2_某一个界面支持横屏()
- NT_iOS笔记—iOS图片显示3_界面的手动旋转(UIDeviceOrientation和UIInterfaceOrientation)
- NT_iOS笔记—iOS图片拉伸
- ios图片放大缩小
- Android放大缩小显示图片
- iOS 图片放大缩小动画
- ios学习笔记之八--按钮控制图片放大缩小
- iOS 图片捏合放大缩小 点击放大缩小
- Qt 显示图片 放大 缩小 移动
- Qt 显示图片 放大 缩小 移动
- Qt 显示图片 放大 缩小 移动
- JS----图片显示出来后放大缩小
- ios 根据手势放大或缩小图片
- ios 根据手势放大或缩小图片
- ios 根据手势放大或缩小图片
- ios 根据手势放大或缩小图片
- iOS点击图片放大 再点击缩小
- using thymeleaf之十一内联
- php与paypal整合方法
- Eclipse配色方案插件 真漂亮!
- MFC初始化时隐藏对话框
- 数字证书简介
- NT_iOS笔记—iOS图片显示1_图片放大缩小
- 18 m 元素集合的 n 个元素子集
- 文本框只允许输入数字,中文,字母
- typedef和#define的区别
- 今天起可以在CSDN写博客了
- pl/sql 在title中显示连接路径, 避免sql执行其他数据库中
- 『高效程序员的45个习惯:敏捷开发修炼之道』读书笔记
- Unity与Android交互
- android下ViewGroup的事件分发和处理