NT_iOS笔记—iOS图片显示1_图片放大缩小

来源:互联网 发布:淘宝有哪些靠谱的日代 编辑:程序博客网 时间:2024/06/05 11:44
<span style="font-size:18px;"></span>

文章内图片点击后需要单独显示有木有、需要支持放大缩小有木有、需要支持横屏显示有木有....

图片放大缩小结合UIImageViewUIScrollVIew实现。

通过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
原创粉丝点击