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