tableView 常用的属性 和方法
代码块
//tableView 的Cell 线条的偏移量
self.tableView.separatorInset = UIEdgeInsetsMake(0, SCREEN_WIDTH, 0, 0);
//点击cell后 颜色不变
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//设置tableView不可滑动
self.tableView.scrollEnabled = NO;
//滚动条不显示
self.myTableView.showsVerticalScrollIndicator = NO;
自定义的cell
如果cell需要在tableView 里注册的时候【cell 里写的东西】
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self = [[[NSBundle mainBundle] loadNibNamed:@"YCGJSouSuoCell" owner:nil options:nil]lastObject];
}
return self;
}
//cell不被点击状态 但是还是有点击事件
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//取消cell 的点击事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.selected = NO;
}
如何提高tableView的加载速度?
协议:HeightForRow和cellForRow 执行顺序?
在执行cellForRow之前,table中如果有100行,那么会执行100次HeightForRow,计算出table的内容总高度,为了让右侧滑动条显示准确
当实现estimatedHeightForRow协议以后,HeightForRow方法只会当cell加载时,才运行。
//下方协议,也是通过autoLayout实现cell高度自动匹配的
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;
}
优化tableView:
1.正确使用tableView的重用机制
2.如果显示内容为网络图片,使用框架(SD或AF)异步加载并缓存数据
3.在滚动的过程中尽量少往cell中添加控件,应该在Cell初始化(系统cell或纯代码定义cell时用initWithStyle,initWithCoder(子控件没有创建好呢)或aweakFromNib子控件已经创建好)时创建控件,如果刚开始用不上可以先hidden用上的时候显示出来
4.尽量不用或少用透明视图
5.提前计算并缓存好cell的高度,避免同一个cell高度计算好几次,用一个数组保存曾经计算过的cell的高度,如果调用计算高度的方法的时候先去数组里面取如果有就直接用,如果没有再计算并把高度保存到数组里
6.自定义绘制,直接对CAlayer进行操作 而不是对UIView,UIVIew的绘制是建立在CoreGraphics之上的 使用的是CUP,而CaLayer使用的是CPU和GPU通吃,有系统决定具体使用哪个。