网络图片放大缩小

点击图片后,跳至图片浏览器,使用两个UIScrollView,用它的代理方法

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

实现放在UIScrollView的子控件放大缩小效果,使用SDWebImage加载网络图片。


附上代码

.h

#import <UIKit/UIKit.h>


@interface ShowImageViewViewController : UIViewController

@property(strong,nonatomic)NSArray * imageArray;

//- (CGRect)zoomRectForScale:(float)scale inView:(UIScrollView*)scrollView withCenter:(CGPoint)center;


@end



.m

#import "ShowImageViewVieController.h"

#import "UIImageView+WebCache.h"


@interface ShowImageViewViewController ()<UIScrollViewDelegate>{

    CGFloat offset;

    UIScrollView * singleImageScrollView;

}

@property(nonatomic,strong)UIScrollView * imageScrollView;



@end


@implementation ShowImageViewVieController


- (void)viewDidLoad {

    [super viewDidLoad];

    [self createImageView];

    [self createImageScrollView];

}


-(void)createImageScrollView

{

    self.view.backgroundColor = [UIColor blackColor];

    offset = 0.0;

    

    self.imageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

    self.imageScrollView.backgroundColor = [UIColor clearColor];

    self.imageScrollView.scrollEnabled = YES;                   //可以滑动

    self.imageScrollView.pagingEnabled = YES;                   //分页滑动

    self.imageScrollView.delegate = self;                       //代理

    self.imageScrollView.showsVerticalScrollIndicator = NO;     //隐藏竖向滑动条

    self.imageScrollView.showsHorizontalScrollIndicator = NO;   //隐藏横向滑动条

    self.imageScrollView.contentSize = CGSizeMake(self.view.frame.size.width*_imageArray.count, self.view.frame.size.height);

    

    for (int i = 0; i<_imageArray.count; i++){

        

        singleImageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(self.view.frame.size.width*i, 0, self.view.frame.size.width, self.view.frame.size.height)];

        singleImageScrollView.showsVerticalScrollIndicator = NO;    //隐藏竖向滑动条

        singleImageScrollView.showsHorizontalScrollIndicator = NO//隐藏横向滑动条

        singleImageScrollView.center = CGPointMake(self.view.frame.size.width/2+self.view.frame.size.width*i, self.view.frame.size.height/2);

        singleImageScrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);

        singleImageScrollView.delegate = self;

        singleImageScrollView.minimumZoomScale = 1.0;

        singleImageScrollView.maximumZoomScale = 3.0;

        [singleImageScrollView setZoomScale:1.0];

        

        NSString * imageStr = [_imageArray objectAtIndex:i];

        NSString * str = [imageStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSURL *imageUrl = [NSURL URLWithString:str];

        

        UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height)];

        //按照一定比例缩放图片

        //使用UIViewContentModeScaleAspectFit才可以正常显示,否则总是铺满全屏显示的

        [imageView setContentMode:UIViewContentModeScaleAspectFit];

        [imageView sd_setImageWithURL:imageUrl placeholderImage:[UIImage imageNamed:@"图片加载"]];

        imageView.userInteractionEnabled = YES;

        [singleImageScrollView addSubview:imageView];

        [self.imageScrollView addSubview:singleImageScrollView];

    }

    [self.view addSubview:self.imageScrollView];

}


#pragma mark - ScrollView delegate

//实现放大缩小

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

    for (UIView *v in scrollView.subviews){

        return v;

    }

    return nil;

}


//恢复原来显示的比例

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    if (scrollView == self.imageScrollView){

        CGFloat x = scrollView.contentOffset.x;

        if (x==offset){

            

        }

        else {

            offset = x;

            for (UIScrollView *scroll in scrollView.subviews){

                if ([scroll isKindOfClass:[UIScrollView class]]){

                    [scroll setZoomScale:1.0];

                }

            }

        }

    }

}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值