2014-12-19 95 views
2

我嘗試在可可應用程序中顯示/隱藏標題欄。我使用以下代碼:標題&&關閉按鈕不顯示


    if ([window styleMask]==NSResizableWindowMask) { 
     [window setStyleMask:NSMiniaturizableWindowMask|NSClosableWindowMask|NSResizableWindowMask|NSTitledWindowMask]; 
    }else{ 
     [window setStyleMask:NSResizableWindowMask]; 
    } 

它在10.10之前運行良好,但在10.10失敗。在10.10中,當標題欄顯示時,標題,關閉/最小化/調整大小按鈕未顯示。只有用戶調整窗口大小,這些東西纔會顯示出來。
我想的東西必須是「同花順」,因此我也嘗試添加:


    [window update]; 
    [window display]; 
    [[NSApplication sharedApplication] setWindowsNeedUpdate:YES]; 
    [[NSApplication sharedApplication] updateWindows]; 

但是所有的失敗。
任何人都可以提出任何建議嗎?謝謝!

回答

0

這是一個有趣的問題。你能否向蘋果提交錯誤報告?

在此期間,這裏是似乎解決這一問題的破解:

if ([window styleMask] == NSResizableWindowMask) { 
    NSDisableScreenUpdates(); 

    [window setStyleMask:(NSMiniaturizableWindowMask|NSClosableWindowMask 
          |NSResizableWindowMask|NSTitledWindowMask)]; 

    NSRect frame = [window frame]; 
    frame.size.width += 1; 
    [window setFrame:frame display:NO]; 
    frame.size.width -= 1; 
    [window setFrame:frame display:YES]; 

    NSEnableScreenUpdates(); 
} else { 
    [window setStyleMask:NSResizableWindowMask]; 
} 

(此外,似乎你將有setTitle:手動還原標題。)

0

使用

dispatch_async(dispatch_get_main_queue(), ^{ 
    if ([window styleMask]==NSResizableWindowMask) 
    { 
     [window setStyleMask:NSMiniaturizableWindowMask|NSClosableWindowMask|NSResizableWindowMask|NSTitledWindowMask]; 
    } 
    else 
    { 
     [window setStyleMask:NSResizableWindowMask]; 
    } 
}); 

它適用於我的情況。