您的位置:首页 > 理论基础 > 计算机网络

网络图片放大缩小

2016-01-20 16:52 423 查看
点击图片后,跳至图片浏览器,使用两个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 = CG
4000
SizeMake(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 图片 uiscrollview