Закругленные углы на NSTableView - PullRequest
1 голос
/ 11 декабря 2010

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

1 Ответ

2 голосов
/ 12 декабря 2010

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

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

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

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

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

...