cell的使用用
很相近的几种cell,控件都一样,只是约束不一样
如下图1和图2的区别:
图1.png
图2.png
可以在控制器中注册cell的重用标识中去区分。
然后在cell中去根据重用标识去设置不用的约束和设置数据。
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;
另一种情况:
image.png类似今日头条, 有几种cell。但是有一个功能就是每一种cell都可能被置顶,添加置顶标记。置顶标记的样式几种cell都是一样的,例如字体大小,颜色等。
几种cell有相同的地方,可以创建一个基础cell,多种cell都继承这个基类cell。
还有一种情况:文章类的cell, 使用系统自带的点击变灰效果不太好, 颜色太深,修改点击的效果,就可以在基类中去修改。
cell点击效果
取消cell的点击效果
cell.selectionStyle = UITableViewCellSelectionStyleNone;
设置cell的点击效果为显示一张背景图片:
self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_selection_state"]];
cell点击没效果的情况:
self.selectedBackgroundView = [[UIView alloc] init];
修改cell中的图片和文字点击效果
[self.icon setHighlightedImage:[UIImage imageNamed:@"icon_lesson_sel"]];
self.titleLabel.highlightedTextColor = [UIColor colorWithHex:0xffd579];
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
self.icon.highlighted = selected;
self.titleLabel.highlighted = selected;
}
分割线设置
去掉cell分割线
1、cell分割线顶到头
cell.separatorInset = UIEdgeInsetsMake(0, -55, 0, 0);
2、 去掉某一行的cell分割线:
原理是:使指定的这一行的cell分割线向左或向右偏移一个屏幕的距离,这样这条分割线就已到了屏幕外也就看不到了。
cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, [UIScreen mainScreen].bounds.size.width);
或
cell.separatorInset = UIEdgeInsetsMake(0, [UIScreen mainScreen].bounds.size.width, 0, 0);
3、设置整个tableView的所有cell分割线样式
//去掉整个tableView的所有cell分割线
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//设置整个tableView的所有cell分割线的长度
[self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 15, 0, 0)];
//设置分割线的颜色
self.tableView.separatorColor = [UIColor redColor];
设置cell的数据和cell的高度
- (void)setDataWithModel:(<#model类#> *)model;
- (CGFloat)heightForModel:(<#model类#> *)model;
cell的背景色
设置某些cell的背景颜色:
cell.contentView.backgroundColor = [UIColor clearColor];
这个不管用。
应该使用如下设置:
cell.backgroundColor = [UIColor clearColor];
。
网友评论