很多时候我们需要根据网络获取图片,通常做法是在url中拼接图片宽高,然后截取。我这里使用的是在SDWebImage的下载回调中获得图片的原始宽高,计算宽高比,然后根据固定imageview的宽度,得出不同的高度。
- 其中cell自适应高度使用了FDTemplateLayoutCell,github将近7000star。
- 废话不多说,上代码
__block CGFloat imageX = 12.0f;
// imageview的宽---宽度固定
__block CGFloat imageW = kScreenWidth - imageX * 2;
// imageview的高
__block CGFloat imageH = 0;
// 间距
__block CGFloat margin = 15.0f;
// 循环创建imageView
for (NSInteger i = 0; i<count; i++) {
__block CGFloat imageY = 0;
__block UIImageView *bigImageView = [[UIImageView alloc]init];
[bigImageView sd_setImageWithURL:self.lookEvaModel.image[i] placeholderImage:[UIImage imageNamed:@"evaDetails_placholder"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// 原始图片的宽
CGFloat imageYW = CGImageGetWidth(image.CGImage);
// iamgeView的H = imageView的宽 / (原始图片的宽 / 原始图片的高)---根据宽高比得出imageView的宽
imageH = imageW / (imageYW / CGImageGetHeight(image.CGImage));
imageY = margin*(i+1) + imageH * i;
bigImageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
}];
[self.contentView addSubview:bigImageView];
}
// 动态适应行高,返回cell高度
wself.cellHeight = count * imageH + (count - 1) * margin;