警告:UICollectionViewFlowLayout缓存了索引路径'abc'的帧不匹配 [英] Warning: UICollectionViewFlowLayout has cached frame mismatch for index path 'abc'
本文介绍了警告:UICollectionViewFlowLayout缓存了索引路径'abc'的帧不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是导致警告的代码:
private override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
let attributes = super.layoutAttributesForItemAtIndexPath(indexPath)
let distance = CGRectGetMidX(attributes!.frame) - self.midX;
var transform = CATransform3DIdentity;
transform = CATransform3DTranslate(transform, -distance, 0, -self.width);
attributes!.transform3D = CATransform3DIdentity;
return attributes
}
控制台还打印:
这可能是因为流布局xyz正在修改UICollectionViewFlowLayout返回的属性而不复制它们。
This is likely occurring because the flow layout "xyz" is modifying attributes returned by UICollectionViewFlowLayout without copying them.
如何修复此警告?
推荐答案
这可能是因为流布局xyz正在修改UICollectionViewFlowLayout返回的属性而不复制它们
This is likely occurring because the flow layout "xyz" is modifying attributes returned by UICollectionViewFlowLayout without copying them
当然,这就是什么你正在做:
And sure enough, that's just what you are doing:
private override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
let attributes = super.layoutAttributesForItemAtIndexPath(indexPath)
let distance = CGRectGetMidX(attributes!.frame) - self.midX;
var transform = CATransform3DIdentity;
transform = CATransform3DTranslate(transform, -distance, 0, -self.width);
attributes!.transform3D = CATransform3DIdentity;
return attributes
}
我希望如果您只是说:
let attributes =
super.layoutAttributesForItemAtIndexPath(indexPath).copy()
as! UICollectionViewLayoutAttributes
或类似的,问题将消失。
or similar, the problem will go away.
这篇关于警告:UICollectionViewFlowLayout缓存了索引路径'abc'的帧不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文