网络加载图片

2016-05-29  本文已影响63人  Minoz_min

我们有一个页面布局是这样的:最上面是一张大图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];
    }
}
上一篇下一篇

猜你喜欢

热点阅读