我目前正在玩一些新 UICollectionView 的演示项目。大多数演示都覆盖layoutAttributesForItemAtIndexPath
了那里的子类。但是在该示例之一中从未调用该方法。
从Apple docs我知道我必须覆盖layoutAttributesForItemAtIndexPath
我无法弄清楚在哪种情况下调用此方法。
这种方法仅适用于特殊情况吗?
我目前正在玩一些新 UICollectionView 的演示项目。大多数演示都覆盖layoutAttributesForItemAtIndexPath
了那里的子类。但是在该示例之一中从未调用该方法。
从Apple docs我知道我必须覆盖layoutAttributesForItemAtIndexPath
我无法弄清楚在哪种情况下调用此方法。
这种方法仅适用于特殊情况吗?
也许您可以在 Apple 文档中找到,子类必须同时覆盖 layoutAttributesForElementsInRect 和 layoutAttributesForItemAtIndexPath 阅读:
layoutAttributesForElementsInRect:
Returns the layout attributes for all of the cells and views in the specified rectangle.
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
Parameters
rect
The rectangle (specified in the collection view’s coordinate system) containing the target views.
Return Value
An array of UICollectionViewLayoutAttributes objects representing the layout information for the cells and views. The default implementation returns nil.
Discussion
Subclasses must override this method and use it to return layout information for all items whose view intersects the specified rectangle. Your implementation should return attributes for all visual elements, including cells, supplementary views, and decoration views.
When creating the layout attributes, always create an attributes object that represents the correct element type (cell, supplementary, or decoration). The collection view differentiates between attributes for each type and uses that information to make decisions about which views to create and how to manage them.
Availability
Available in iOS 6.0 and later.
Declared In
UICollectionViewLayout.h