iOS – 不会为某些单元格调用applyLayoutAttributes

iOS – 不会为某些单元格调用applyLayoutAttributes,第1张

概述我正在创建一个类似于iOS中的跳板屏幕的视图. (这是 this question的后续问题). 我的实现是一个集合视图,它具有使用UICollectionViewLayout的自定义布局.这个布局是根据 this answer发布的代码构建的.由于我想让我的图标摇动并在左上角有一个小删除按钮,我已经将UICollectionViewLayoutAttributes子类化了一个新属性deleteB 我正在创建一个类似于iOS中的跳板屏幕的视图. (这是 this question的后续问题).
我的实现是一个集合视图,它具有使用UICollectionVIEwLayout的自定义布局.这个布局是根据 this answer发布的代码构建的.由于我想让我的图标摇动并在左上角有一个小删除按钮,我已经将UICollectionVIEwLayoutAttributes子类化了一个新属性deletebuttonHIDden.
所有这一切都很好地协同工作.但是当我使用更多图标填充集合视图以适合一个页面时,我遇到了问题.当我进入编辑模式,并来回滚动时,我发现有些图标不再抖动了.我试着调试它,我意识到我的一些单元格没有调用applyLayoutAttributes方法.
我也尝试在方法scrollVIEwDIDScroll中调用invalIDateLayout,但这没有帮助.

有没有人知道为什么有些单元格没有应用它们的属性?

更新:
我刚刚发现Apple有一个patent用于摇晃图标.因此,实施此设计不会得到批准.因此,这个问题不再适用.

解决方法 Apple指定在子类化UICollectionVIEwLayoutAttributes时应该实现isEqual:方法.

f you subclass and implement any custom layout attributes,you must also overrIDe the inherited isEqual: method to compare the values of your propertIEs. In iOS 7 and later,the collection vIEw does not apply layout attributes if those attributes have not changed. It determines whether the attributes have changed by comparing the old and new attribute objects using the isEqual: method. Because the default implementation of this method checks only the existing propertIEs of this class,you must implement your own version of the method to compare any additional propertIEs. If your custom propertIEs are all equal,call super and return the resulting value at the end of your implementation.

我希望它会对你有所帮助.

总结

以上是内存溢出为你收集整理的iOS – 不会为某些单元格调用applyLayoutAttributes全部内容,希望文章能够帮你解决iOS – 不会为某些单元格调用applyLayoutAttributes所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存