无边界NSWindow的圆角

时间:2010-10-23 12:35:10

标签: cocoa nswindow titlebar borderless

我正在创建一个应用程序I don't want a title bar

  

如果标题始终保持不变,那么展示它是否有意义?例如,如果一个应用程序没有显示文档的名称,或者它打开的任何其他资产,并且如果你想移动窗口,其他控件周围有足够的空间可以抓住,标题是服务很多?   http://i.stack.imgur.com/C9mTo.png

问题是:我该怎么做?我尝试使用[mainWindow setStyleMask:NSBorderlessWindowMask];,但我不能让它有圆角。我真的不知道怎么做圆角。接下来,我无法让它有一个调整大小控件。如果我使用[mainWindow setStyleMask:NSBorderlessWindowMask | NSResizableWindowMask];它就不再是无边界的了。谁能帮我?感谢。

4 个答案:

答案 0 :(得分:3)

虽然这是一个非常古老的问题......

现在在OS X 10.11上更容易了。

        window1.backgroundColor             =   NSColor.whiteColor()
        window1.opaque                      =   false
        window1.styleMask                   =   NSResizableWindowMask
                                            |   NSTitledWindowMask
                                            |   NSFullSizeContentViewWindowMask
        window1.movableByWindowBackground   =   true
        window1.titlebarAppearsTransparent  =   true
        window1.titleVisibility             =   .Hidden
        window1.showsToolbarButton          =   false
        window1.standardWindowButton(NSWindowButton.FullScreenButton)?.hidden   =   true
        window1.standardWindowButton(NSWindowButton.MiniaturizeButton)?.hidden  =   true
        window1.standardWindowButton(NSWindowButton.CloseButton)?.hidden        =   true
        window1.standardWindowButton(NSWindowButton.ZoomButton)?.hidden         =   true

        window1.setFrame(CGRect(x: 400, y: 0, width: 400, height: 500), display: true)
        window1.makeKeyAndOrderFront(self)

Here完整的工作示例。

这是来自another question的复制答案。似乎有点不同,但可以平等回答。

答案 1 :(得分:1)

这里有一个类似的问题:Hide NSWindow title bar

基本上,如果您使用NSBorderlessWindowMask,则不能使用任何其他style mask,因此您必须自己实现自己的窗口控件并绕过角落。

或者您可以使用常规的NSWindow而不是设置标题。有关示例,请参阅Tweetie.app。

希望Apple能够提供10.7的新窗口样式。

答案 2 :(得分:1)

如果你想做一些完全不同的事情(比如绘制你自己的窗口),请查看Matt Gemmell's code.查看MAAttachedWindow代码,了解删除标题栏,绘制贝塞尔角和使其看起来精湛的方法。

答案 3 :(得分:0)

使用一个简单的技巧就可以轻松地创建带有圆角的窗口:创建一个具有透明背景的窗口,将NSBox放入该窗口中,然后将其用作内容视图。 NSBox已具有圆角,可自定义的背景颜色和可自定义的边框(样式,颜色和角半径可自定义)。大部分操作甚至可以在Interface Builder中完成,实际上最后只需要两行代码。有关完整的示例,请访问see here