通常情况下,UILabel
的内存使用率不是很大。
然而,在小部件中,它非常重要!因为我们每个iOS扩展只能使用10MB内存。
我自己可以优化所有逻辑和模型,但问题是来自Apple的UIViews
。
UIView
的所有drawRect:
都将由光栅图片支持。所以View大小对内存消耗很重要。只是容器UIView
不使用栅格缓存。UILabel
也支持光栅图像,因为Core Text会这样做。UILabel
打破给定文本1到2的行时,即使第二行的内容非常小,它也将使用2倍的内存。因为整个内容都有光栅图像支持。UILabel
使用的内存比iPhone5多2.25倍,即使它们的视觉尺寸相同。 ((3 * 3)/(2 * 2))。UILabel
的换行将导致巨大的内存消耗。因此,iPhoneX +通常比iPhone 5需要3到4倍的内存。因此,在小部件扩展中使用多个标签对于3x缩放的iPhoneX +用户来说可能是危险的,iOS会杀死超出严格内存限制的扩展。
我试过了:
UILabel
尽可能小。 (但是,有时用户内容很重要)我希望通过保持显示的内容量来减少内存使用量。
欢迎任何建议,建议和抽象策略。
答案 0 :(得分:1)
我不知道您的iOS基本版本,但是如果您的 UILabel 是单色,您是否更改了 CALayerContentsFormat < / strong>改为 kCAContentsFormatGray8Uint ,这意味着您将 kCAContentsFormatRGBA8Uint 改为(每像素1字节)(每像素4字节)。
迅速采样:
if #available(iOS 10.0, *) {
label.layer.contentsFormat = .gray8Uint
}