UITableView начинает сканироваться при добавлении UILabel с cornerRadius в каждую ячейку - PullRequest
8 голосов
/ 13 февраля 2010

Я добавляю 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];

Ответы [ 3 ]

15 голосов
/ 20 сентября 2011

Нет необходимости в изображении со скругленными углами - посмотрите ответ fknrdcls на этот вопрос:

UILabel layer 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;
7 голосов
/ 13 февраля 2010

Я попробовал это раньше и обнаружил, что это бесполезно для любого вида движущихся взглядов. Вы должны создать изображение с закругленными углами и добавить его в качестве фона вашего ярлыка.

0 голосов
/ 27 февраля 2013

для UIImageView трюк UILabel не сработал, потому что мне пришлось обрезать изображение, а не только цвет фона. самым быстрым решением, которое я нашел, было растеризация родителя представления всякий раз, когда я анимировал его (у меня есть скользящая панель).

...