UICollectionView(QMUILayoutCell)

@interface UICollectionView (QMUILayoutCell)

以下接口可在“sizeForItemAtIndexPath”里面调用来计算高度 通过构建一个cell模拟真正显示的cell,给cell设置真实的数据,然后再调用cell的sizeThatFits:来计算高度 也就是说我们自定义的cell里面需要重写sizeThatFits:并返回正确的值

  • Undocumented

    Declaration

    Objective-C

    - (CGFloat)qmui_heightForCellWithIdentifier:(NSString *)identifier cellClass:(Class)cellClass itemWidth:(CGFloat)itemWidth configuration:(void (^)(__kindof UICollectionViewCell *cell))configuration;

    Swift

    func qmui_heightForCell(withIdentifier identifier: String!, cellClass: AnyClass!, itemWidth: CGFloat, configuration: ((UICollectionViewCell?) -> Void)!) -> CGFloat
  • Undocumented

    Declaration

    Objective-C

    - (CGFloat)qmui_heightForCellWithIdentifier:(NSString *)identifier cellClass:(Class)cellClass itemWidth:(CGFloat)itemWidth cacheByIndexPath:(NSIndexPath *)indexPath configuration:(void (^)(__kindof UICollectionViewCell *cell))configuration;

    Swift

    func qmui_heightForCell(withIdentifier identifier: String!, cellClass: AnyClass!, itemWidth: CGFloat, cacheBy indexPath: IndexPath!, configuration: ((UICollectionViewCell?) -> Void)!) -> CGFloat
  • Undocumented

    Declaration

    Objective-C

    - (CGFloat)qmui_heightForCellWithIdentifier:(NSString *)identifier cellClass:(Class)cellClass itemWidth:(CGFloat)itemWidth cacheByKey:(id<NSCopying>)key configuration:(void (^)(__kindof UICollectionViewCell *cell))configuration;

    Swift

    func qmui_heightForCell(withIdentifier identifier: String!, cellClass: AnyClass!, itemWidth: CGFloat, cacheByKey key: NSCopying!, configuration: ((UICollectionViewCell?) -> Void)!) -> CGFloat
  • 搭配 QMUICellHeightCache,清除整个列表的所有高度缓存(包括 key 和 indexPath),注意请不要直接使用 self.qmui_keyedHeightCache 或 self.qmui_indexPathHeightCache 的 invalidate 方法,因为一个 UICollectionView 在不同宽度下会有不同的 QMUICellHeightCache/QMUICellHeightIndexPathCache,直接使用那两个 cache 的 invalidate 方法只能刷新当前的 cache,无法刷新其他宽度下的 cache。

    Declaration

    Objective-C

    - (void)qmui_invalidateAllHeight;

    Swift

    func qmui_invalidateAllHeight()