UICollectionViewCell.h


#if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UICollectionViewCell.h>)
//
//  UICollectionViewCell.h
//  UIKit
//
//  Copyright (c) 2011-2018 Apple Inc. All rights reserved.
//

#import <UIKit/UIView.h>
#import <UIKit/UIKitDefines.h>
#import <UIKit/UICollectionView.h>

NS_ASSUME_NONNULL_BEGIN

@class UICollectionViewLayout;
@class UICollectionView;
@class UICollectionViewLayoutAttributes;
@class UILongPressGestureRecognizer;




/* Cell拖动状态 <枚举> */
typedef NS_ENUM(NSInteger, UICollectionViewCellDragState) {
    UICollectionViewCellDragStateNone,      /// Cell没有被拖动
    UICollectionViewCellDragStateLifting,   /// Cell正在拖动
    UICollectionViewCellDragStateDragging   /// Cell已经开始被拖动(处于“拖动”状态的单元格留下“幻影”外观以表示拖动从哪里开始)
} API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos, watchos);





#pragma mark - 可复用的集合视图 Class
#pragma mark -
/*
 - UICollectionViewCell的父类
 */
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionReusableView : UIView
/// 获取 重用标识符
@property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier;
// 准备重复使用(复用Cell之前会调用此方法,一般用来重置默认数据,不要设置新数据;需要调回父类)
- (void)prepareForReuse;

/**
 自定义布局属性应用于视图

 @param layoutAttributes 要应用的布局属性
 
 - 在视图添加到集合视图之后且重用队列返回视图之前调用
 - 只在属性更改时调用,由-isEqual:定义
 - 如果布局对象支持自定义布局属性,则可以使用此方法将这些属性应用于视图. 在这种情况下,layoutAttributes参数应包含UICollectionViewLayoutAttributes的子类的实例,您不需要重写此方法以支持UICollectionViewLayoutAttributes类的标准布局属性,集合视图自动应用这些属性
 */
- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes;

/* 重写这些方法为特定布局提供自定义UI */
// 告诉View集合视图的布局对象即将更改(此方法的默认实现不执行任何操作,子类可以重写此方法不回调父类,并使用它来准备布局的更改)
- (void)willTransitionFromLayout:(UICollectionViewLayout *)oldLayout toLayout:(UICollectionViewLayout *)newLayout;
// 告诉View集合视图的布局对象已经更改
- (void)didTransitionFromLayout:(UICollectionViewLayout *)oldLayout toLayout:(UICollectionViewLayout *)newLayout;
/**
 使单元格有机会修改布局对象提供的属性

 @param layoutAttributes 布局对象提供的属性(这些属性表示布局要应用于单元格的值)
 @return 应用于单元格的最终属性
 
 - 此方法的默认实现调整大小值以适应自调整单元格所做的更改;
 - 子类可以覆盖此方法并使用它来调整其他布局属性(如果您覆盖此方法并希望调整单元格大小,请先调用super并对返回的属性进行自定义修改)
 */
- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes NS_AVAILABLE_IOS(8_0);
@end





#pragma mark - UICollectionViewCell Class
#pragma mark -
/*
 - 布局子视图需要添加到 ContentView 上
 - 除 ContentView 外,Cell还管理两个背景视图,以显示处于选定/未选定状态的Cell
 - 不用单独实例化Cell,使用集合视图注册(或用 Xib 注册);如果注册后需要新的Cell可以调用集合视图的 dequeueReusableCellWithReuseIdentifier:forIndexPath: 方法从缓存池中取出
 */
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionViewCell : UICollectionReusableView

/// 内容视图(用于承载子视图)
@property (nonatomic, readonly) UIView *contentView;
/// 设置 Cell是否选中
@property (nonatomic, getter=isSelected) BOOL selected;
/// 设置 Cell是否高亮
@property (nonatomic, getter=isHighlighted) BOOL highlighted;

/**
 Cell已经开始拖动

 @param API_UNAVAILABLE 拖动状态
 
 - 修改此方法可以改变拖动时的特效
 - 可选择性回调父类
 */
- (void)dragStateDidChange:(UICollectionViewCellDragState)dragState API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos, watchos);

// 设置 背景视图(视图层级在所有视图的最下层)
@property (nonatomic, strong, nullable) UIView *backgroundView;
// 设置 选中背景视图(如果与backgroundView不同,它将被放置在背景视图上方并在选择中进行动画处理)
@property (nonatomic, strong, nullable) UIView *selectedBackgroundView;
@end





NS_ASSUME_NONNULL_END

#else
#import <UIKitCore/UICollectionViewCell.h>
#endif

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容