UITableViewCell API详解

#import 
#import 
#import 
#import 
#import 
#import 

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 

//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

你可能感兴趣的:(UITableViewCell API详解)