ios-图片保持等比例显示

我们如果用过QQ,微博都知道如果朋友圈刷新,显示别人发的微博或者动态显示单张图片,其实宽高比是和用户上传的照片的宽高比是一样的。这样对用户的视觉效果来说是比较好了,如果我们把显示单张图片的宽高固定死了,那可能用户体验就不会太好。如果我们想显示按照比例显示的话。我们有两种方法

一种就是把图片的二进制数据下载到本地,然后再将这个二进制数据转换成图像,然后我们就能知道这个图像的宽和高了。

另外一种就是服务器后台要支持,我们去调用接口去获取每一张图片的大小,然后把界面的布局做好,然后再异步加载图片就好了。

private func cacheSingleImage(dataList:[StatusViewModel]) -> Void
    {
        
        //想要判断下载数据的长度
        var dataLength = 0
        //创建一个调度组
        let group = DispatchGroup()
        
       //遍历视图模型,判断图片是不是单张的
       for vm in dataList
       {
        //判断当前的图片是不是只有一张
         if vm.thumbnailURLs?.count != 1
         {
            continue
         }
        
         //获取图片的URL
        let url = vm.thumbnailURLs![0]
        
       
        //入组,监听后续的block
         group.enter()
        
         //如果是一张图片,我们就去下载,下载完成的操作也不需要做,因为SDWebImage会帮我们做好,下载单张图片,如果本地缓存已经存在了,同样会完成回调,然后返回
       SDWebImageManager.shared().loadImage(with: url, options: [],
        progress: nil, completed: { (image, _, _, _, _, _) in
            
               //表示单张图片下载成功
                if let img = image,
                //将image转换成png形式的二进制数据
               let data = UIImagePNGRepresentation(img)
                    
                {
                  dataLength = dataLength + data.count
                    
                  print("------")
                }
          //出组
          group.leave()
        })
        
       }
        //在这里可以做下载完成的操作
        group.notify(queue: DispatchQueue.main) {
      //输出下载了多少单张图片
      print("\(dataLength/1024)Kb")
        }
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值