我们有一个页面布局是这样的:最上面是一张大图UIImageView
,中间是一些不定数量的UIButton
小标签,然后是UITableView
列表页,但是这个图片是可有可无的,为了适配页面,我就想先获取到图片,然后根据图片的大小来创建UIImageView
,然后我就想怎么能先获取到网络图片呢,然后就找到了这个方法[UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
我成功得获取到了图片,然后根据图片来创建UIImageView
,可是愚昧无知的我不知道这个方法是在主线程同步加载图片的,网络好的时候是没有问题的,但是在网络不好的情况下,会导致整个页面都特别卡动不了。解决方法如下:
- (void)refreshHeaderView
{
NSURL *url = [NSURL URLWithString:[self.categories firstObject].largePicture];
if (!IsNilOrNull(url.absoluteString)) {
[self.imageViewHeader sd_setImageWithURL:url completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
dispatch_async(dispatch_get_main_queue(), ^{
self.imageViewHeader.height = (image.size.height * WidthScreen) / image.size.width;
self.imageViewHeader.image = image;
[self haveImageView];
});
}];
}else {
[self haveImageView];
}
}