无边框NSWindow圆角

时间:2011-01-04 12:40:18

标签: objective-c cocoa macos nswindow

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

我如何为无边框窗口提供圆角?

  

this question的副本,因为该问题更多   关于删除标题栏和它   目前没有答案。

2 个答案:

答案 0 :(得分:7)

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

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

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

您可能需要自己绘制调整大小控件。我从中获取的样本是一个全屏窗口,因此不需要调整大小。

祝你好运。

答案 1 :(得分:0)

获取带有圆角的窗口的最简单方法是将import tempfile # Create an empty file with tempfile.NamedTemporaryFile(delete=False) as default_file: pass # or write something to it if you want, such as: # default_file.write("Something\n") for subdir, dirs, files in os.walk(rootdir): list_found = False for file in files: if file.endswith(".json"): json_files.append(os.path.join(subdir, file)) if file.endswith(".list"): table_files.append(os.path.join(subdir, file)) list_found = True if not list_found: table_files.append(default_file.name) # After done, delete the file 放入窗口中,因为这些框具有可自定义的圆角和可自定义的边框。如果然后将窗口设置为非不透明,而将背景色设置为透明(“透明色”),则您有一个带有圆角的NSBox,它会绘制普通的窗口阴影(即使在较旧的系统中,该窗口也会否则没有阴影)。大多数可以在Interface Builder中完成。 See here for details