李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

时间:2024-04-19 19:33:56

 李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

 源码: 

//

//  ViewController.m

//  08-九宫格扩展

//

//  Created by 李洪强 on 15/6/21.

//  Copyright (c) 2015年 李洪强. All rights reserved.

//

#define kWIDTH [UIScreen mainScreen].bounds.size.width

#define kHEIGHT [UIScreen mainScreen].bounds.size.height

#define kMARGIN 3

#define kROWS 5

#define kCOL 3

#define kNUMBERS 100

#import "ViewController.h"

#import "UIImageView+WebCache.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

NSLog(@"%@",path);

NSLog(@"viewDidLoadB");

// Block 闭包 - 从函数外部可以访问函数内部的变量.

// 每一个格子的宽/高

CGFloat imageW = (kWIDTH - kMARGIN*(kCOL +1))/kCOL;

CGFloat imageH = (kHEIGHT - kMARGIN*(kROWS +1))/kROWS;

for (int i = 0; i < 15; i++) {

// 确定格子所在的行和列

int col = i % kCOL;

int row = i / kCOL;

// 确定每一个格子的X和Y

CGFloat imageX = kMARGIN + (kMARGIN + imageW)*col;

CGFloat imageY = kMARGIN + (kMARGIN + imageH)*row;

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageW, imageH)];

imageView.backgroundColor = [UIColor greenColor];

NSString *urlString = [NSString stringWithFormat:@"http://images.cnblogs.com/cnblogs_com/kenshincui/613474/o_%d.jpg",i];

NSURL *url = [NSURL URLWithString:urlString];

[self.view addSubview:imageView];

[imageView sd_setImageWithURL:url placeholderImage:nil options:SDWebImageProgressiveDownload progress:^(NSInteger receivedSize, NSInteger expectedSize) {

// 设置进度条

//            // 创建一个进度条

//            UIProgressView *progress = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 0, imageW, 2)];

//            // 设置进度条的值

//            progress.progress = (double)receivedSize/expectedSize;

//            // 设置进度条的颜色

//            progress.tintColor = [UIColor redColor];

//

//            [imageView addSubview:progress];

UIView *progressView = [[UIView alloc] init];

progressView.backgroundColor = [UIColor redColor];

CGFloat width = (double)receivedSize/expectedSize *imageW;

progressView.frame = CGRectMake(0, 0, width, 2);

[imageView addSubview:progressView];

} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

//完成回调

NSLog(@"执行完毕v");

}];

}

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end