【问题标题】:How do you create a custom themed NSButton?如何创建自定义主题的 NSButton?
【发布时间】:2019-11-28 16:52:05
【问题描述】:

如何创建自定义主题的 NSButton?我的意思不是像更改背景颜色或从圆形边缘更改为方形边缘这样的小事。我想替换按钮的整个外观。这甚至可以在可可中做到吗?显然,我必须继承 NSButton 类并从那里开始。任何帮助将非常感激。

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    其实你需要继承NSButtonCell。您应该阅读Apple's documentation 以更好地了解它们的交互方式。您可能仍希望将 NSButton 子类化,以便它也将使用您的 NSButtonCell 子类。

    对于一个按钮,大部分工作都是在drawBezelWithFrame:inView: 中完成的。如果你想改变文本或图像的绘制方式,你可以覆盖 drawTitle:withFrame:inView:drawImage:withFrame:inView:

    【讨论】:

    • 是的,这是最好的方法。请注意,如果您使用 Interface Builder 和 Mac OS 10.5,则不再需要继承 NSButton。只需将按钮拖放到您的笔尖中,然后将单元格类更改为您的自定义类。
    • 这是真的。此外,您真正需要子类化 NSButton 的唯一情况是您以编程方式创建控件。
    • 我可以只通过设置属性来替换外观吗?我可以通过使用按钮的“图像”属性来更改外观,但是每当单击自定义按钮时,我都会得到一个丑陋的灰色矩形(图像具有透明度)。谢谢。
    • 它是 - (NSRect)drawTitle:(NSAttributedString *)title withFrame:(NSRect)frame inView:(NSView *)controlView; (在 Mac OS X v10.4 及更高版本中可用),而不是 drawText:...
    • 在 swift (2)、OSX 10.11 和 xcode 7 中构建 Cocoa 应用程序是最新的吗?即使在那个时候,链接的文档也显得乏善可陈,现在提到的一半方法已经不存在了。
    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多