【问题标题】:title&&close button not show标题&&关闭按钮不显示
【发布时间】:2015-02-18 01:11:57
【问题描述】:

我尝试在可可应用中显示/隐藏标题栏。我使用以下代码:


    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];

但一切都失败了。
有人可以提出任何建议吗?谢谢!

【问题讨论】:

    标签: macos cocoa nswindow osx-yosemite


    【解决方案1】:

    这是一个有趣的问题。您可以向 Apple 提交错误报告吗?

    与此同时,这里有一个似乎可以解决问题的 hack:

    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:手动恢复标题。)

    【讨论】:

      【解决方案2】:

      使用

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

      它适用于我的情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 2023-03-15
        • 1970-01-01
        • 2011-10-16
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多