layoutAttributesForElementsInRect: Logging only once for UICollectionViewFlowLayout cache mismatched

本文解决了UICollectionView自定义布局中出现的缓存帧不匹配问题。通过复制UICollectionViewFlowLayout返回的对象,避免了因修改原始属性而导致的警告信息。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

转自:http://codecloud.net/14916.html

最近使用UICollectionView自定义布局的时候报了个提示,看着特别烦

提示:
2016-07-08 16:26:38.346 YiTong[27847:733016] Logging only once for UICollectionViewFlowLayout cache mismatched frame
2016-07-08 16:26:38.347 YiTong[27847:733016] UICollectionViewFlowLayout has cached frame mismatch for index path <NSIndexPath: 0xc000000003c00016> {length = 2, path = 0 - 30} - cached value: {{5, 1330}, {202, 24}}; expected value: {{26.5, 1330}, {202, 24}}
2016-07-08 16:26:38.347 YiTong[27847:733016] This is likely occurring because the flow layout subclass YTCategoryCollectionViewFlowLayout is modifying attributes returned by UICollectionViewFlowLayout without copying them

之前的代码:

- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
     
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];  
}

看提示最后一句…without copying them
修改后的代码:

- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
     
NSArray *attributes = [[NSArray alloc] initWithArray:[super layoutAttributesForElementsInRect:rect] copyItems:YES];
}

修改后就不报提示了

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值