2017-01-11 5 views
1

У меня есть NSWindow, что я создал в IB и затем настроить программно:Невозможно перетащить и положение NSWindow ниже доке

enter image description here enter image description here

-(void)viewDidAppear { 
    // Keep window on top 
    [self.view.window setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)]; 

    // Keep rounded corners with no title bar 
    [self.view.window setOpaque:NO]; 
    [self.view.window setStyleMask: NSTitledWindowMask | NSFullSizeContentViewWindowMask]; 
    [self.view.window setMovableByWindowBackground:YES]; 
    [self.view.window setTitlebarAppearsTransparent:YES]; 
    [self.view.window setTitleVisibility:NSWindowTitleHidden]; 
    [self.view.window setShowsToolbarButton:NO]; 
    [self.view.window standardWindowButton:NSWindowFullScreenButton].hidden = YES; 
    [self.view.window standardWindowButton:NSWindowMiniaturizeButton].hidden = YES; 
    [self.view.window standardWindowButton:NSWindowCloseButton].hidden = YES; 
    [self.view.window standardWindowButton:NSWindowZoomButton].hidden = YES; 
    [self.view.window makeKeyWindow]; 
} 

Я хотел бы быть в состоянии перетащить и переместите это NSWindow ниже дока. Попытка сделать это защелкнет NSWindow назад над док-станцией, выпустив ее, как видно в GIF.

enter image description here

Как я могу сделать это так, это NSWindow может быть расположен ниже дока?

ответ

1

Вы можете переопределить -[NSWindow constrainFrameRect:toScreen:], чтобы ограничить или не ограничивать, как вам нравится. Чтобы ваше окно не было ограничено, просто верните предложенный фрейм без изменений.

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

+0

Ах, да, строка заголовка! Теперь это намного больше. Пошел с переопределением метода. Спасибо. –

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