如何在Interface Builder中创建Yosemite风格的统一工具栏?

Kor*_*nel 60 macos interface-builder osx-yosemite

在OS X 10.10+中,我如何创建"胖标题栏"类型的窗口,在窗口的标题栏中有一个与其他小工具集成的工具栏,就像在新的Safari和日历中一样?

在此输入图像描述

Kor*_*nel 86

  1. 创建标准工具栏
  2. 当窗口加载设置时:

    // Objective-C
    window.titleVisibility = NSWindowTitleHidden;
    
    // Swift
    window?.titleVisibility = .hidden
    
    Run Code Online (Sandbox Code Playgroud)

  • 我可以确认这确实达到了预期的行为.有关完整示例,请参阅VisualEffectPlayground中的"示例地图"演示(https://developer.apple.com/library/prerelease/mac/samplecode/VisualEffectPlayground/Introduction/Intro.html#//apple_ref/doc/uid/TP40014632 ) (4认同)
  • **另外**,确保每个项目中的`NSButton'在属性检查器中具有"纹理圆角"样式:此样式以浅灰色突出显示,与Safari中的颜色完全相同.另一方面,默认样式"推"在蓝色或石墨中高亮显示(取决于系统偏好/常规). (3认同)
  • 对于将来的人,请将以下内容放在WindowController中:`window.titleVisibility = NSWindowTitleVisibility.Hidden` (2认同)
  • @GrahamPerrin用户没有覆盖.可能会破解/修补Cocoa以禁用`titleVisibility`属性. (2认同)

小智 10

在您的窗口控制器中:

将以下内容放入windowDidLoad覆盖函数中.

window?.titleVisibility = .hidden
Run Code Online (Sandbox Code Playgroud)

  • @Besi你可以将它缩短为`window!.titleVisibility = .Hidden` (4认同)
  • 你可以将它缩短为`self.window!.titleVisibility = .Hidden` (3认同)
  • 在Swift 3中:`window?.titleVisibility = .hidden`.顺便说一下,我强烈建议在生产代码中使用```````. (3认同)

rob*_*off 6

从Xcode 10开始,您可以在XIB或情节提要中执行此操作,方法是打开窗口的“属性”检查器中窗口标题下的“隐藏标题”复选框。

xib演示

另请注意,对于工具栏按钮,应使用“纹理圆角”样式。