设置单元格圆角和边框宽度会使tableview滚动速度极慢

时间:2013-03-24 21:48:37

标签: ios uitableview quartz-graphics

我想围绕我的tableview细胞的角落,使它们之间的差距更大。

我在cellForRowAtIndexPath中这样做:

static NSString* CellIdentifier = @"normal";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if(cell == nil)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];

通过调用setBorderWidth滚动tableview变得非常慢。没有它,它就像一个魅力。

那么,我怎样才能让细胞整理器变圆并更快地设置边框宽度?

2 个答案:

答案 0 :(得分:1)

我尝试了很多次以使其快速工作。但是当用于许多物体时,它的工作效果非常慢。

我能提出什么建议:

要使用背景图像,请不要使用图层属性。以here为例

或者使用tableView样式 - UITableViewStyleGrouped

在您的情况下,表格视图中的对象可能不是很多,因此在创建单元格时设置边框会对其进行优化:

if(cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];
}

答案 1 :(得分:0)

不是每次都设置图层属性,而是在创建单元格时执行一次。

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];
}