2016-07-04 1 views
1

Это в значительной степени моя проблема. Я хочу создать округленные простые ячейки в виде таблицы. Я переопределяю drawRect(frame: CGRect) в классе TableViewCell, но когда отображается ячейка, устройство (симулятор тоже) замерзает около 1 секунды, а отладчик показывает всплеск потребления ЦП до 75%.UITableViewCell drawRect() Override делает устройство действительно медленным (процессорный шип)

Не то, что это может быть полезным, но вот мой код:

override func drawRect(rect: CGRect) { 
    frame.origin.x = 10 
    frame.size.width -= 20 
} 

Так есть ли проще/НАМНОГО более эффективный/«легальное» (кто-то сказало, переопределение DrawRect считается «Hacky») путь просто сделать каждую ячейку более узкой, чем экран?

+3

Реалистичный кадр ячейки будет управляться табличным представлением, вы можете добавить свои собственные пользовательские подпрограммы внутри 'cell.contentView'. Почему вы используете drawrect? беспокоились о производительности? Настольное представление эффективно при кешировании и повторном использовании ячеек. Если вы не показываете 1000 ячеек на экране, вам не нужно будет беспокоиться об эффективности чертежа. – thelaws

+0

Да, я заметил, что всплеск процессора происходит только в первой ячейке, а затем он отлично работает. Я попробую использовать subview. Отправьте его как ответ, чтобы я выбрал его. Благодаря! – Lawrence413

ответ

1

Вам не разрешено использовать drawRect для изменения рамки представления. drawRect просто дает вам возможность рисовать в пределах данного кадра.

Настоящий каркас UITableViewCell находится под управлением UITableView через его ширину и метод heightForRowAtIndexPath:. Кроме того, представление таблицы очень эффективно при кешировании и повторном использовании ячеек. Если вы не показываете 1000 ячеек на экране, вам не нужно будет беспокоиться об эффективности чертежа.

Я думаю, вы должны добавить subview в ячейку contentView и установить ее в качестве вставки в ячейку. Это можно сделать, используя автозапуск в пользовательской ячейке xib или manaully в cellForRowAtIndexPath:.

+0

Спасибо! Я сделал то, что вы сказали в комментарии, и отлично поработал. – Lawrence413

Смежные вопросы