API--UITableViewCell API详解

#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UIView.h>
#import <UIKit/UIStringDrawing.h>
#import <UIKit/UIKitDefines.h>
#import <UIKit/UIGestureRecognizer.h>

NS_ASSUME_NONNULL_BEGIN

@class UIImage, UIColor, UILabel, UIImageView, UIButton, UITextField, UITableView, UILongPressGestureRecognizer;

//tabview的分割线的样式  tabview才能设置不属于cell的属性
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
    UITableViewCellSeparatorStyleNone,
    UITableViewCellSeparatorStyleSingleLine,
    UITableViewCellSeparatorStyleSingleLineEtched   
} __TVOS_PROHIBITED;

typedef NS_ENUM(NSInteger, UITableViewCellFocusStyle) {
    UITableViewCellFocusStyleDefault,
    UITableViewCellFocusStyleCustom
} NS_ENUM_AVAILABLE_IOS(9_0);

#define UITableViewCellStateEditingMask UITableViewCellStateShowingEditControlMask

NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableViewCell : UIView <NSCoding, UIGestureRecognizerDelegate>

//Cell的初始化方法,可以设置一个风格和标识符,风格的枚举如下:  
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier NS_AVAILABLE_IOS(3_0) NS_DESIGNATED_INITIALIZER;

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
    UITableViewCellStyleDefault,    // 默认风格,自带标题和一个图片视图,图片在左
    UITableViewCellStyleValue1,     // 只有标题和副标题 副标题在右边
    UITableViewCellStyleValue2,     // 只有标题和副标题,副标题在左边标题的下边
    UITableViewCellStyleSubtitle    // 自带图片视图和主副标题,主副标题都在左边,副标题在下
};

//在storyBoard中取出时调用
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;

//图片视图,风格允许时才会创建
@property (nonatomic, readonly, strong, nullable) UIImageView *imageView NS_AVAILABLE_IOS(3_0);   

//标题标签
@property (nonatomic, readonly, strong, nullable) UILabel *textLabel NS_AVAILABLE_IOS(3_0); 

//副标题标签
@property (nonatomic, readonly, strong, nullable) UILabel *detailTextLabel NS_AVAILABLE_IOS(3_0); 

//如果需要添加简单的View在cell上则需要添加在contentView上,
@property (nonatomic, readonly, strong) UIView *contentView;

//背景视图
@property (nonatomic, strong, nullable) UIView *backgroundView;

//选中状态下的背景视图
@property (nonatomic, strong, nullable) UIView *selectedBackgroundView;

//多选选中时的背景视图
@property (nonatomic, strong, nullable) UIView *multipleSelectionBackgroundView NS_AVAILABLE_IOS(5_0);
cell的标识符
@property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier;

//当被重用的cell将要显示时,会调用这个方法,这个方法最大的用武之地是当你自定义的cell上面有图片时,如果产生了重用,图片可能会错乱(当图片来自异步下载时及其明显),这时我们可以重写这个方法把内容抹掉。
//必须调用super方法
- (void)prepareForReuse;  
                                                      
//cell被选中时的风格,枚举如下:
@property (nonatomic) UITableViewCellSelectionStyle   selectionStyle;    

typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
    UITableViewCellSelectionStyleNone,//无
    UITableViewCellSelectionStyleBlue,//蓝色
    UITableViewCellSelectionStyleGray,//灰色
    UITableViewCellSelectionStyleDefault//默认 为蓝色
};

//设置cell是否选中状态 状态:默认不选中,没有动画
@property (nonatomic, getter=isSelected) BOOL         selected;         

//设置cell是否高亮状态
@property (nonatomic, getter=isHighlighted) BOOL      highlighted;   

//与上面的两个属性对应
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;                    
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated;               

//获取cell的编辑状态,枚举如下
@property (nonatomic, readonly) UITableViewCellEditingStyle editingStyle;     
typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {
    UITableViewCellEditingStyleNone,//无编辑
    UITableViewCellEditingStyleDelete,//删除编辑
    UITableViewCellEditingStyleInsert//插入编辑
};

// 设置是否显示cell自带的自动排序控件
@property (nonatomic) BOOL                            showsReorderControl;        
//注意:要让cell实现拖动排序的功能,除了上面设置为YES,还需实现代理中的如下方法:
/*-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
}*/

//设置编辑状态下是否显示缩进
@property (nonatomic) BOOL                            shouldIndentWhileEditing;  

//设置附件视图的风格(cell最右侧显示的视图) 枚举如下:
@property (nonatomic) UITableViewCellAccessoryType    accessoryType;
     
typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {
    UITableViewCellAccessoryNone,                   // 没有视图
    UITableViewCellAccessoryDisclosureIndicator,    // cell右侧显示一个灰色箭头
    UITableViewCellAccessoryDetailDisclosureButton, // 显示详情符号和灰色箭头
    UITableViewCellAccessoryCheckmark,              // cell右侧显示蓝色对号
    UITableViewCellAccessoryDetailButton  // cell右侧显示一个详情符号
};

//附件视图   
@property (nonatomic, strong, nullable) UIView       *accessoryView;         

//cell编辑时的附件视图风格
@property (nonatomic) UITableViewCellAccessoryType    editingAccessoryType;  

//cell编辑时的附件视图    
@property (nonatomic, strong, nullable) UIView       *editingAccessoryView;      

//设置内容区域的缩进级别,默认为0
@property (nonatomic) NSInteger                       indentationLevel;  

//设置每个级别的缩进宽度 默认为10.0
@property (nonatomic) CGFloat                         indentationWidth;  

//设置分割线的偏移量
@property (nonatomic) UIEdgeInsets                    separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR __TVOS_PROHIBITED; 

//设置是否编辑状态
@property (nonatomic, getter=isEditing) BOOL          editing;                    
- (void)setEditing:(BOOL)editing animated:(BOOL)animated;

//返回是否目前正在显示删除按钮
@property(nonatomic, readonly) BOOL                   showingDeleteConfirmation; 

//设置焦点类型
@property (nonatomic) UITableViewCellFocusStyle       focusStyle NS_AVAILABLE_IOS(9_0) UI_APPEARANCE_SELECTOR;
typedef NS_ENUM(NSInteger, UITableViewCellFocusStyle) {
    UITableViewCellFocusStyleDefault,//当它变得集中时,单元格将以标准的系统定义的方式改变其外观。这是默认的焦点样式。
    UITableViewCellFocusStyleCustom//当它聚焦时,单元格不会自动改变其外观。指定此样式可以为单元格创建自己的自定义外观。
    //建议您通过子类化UITableViewCell并覆盖didUpdateFocusInContext:withAnimationCoordinator:来创建自定义的单元格。
} NS_ENUM

//cell状态将要转换时调用的函数,可以在子类中重写
- (void)willTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);

//cell状态已经转换时调用的函数,可以在子类中重写,状态枚举如下:
- (void)didTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);
 typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
    UITableViewCellStateDefaultMask                     = 0,//默认状态
    UITableViewCellStateShowingEditControlMask          = 1 << 0,//编辑状态
    UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1//确认删除状态
 };
@end

@interface UITableViewCell (UIDeprecated)

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(nullable NSString *)reuseIdentifier NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;

//注意:下面这些方法已经全部在IOS3.0后被废弃了,虽然还有效果,但是会被警告
//设置标题
@property (nonatomic, copy, nullable)   NSString *text NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;

//设置字体                       
@property (nonatomic, strong, nullable) UIFont   *font NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;  

//设置对其模式                    
@property (nonatomic) NSTextAlignment   textAlignment NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;   

//设置断行模式           
@property (nonatomic) NSLineBreakMode   lineBreakMode NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;       
     
//设置字体颜色
@property (nonatomic, strong, nullable) UIColor  *textColor NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;     

//设置选中状态下的字体颜色
@property (nonatomic, strong, nullable) UIColor  *selectedTextColor NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;     
     
//设置图片
@property (nonatomic, strong, nullable) UIImage  *image NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;   

//设置选中状态时的图片    
@property (nonatomic, strong, nullable) UIImage  *selectedImage NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;            

// 设置编辑的时候是否隐藏附件视图,默认为yes
@property (nonatomic) BOOL              hidesAccessoryWhenEditing NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;  

// 使用-tableView:commitEditingStyle:forRowAtIndexPath:或者-tableView:accessoryButtonTappedForRowWithIndexPath: instead
@property (nonatomic, assign, nullable) id        target NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;                      
@property (nonatomic, nullable) SEL               editAction NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;              
@property (nonatomic, nullable) SEL               accessoryAction NS_DEPRECATED_IOS(2_0, 3_0) __TVOS_PROHIBITED;            

@end

NS_ASSUME_NONNULL_END

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

推荐阅读更多精彩内容