objective-c - 如何在 Objective-C 中自定义绘制窗口标题栏?

标签 objective-c cocoa macos

我想自定义在 OS X 上绘制窗口标题栏的方式。具体来说,我想做一些类似 Twitterrific 应用程序的事情,其中​​有一个自定义关闭按钮,没有最小/最大按钮,并且窗口标题文本是右对齐的。与 Twitterrific 不同,我不想自定义绘制整个窗口(尽管我也不完全反对)。

我已经在 Cocoa With Love 上看过 RoundWindow 示例以及 Apple 提供的 RoundTransparentWindow 示例,但似乎都不合适。

最佳答案

如果您不想使用无边框窗口类,那么您可以做一些事情。

首先,您可以使用 -[NSWindow standardWindowButton:] 自定义关闭/最小/最大按钮。获得按钮后,您可以定位/移除它/等等...

您可以通过将标题设置为@"" 来自定义标题。然后你可以添加一个 NSTextField 通过执行以下操作来绘制你自己的标题 [[[NSWindow contentView] superview] addSubview:textField]

这可能是最简单的做事方式。

另一种方法是自定义绘制所有窗口标题栏等的 View ...

NSWindow 的内容 View 位于“主题 View ”中。您可以子类化主题 View 并进行自己的绘图。唯一的问题是主题 View 是私有(private)类,因此您必须小心。

关于objective-c - 如何在 Objective-C 中自定义绘制窗口标题栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1665147/

相关文章:

objective-c - NSCollectionView 不更新数据更改的 subview

cocoa - 导入核心数据时建立关系?

macos - Erlang 调试器错误 : Could not find 'wxe_driver.so'

macos - 无法在 Zsh 中完成 MacPorts 的选项卡

objective-c - WKWebView - 替换网络操作

objective-c - 使用typedef枚举时,返回类型枚举EnumName返回枚举成员时会产生编译器错误

mysql - 在插入数据库之前清理字符串

objective-c - 更新 beginBackgroundTaskWithExpirationHandler 上的 UI

c - 创建共享库时,如何告诉链接器可执行文件中存在符号?

ios - 'UIWindow' 没有可见的 @interface 声明选择器 'recursiveDescription'