Закругленные углы на NSTableView

У меня есть собственный подкласс представления, похожий на NSBox это рисует фон с закругленными углами. Проблема в том, что если я размещу вид как NSTableView в окне просмотра он не обрезает скругленные углы. Есть ли способ закруглить углы NSTableView и его родительский вид прокрутки?

1 ответ

Решение

Я не пробовал это с табличным представлением, но с другими элементами управления.

В подклассе NSTableView (или любого другого вида / элемента управления, который вы хотите обрезать)

  1. Override drawRect:
  2. Создайте NSBezierPath с нужной вам формой (возможно, appendBezierPathWithRoundedRect:xRadius:yRadius: просто не забудьте использовать границы представления в качестве размера)
  3. Отправить путь addClip сообщение, чтобы добавить эту форму в отсечения путь представления
  4. Звоните супер drawRect:

Если табличное представление имеет заголовок, вам может понадобиться обрезать верхние углы, создав подкласс NSTableHeaderView. И если у вас есть полосы прокрутки, вам, возможно, придется сделать с ними то же самое, за исключением того, что вы обрезаете только определенные углы. Надеюсь, у вас нет полос прокрутки, потому что я сомневаюсь, что это будет выглядеть правильно. По сути, вы хотите обрезать вид / элемент управления, который рисует эту часть, отсечение родителя не приведет к обрезанию подпредставлений.

Если вы посмотрите на окно "Добро пожаловать в XCode" от Apple, ему это сойдет с рук, нарисовав специальный заголовок вверху и текстовый блок внизу, чтобы им не приходилось округлять само представление таблицы. Если бы вы могли сделать что-то подобное, я бы сделал.

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