具有圆角的无边界NSWindow

问题描述 投票:4回答:2

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

如何给无边界的圆角窗口?

这是不是this question重复,因为该问题更多关于删除标题栏及其目前暂无答案。

objective-c cocoa macos nswindow
2个回答
7
投票

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

将以下内容添加到您的NSWindow子类的初始化程序中,您可以在其中使用NSBorderlessWindowMask常量创建新窗口。

[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]]; 

您可能必须自己绘制调整大小控件。我从中获取的示例是一个全屏窗口,因此无需调整大小。

祝你好运。>>


0
投票

获得具有圆角的窗口的最简单方法是将NSBox放入窗口,因为这些框具有可自定义的圆角和可自定义的边框。如果随后将窗口设置为非不透明,而将背景色设置为透明(“透明色”),则具有圆角的NSWindow会绘制普通的窗口阴影(即使在较旧的系统中,否则该窗口也不会有阴影)。大多数可以在Interface Builder中完成。 See here for details

© www.soinside.com 2019 - 2024. All rights reserved.