Widget中的一个注意事项2

我们的widget长这样:
924077-20161209172911929-1977507304.png

图片来自网络,通过SDWebImage下载后,给UIImageView赋值,没什么特别的。

问题是这样的:

在iPhone7 iPhone7 plus上,widget有时会无法显示,或者显示"无法加载"。其实这个时候widget已经crash了,如果连接Xcode会弹出这句话:

Program ended with exit code: 0
后来终于发现问题所在,widget不能使用过多内存(其实稍微多一点都不行)。这4张图片都是500左右的分辨率就已经不行了。至少iPhone7上是这样。

解决办法是这样:

每次图片下载后,不要直接将原始图片赋值给UIImageView,这样会有个内存的大幅度上涌。我先将下载的UIImage裁剪到控件合适的大小,然后再赋值给UIImageView。这样就不会出现上面的问题了。

核心代码

- (UIImage *)scaleImageToProperDetectSize:(UIImage *)srcImage{
    // 如果图片挺小的,当然不用缩小啦
    if (srcImage.size.width <= 270 && srcImage.size.height <= 270) {
        return srcImage;
    }
    // 图片比较大的情况
    CGFloat widthScaled = 0;
    CGFloat heightScaled = 0;
    if (srcImage.size.width > srcImage.size.height) {
        widthScaled = 270;
        heightScaled = srcImage.size.height * 270 / srcImage.size.width;
    } else {
        heightScaled = 270;
        widthScaled = srcImage.size.width * 270 / srcImage.size.height;
    }
    UIGraphicsBeginImageContext(CGSizeMake(widthScaled, heightScaled));
    [srcImage drawInRect:CGRectMake(0, 0, widthScaled, heightScaled)];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

转载于:https://www.cnblogs.com/zhang-chi/p/6150417.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值