美文网首页iOS
iOS 网络图片尺寸/高度自适应

iOS 网络图片尺寸/高度自适应

作者: 9d8c8692519b | 来源:发表于2017-10-11 10:52 被阅读1677次

    问题简述

    1.iOS开发中,常碰到网络图片需要做尺寸适配(使显示出来的图片不变形)
    2.最好的解决方案是:后台把图片的分辨率拼接在图片的URL地址中,我们截取获得分辨率,从而根据宽高比,来适配ImageView的尺寸。
    3.但当后台所给图片的URL地址中没有分辨率,他又不肯加时,只好我们自己来解决了。
    4.本篇将对问题 网络图片尺寸/高度自适应 做一些处理。

    解决方案一:

    方案思路:使用SDWebImage将网络图片下载完成后,在下载完成的block块里面进行图片尺寸/高度的计算、设置等。然后更新对应展示地方的约束。这种方案对于部分需求,处理的效果并不是很友好。它是先下载拿到图片 -> 再更新约束,造成最后图片显示时候的突兀。

    [_imageView sd_setImageWithURL:[NSURL URLWithString:model.summary] completed:^(UIImage *image, NSError *error, EMSDImageCacheType cacheType, NSURL *imageURL) {
            if (!error && image.size.width >0) {
                CGFloat imageScale = image.size.height/image.size.width;
                CGFloat newImageWidth = SCREEN_WIDTH - 30;
                CGFloat newImageHeight = imageScale * newImageWidth;
                weakSelf.imageViewWidth.constant = newImageWidth;
                weakSelf.imageViewHeight.constant = newImageHeight;
            }
        }];
    

    解决方案二:

    参考使用第三方开源库 XHWebImageAutoSize 的实现思路。
    方案思路:
    1.异步缓存网络图片尺寸,优先从缓存中获取图片尺寸.
    2.UITableView,UICollectionView UI动态更新.

    按照这种处理,在获取网络图片完成前。会有一个给定的固定约束。一旦网络图片被下载完成,那么图片尺寸将被缓存并可在适当时机更新界面展示。灵活性高。但核心原理与 解决方案一 相似。只是XHWebImageAutoSize 多做了一些缓存方面、数据刷新方面得处理,使得整体效果要稍好些!

    实现效果:


    ![多图尺寸/高度自适应.png] 多图尺寸/高度自适应1.png

    关注我,获取更多精彩的iOS 开发内容。
    文中提到开源库的下载: XHWebImageAutoSize下载地址

    相关文章

      网友评论

        本文标题:iOS 网络图片尺寸/高度自适应

        本文链接:https://www.haomeiwen.com/subject/tdwiyxtx.html