在向每个单元格添加带cornerRadius的UILabel时,UITableView会进行爬网

我添加一个UILabel到我的表格视图中的每个单元格。 这最初没有问题。 当我使用layer.cornerRadius滚动表视图layer.cornerRadius停止UILabel的angular落。

  UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; label1.backgroundColor = ([[managedObject valueForKey:@"color"] hasPrefix:@"FFFFFF"]) ? [UIColor blackColor] : color; label1.layer.cornerRadius = 10.0f; [cell addSubview:label1]; 

我已经尝试过了,发现任何一种移动视图都是没用的。 您应该创build一个带有圆angular的图像,并将其添加为标签的背景。

没有必要使用带有圆angular的图像 – 请参阅fknrdcls对此问题的回答:

UILabel层cornerRadius负面影响性能

基本上,你只需要给你的标签一个透明的背景,然后添加backgroundcolor到图层。 然后,您可以禁用maskToBounds ,这大大提高了性能。 所以你的代码变成:

 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)]; label1.backgroundColor = [UIColor clearColor]; label1.layer.backgroundColor=[UIColor whiteColor].CGColor; label1.layer.cornerRadius = 10.0f; label1.layer.masksToBounds = NO; label1.layer.shouldRasterize = YES; 

对于UIImageView的UILabel技巧不工作,因为我不得不裁剪图像,而不仅仅是背景颜色。 我发现最快的解决scheme是光栅化视图的父母,只要我animation(我有一个滑动面板)。