#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
API--UITableViewCell API详解
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- - (CGFloat)tableView:(UITableView *)tableView estimatedHe...
- cat API 各命令详解 cat aliases 也可以查询指定的别名 cat allocation alloc...
- 最近在UItableViewCell的缓冲机制,相信很多开发者都已经清楚,假设手机屏幕一屏有6个cell,当再向上...
- 在这世界上,有的父母以身作则,教给了孩子一切优秀的品质,并给了他们最好的教育环境,却只期望孩子能够一生无忧,平安喜...
- 1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂的生活场景,卖早点的小摊贩,他给...