2011-01-04 3 views
4

Я создаю обычай NSWindow без заголовка и использую NSBorderlessWindowMask, чтобы сделать его полностью без полей. Однако проблема с этим связана с тем, что окно имеет острые края. Кроме того, нет контроля размера.Borderless NSWindow с закругленными углами

Как бы я дал закругленные углы без полей?

Это не дубликат this question, как этот вопрос был более об удалении строки заголовка и в настоящее время не имеет никаких ответов.

+0

Возможно, вы ищете что-то вроде [этого] (http://stackoverflow.com/questions/19940019/nswindow-with-round-corners-and-shadow/27613308#27613308). Это граничный стиль, но кажется близким к тому, что вы ищете. – Eonil

ответ

7

Вы можете сделать окно полностью прозрачным и ручкой рисовать все самостоятельно. Образец, который у меня есть, предназначен для представления OpenGL, но он также должен работать для представления Quartz или Cocoa.

Добавьте к инициализатору подкласса NSWindow, в котором вы создаете новое окно, используя константу NSBorderlessWindowMask.

[self setOpaque:NO]; 
[self setBackgroundColor:[NSColor clearColor]]; 

Возможно, вам придется самостоятельно нарисовать элемент управления размером. Образец, на который я взял это, - это полноэкранное окно, поэтому изменение размера не требуется.

Удачи.

+0

Где бы я рисовал все? – Joshua

+0

В вашем классе class '-drawRect: переопределить. Вам понадобится контекст рисования для рисования в такой подкласс либо NSImage, либо NSOpenGLView. Я оговорился, код, который я вам дал в своем ответе, должен быть в вашем подклассе NSWindow. Для рисования вам также понадобится пользовательский подкласс вида. – Mark

+1

Продолжая то, что вы мне дали, я смог найти этот учебник по какао с любовью. Подумайте, что ваш ответ принят! http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html – Joshua

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