Objective c 圆角无边框窗

Objective c 圆角无边框窗,objective-c,cocoa,macos,nswindow,Objective C,Cocoa,Macos,Nswindow,我正在创建一个没有标题栏的自定义NSWindow,并使用NSBorderlessWindowMask使其完全无边界。然而,我的问题是窗户有锋利的边缘。除此之外,还没有调整大小控件 我如何给一个无边界的窗口圆角 这是而不是的重复,因为那个问题更复杂 关于删除标题栏并将其删除 目前没有答案 您可以使窗口完全透明,并自行绘制所有内容。我的示例用于OpenGL视图,但也适用于Quartz视图或Cocoa视图 将以下内容添加到NSWindow子类的初始值设定项中,在该初始值设定项中使用NSBorderle

我正在创建一个没有标题栏的自定义
NSWindow
,并使用
NSBorderlessWindowMask
使其完全无边界。然而,我的问题是窗户有锋利的边缘。除此之外,还没有调整大小控件

我如何给一个无边界的窗口圆角

这是而不是的重复,因为那个问题更复杂 关于删除标题栏并将其删除 目前没有答案


您可以使窗口完全透明,并自行绘制所有内容。我的示例用于OpenGL视图,但也适用于Quartz视图或Cocoa视图

将以下内容添加到NSWindow子类的初始值设定项中,在该初始值设定项中使用NSBorderlessWindowMask常量创建新窗口

[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]]; 
您可能需要自己绘制调整大小控件。我从中获取的示例是一个全屏窗口,因此不需要调整大小


祝你好运。

获得圆角窗口的最简单方法是在窗口中放置一个
NSBox
,因为这些框具有可自定义的圆角和边框。如果随后将窗口设置为非不透明,将背景色设置为透明(“透明色”),则会有一个带有圆角的
NSWindow
,可以绘制正常的窗口阴影(即使在旧系统上,这样的窗口也不会有阴影)。大部分操作都可以在Interface Builder中完成

我将在哪里处理绘制所有内容?在视图类中“-drawRect:override。您将需要一个绘图上下文来绘制so子类NSImage或NSOpenGLView。我说错了,我在回答中给你的代码应该在你的NSWindow子类中。你还需要一个自定义视图子类来绘制。按照你给我的,我找到了关于Cocoa With Love的教程。考虑你的答案接受!谢谢你的链接。我多年来一直在爱着阅读Cocoa,但不知道那个教程。你可能在找类似的东西。这是边缘风格,但似乎接近你要找的。