NSFontPanel 问题

Issue with NSFontPanel

我有一个用户需要修改样式(字体、大小、粗体、前后颜色...)的应用程序 如何在 FontPanel 中加载初始样式并在用户验证后获取新属性?

我尝试了很多不同的方法,但都没有成功。

谢谢

使用setPanelFont:isMultiple:设置初始选择的字体。

使用[NSFontManager sharedFontManager] setSelectedAttributes:isMultiple:改变初始颜色;颜色的字典键是 NSForegroundColorAttributeName@"NSDocumentBackgroundColor",样式的键是 NSUnderlineStyleAttributeNameNSStrikethroughStyleAttributeName

当字体改变时,将调用委托实例的 changeFont: 方法。

同上样式:changeAttributes: 方法。 以及文本和文档颜色:setColor:forAttribute: 方法。

在 changeAttributes 方法中获取新属性:

NSDictionary * newAttributes = [sender convertAttributes:@{}];

Swift 4.2:

NSFontPanel.shared.setPanelFont(myNSFont, isMultiple: false)
    NSFontManager.shared.setSelectedAttributes([NSAttributedString.Key.foregroundColor.rawValue: myNSColor], isMultiple: false)

您可以找到所有属性键的列表here - 旧样式常量尚未弃用,但从 10.13 开始,不再有效。

要在更改时收到更改通知,例如,没有附加字段编辑器的标签的内容,您需要设置 NSFontManager.shared 的目标和操作,然后注册对于 NSColorPanel.colorDidChangeNotification(从 FontPanel 打开 ColorPanel 时,NSColorChanging 不会触发)。