2010-12-11 3 views
1

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

ответ

2

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

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

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

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

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

+1

Спасибо, я закончил переосмысление моего дизайна, чтобы мне не пришлось это делать. – indragie

+0

@indragie, что вы в конечном итоге сделали? –

Смежные вопросы