Тень на UITableViewCell дает плохую производительность

Я создаю табличное представление с пользовательскими ячейками, которое выглядит как лента новостей - на сером фоне есть прямоугольники с закругленными углами и тенью.

В то время как cellForRowAtIndexPath метод вызывает, я устанавливаю тень так:

cell.postCard.layer.cornerRadius = 3
cell.postCard.layer.shadowColor = UIColor.darkGrayColor().CGColor
cell.postCard.layer.shadowOffset = CGSizeMake(0,1)
cell.postCard.layer.shadowRadius = 3
cell.postCard.layer.shadowOpacity = 0.5
cell.layer.shadowPath = UIBezierPath(rect: cell.postCard.layer.bounds).CGPath

Где postCard - это UIView - это контейнер для всего контекста ячейки.

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

3 ответа

Решение

Вы устанавливаете теневой путь к слою ячейки, изменяя настройки тени для cell.postCard

cell.postCard.layer.shadowOpacity = 0.5
cell.layer.shadowPath = UIBezierPath(rect: cell.postCard.layer.bounds).CGPath

Это действительно то, что вам нужно?

Кроме того, вы должны установить 'cell.clipsToBounds = false' для вашей ячейки.

Попробуйте прочитать о should​Rasterize и как это работает с тенями и угловым радиусом элементов пользовательского интерфейса. Вы можете повысить производительность, манипулируя should​Rasterize значение.

Другие вопросы по тегам