您的位置:首页 > 其它

我使用的Tableview 和cell

2016-05-25 11:41 232 查看

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通吃,有系统决定具体使用哪个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: