【问题标题】:Custom NSWindow drawing自定义 NSWindow 绘图
【发布时间】:2010-01-02 00:52:48
【问题描述】:

我想画一个类似这样的 NSWindow:

http://vibealicious.com/site/apps/notify/screenshots/mainUIFull.png

因为它具有典型的 NSWindow 外观,带有底部栏等,但我想画一个小箭头,而不是顶部的标题栏。

有没有简单的方法来做到这一点?我是否必须手动绘制整个窗口(底栏和全部)?或者我可以稍微修改现有的 NSWindow 布局,只在顶部绘制那个箭头吗?谢谢

【问题讨论】:

    标签: objective-c cocoa nswindow


    【解决方案1】:

    您可以通过使用覆盖窗口顶部并仅绘制箭头的第二个子窗口来伪造标题栏。否则,您需要自己绘制整个东西。

    【讨论】:

    • 这就是我的想法。有没有办法只获取标题栏的框架(原点和大小),以便我可以调整子窗口的大小和位置以覆盖它?
    • 您可以使用NSWindow+contentRectForFrameRect:styleMask:类方法来获取窗口的内容矩形。然后,您可以轻松地将其与窗口的框架进行比较以获取标题栏的大小。
    【解决方案2】:

    不确定您所说的简单 方法是什么意思,但是创建自己的窗口子类并自己绘制窗口控件并不是很困难。在这种情况下,使用子窗口可能有点过头了。

    查看Round Transparent Window 示例项目。

    【讨论】:

    • 自己绘制所有内容的唯一问题是,如果窗口样式发生变化(例如,在新的操作系统版本中),那么您的窗口会显得格格不入。当然,这也适用于箭头叠加层。
    • 这是真的,这是一个很好的理由仔细考虑自定义窗口是否适合您的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多