8

我在表格视图中的每个单元格中添加了一个 UILabel。这最初没有问题。当我使用滚动表格视图绕过 UILabel 的角落时,layer.cornerRadius会停止。

 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];
4

3 回答 3

15

不需要带有圆角的图像 - 请参阅 fknrdcls 对此问题的回答:

UILabel 层cornerRadius 对性能产生负面影响

基本上,您只需为标签提供透明背景,然后将背景颜色添加到图层即可。然后,您可以禁用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;
于 2011-09-20T15:05:13.883 回答
7

我自己之前尝试过这个,发现它对于任何移动的视图都是无用的。您应该创建一个带有圆角的图像并将其添加为标签的背景。

于 2010-02-13T09:49:08.480 回答
0

对于 UIImageView,UILabel 技巧不起作用,因为我还必须裁剪图像,而不仅仅是背景颜色。我发现的最快的解决方案是在动画时栅格化视图的父级(我有一个滑动面板)。

于 2013-02-27T15:39:07.560 回答