UITableView cornerRadius с проблемами производительности границы на iOS

У меня есть интересное уведомление с прокруткой производительности наUITableView сcornerRadius, borderWidth а такжеborderColor включен.

self.tableView.layer.cornerRadius = 10.f;
self.tableView.layer.borderWidth = 1.0f;
self.tableView.layer.borderColor = [UIColor whiteColor].CGColor;

Если я удалюborderWidth а такжеborderColor чем прокрутка получает 60 FPS без проблем. Пока я добавляю эти два свойства к слою FPS drop.

У кого-нибудь есть предложение или объяснение, почему происходит такое странное поведение?

Большое спасибо!

 Borut Tomazin27 июн. 2012 г., 13:48
Из-за ширины границы?
 Michał Zygar04 июл. 2012 г., 09:30
у тебя тоже есть тени?
 onegray27 июн. 2012 г., 13:53
Я думаю так. УстановивborderWidth а такжеborderColor это добавляет дополнительные операции, чтобы нарисовать границу. То же самое дляcornerRadius.
 Borut Tomazin27 июн. 2012 г., 13:57
Почему это было бы проблемой, потому что граница не прокручивается, только ячейки ...?
 onegray27 июн. 2012 г., 13:45
Потому что для этого нужно больше операций рисования.

Ответы на вопрос(2)

имеющий свойство shouldRasterize для этого типа проблемы производительности. Просто установите

self.tableView.layer.shouldRasterize = YES;

Эта единственная строка сэкономила мне много времени и работы.

Решение Вопроса

что cornerRadius с очень низкой производительностью borderWidth tableView. Таким образом, вместо радиуса 10.f я изменил на 5.f, и производительность удивительно возросла. Все еще не идеально, но заметно лучше ...

Ваш ответ на вопрос