UITableViewCellStyle:
UITableViewCellStyleDefault
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
以上四种比较简单的系统自带样式,在简单需求面前可以满足要求,比较复杂的界面布局,需要用户自定义cell,继承自UITableViewCell,重写自己的cell样式,随心所欲
UITableViewCellSeparatorStyle(cell之间的分隔线样式)
UITableViewCellSeparatorStyleNone, 无分隔线
UITableViewCellSeparatorStyleSingleLine, 单行分隔线
UITableViewCellSeparatorStyleSingleLineEtched 被侵蚀的单分隔线,目前只能在Group样式的TableView中使用
UITableViewCellSelectionStyle (cell被选中后的样式)
UITableViewCellSelectionStyleNone, 没任何变化
UITableViewCellSelectionStyleBlue, 变蓝
UITableViewCellSelectionStyleGray, 变灰
UITableViewCellSelectionStyleDefault 默认的
UITableViewCellEditingStyle(cell的编辑样式)
UITableViewCellEditingStyleNone, 不可编辑
UITableViewCellEditingStyleDelete, 删除
UITableViewCellEditingStyleInsert 插入
[self.tableView setEditing:YES animated:YES] //用来触发
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;//设置可以编辑
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;//编辑模式为删除
}
UITableViewCellAccessoryType
UITableViewCellAccessoryNone, 无
UITableViewCellAccessoryDisclosureIndicator, 指向右边的箭头
UITableViewCellAccessoryDetailDisclosureButton 指向右边的蓝色背景圆按钮
UITableViewCellAccessoryCheckmark, 对号
UITableViewCellAccessoryDetailButton 详情按钮
UITableViewCellStateMask
UITableViewCellStateDefaultMask 默认状态
UITableViewCellStateShowingEditControlMask 正在显示编辑的状态
UITableViewCellStateShowingDeleteConfirmationMask 正在显示删除确认的状态
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier NS_AVAILABLE_IOS(3_0) NS_DESIGNATED_INITIALIZER;
UITableViewCell 的初始化方法,可以创建子view,实现cell的整体布局@property (nonatomic, readonly, strong) UIView *contentView; 如果用户想自定义cell,需要将子view添加到contentView上,以便cell在编辑模式和正常模式下子view位置正确
@property (nonatomic, strong, nullable) UIView *backgroundView; 所有view的后面,cell的背景
@property (nonatomic, strong, nullable) UIView *selectedBackgroundView; cell被选中时,如果selectedBackgroundView不为空,则会被添加到backgroundView上面,其他view的下面
子类重写以下方法,可以让cell在改变状态时改变其属性,比如删除按钮位置
- (void)willTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);
- (void)didTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);
在UITableViewCell内默认是有contentview和accessoryView这两个subview的,contentview中的subview根据不同的cell的style会使用不同的布局。contentview和其中的默认subview会根据cell的编辑状态出现的控件自动缩进,自定义cell时可以把自定义控件添加在contentview中,也可以直接添加到cell中
当进入删除编辑模式时,cell的subview有一个叫UITableViewCellDeleteConfirmationControl的subview,这代表删除按钮。可以修改该view达到修改删除按钮的位置,大小等属性。
当进入移动编辑模式时,cell的subview有一个叫UITableViewCellReorderControl的subview,这个代表移动按钮。可以修改该view达到修改移动按钮的位置,大小等属性。
当进入插入编辑模式时,cell的subview有一个叫UITableViewCellEditControl的subview,这个代表添加按钮。可以修改该view达到修改添加按钮的位置,大小等属性。