SDWebImage加载UIButton图片尺寸不对的问题

SDWebImage可以设置UIButton的Image,方法是

[menuButton sd_setImageWithURL:[NSURL URLWithString:imageURL] forState:UIControlStateNormal];

但是,如果imageURL的图像,如果是2x/3x的,我们会发现这样的设置方式,会导致Button的图像尺寸不对。

image

实际上,sd_setImageWithURL的方式是默认按照1x来加载图片的。SDWebImage也无法判断你的图像是多少x的。

我们需要额外做一个处理。

            [menuButton sd_setImageWithURL:[NSURL URLWithString:imageURL] forState:UIControlStateNormal completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                UIImage *refined = [UIImage imageWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];
                [menuButton setImage:refined forState:UIControlStateNormal];
            }];

这里scale需要和提供图片的人员商定(一般是3,这样不同设备上效果最好),如果是3x的话,就填3.0。

这样出来的效果就是:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,019评论 3 119
  • 技术无极限,从菜鸟开始,从源码开始。 由于公司目前项目还是用OC写的项目,没有升级swift 所以暂时SDWebI...
    充满活力的早晨阅读 12,699评论 0 2
  • 多想回到从前, 那个无忧无虑的年纪, 四周尽是笑脸,身边都是甜言, 单纯的如一张白纸, 开心的如一只小鸟, 困了倒...
    逍遥_9353阅读 299评论 0 0
  • 小客人你好: 去年到预产期你还没有要出来的意思,过了预产期1周我被安排住进了产科,看到同病房的宝妈们人手一个宝宝,...
    池昊育阅读 202评论 2 1