2009-09-28 4 views
3

Я пытаюсь нарисовать линию на пользовательском UITableViewCell. Когда я рисую внутри переопределенного drawRect и использую текущий графический контекст, я ничего не вижу.Как рисовать в contentView UITableViewCell?

Я знаю, что ничего не вижу, потому что draw rect рисует UIView, а не contentView. Поэтому мой вопрос заключается в том, как я могу использовать представление контента с помощью CG? Скажем, захватив графический контекст в contentView?

ответ

-1

Я нашел мой ответ here. В основном суперкласс ABTabeViewCell устанавливает контекст, поэтому вы можете легко рисовать функцию drawContentView.

+1

Эта ссылка больше не работает. Похоже, что блог был снят, когда они купили твиттер. – drewish

4

Я играл с этим в прошлом, и то, что я закончил, создает собственный подкласс UIView и добавляет iot к пользовательскому подклассу UITableViewCell и рисует его таким образом. Мне нравится контроль, который это дает мне.

0

По какой-то причине (я не знаю, почему, но я это заметил), если вы «набросаете» (то есть переопределите drawRect) на то, что находится в «contentView» вашей ячейки, оно не появляется на ячейке таблицы. Однако представление, которое вы назначаете cell.backgroundView и cell.selectedBackgroundView, проявляется отлично ...

Вы можете поместить свой пользовательский вид в cell.backgroundView, ничего не помещать в cell.contentView, и он будет отображаться в порядке (за исключением случаев, когда вы выбираете строку, потому что тогда ваше представление исчезает и заменяется на cell.selectedBackgroundView).

Итак, что вы можете сделать, это:

  • Используйте cell.contentView, чтобы показать пользовательский вид без фона
  • Использование cell.backgroundView и cell.selectedBackgroundView, чтобы показать фантазии фон для ячейки. ..

Или:

  • сделать свой собственный взгляд достаточно гибким, чтобы он мог показать, как выбранный и невыбранные состояние, и использовать 2 экземпляра пользовательского зрения: один в cell.backgroundView и один в cell.selectedBackgroundView