更改 NSButton 的字体大小不会改变任何内容

Changing the font size of an NSButton doesn't change anything

我正在开发我的第一个 Swift 项目 (万岁),它是 Mac OS 的应用程序。我现在想做的是创建一些按钮,文本颜色为白色,字体为自定义。因为我需要该按钮上的一个新属性来保存一些数据,所以我创建了 NSButton 的子 class。

现在,我知道我可以像这样设置按钮的字体:

super.font = NSFont(name: "NB-International-Pro", size: 40)

这很有魅力。之后我尝试通过这样做来改变文本的颜色:

let pstyle = NSMutableParagraphStyle()
pstyle.alignment = .center
super.attributedTitle = NSAttributedString(string: (device?.name)!, attributes: [ NSForegroundColorAttributeName : NSColor.white, NSParagraphStyleAttributeName : pstyle ])

它确实有效,它确实改变了文本的颜色,但是,现在字体和字体大小恢复为默认值。是否可以选择两者兼顾?

谢谢。

不要先设置字体,而是在使用 NSFontAttributeNameNSFontSizeAttribute 键创建 NSAttributedString 时在属性中包含字体名称和大小:

attributedTitle = NSAttributedString(string: (device?.name)!, attributes: [ NSForegroundColorAttributeName : NSColor.white, NSParagraphStyleAttributeName : pstyle, NSFontAttributeName: "NB-International-Pro", NSFontSizeAttribute: 40])

除此之外,您可能还可以对代码的体系结构进行一些改进。子类化 NSButton 并不是真正需要改变文本样式(可以在 .xib 或您的视图控制器中完成)。