【问题标题】:Drawing outside of NSWindow在 NSWindow 之外绘图
【发布时间】:2012-06-13 09:19:21
【问题描述】:

我了解如何在 NSWindow 框架内绘制。但我不明白如何实现这样的目标:

如果我知道这叫什么,我可以进一步调查此事,但由于我不知道要查找什么,这是不可能的。

我很感激任何提示。

非常感谢。

【问题讨论】:

  • 我不确定,如果这就是你的意思,但只要你不剪辑视图,你就可以在它的边界之外绘制。例如,以这种方式绘制阴影。
  • 所以我可以选择窗框外的坐标并简单地画在那里? 那么容易吗?
  • 虽然您可以按照 Matthias 的建议简单地在 NSView 之外进行绘制,但我认为这种方法不适用于 NSWindow。

标签: objective-c macos cocoa user-interface nswindow


【解决方案1】:

屏幕截图中的应用看起来像是在使用自定义的NSDrawer。抽屉从窗口一侧滑出,可以显示任何内容。

查看文档,看看它是否是您想要的: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Drawers/Drawers.html#//apple_ref/doc/uid/10000001-BABFIBIA

抽屉易于安装。但是,虽然您可以完全控制抽屉内的内容,但如果不使用私有 API(例如,屏幕截图中的参差不齐的边缘),您就无法控制边框的外观。如果你想要更多的控制,你可以使用无边框的子窗口。

这是一个制作无边框、完全自定义窗口的教程:http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html

然后,您可以使用-[NSWindow addChildWindow:ordered:] 将自定义窗口“附加”到父窗口。这将允许子窗口在移动时跟随父窗口。您仍然需要自行响应对父窗口大小的更改,可能还有其他一些属性。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多