Я не пробовал это с табличным представлением, но с другими элементами управления.
В подклассе NSTableView (или любого другого вида / элемента управления, который вы хотите обрезать)
- Переопределить
drawRect:
- Создайте NSBezierPath с нужной вам формой (вероятно,
appendBezierPathWithRoundedRect:xRadius:yRadius:
, просто не забудьте использовать границы вида в качестве размера)
- Отправьте путь сообщению
addClip
, чтобы добавить эту форму в обтравочный контур вида
- Звоните супер'ам
drawRect:
Если табличное представление имеет заголовок, вам может потребоваться обрезать верхние углы, создав подкласс NSTableHeaderView. И если у вас есть полосы прокрутки, вам, возможно, придется сделать с ними то же самое, за исключением того, что обрезаете только определенные углы. Надеюсь, у вас нет полос прокрутки, потому что я сомневаюсь, что это будет выглядеть правильно. По сути, вы хотите обрезать вид / элемент управления, который рисует эту часть, отсечение родителя не приведет к обрезке подпредставлений.
Если вы посмотрите на окно «Добро пожаловать в XCode» от Apple, ему это сойдет с рук, нарисовав специальный заголовок вверху и текстовый блок внизу, чтобы им не пришлось округлять само представление таблицы. Если бы вы могли сделать что-то подобное, я бы.