我可以让 Safari App Extension 工具栏按钮的文本徽章不那么难看吗?
Can I make text badges for Safari App Extension toolbar buttons less ugly?
Safari App Extensions don’t allow you to change toolbar button images dynamically, but they do let you add a string to the button as a badge 通过将字符串传递给扩展处理程序的 validationHandler
方法:
override func validateToolbarItem(in window: SFSafariWindow, validationHandler: @escaping ((Bool, String) -> Void)) {
// This is called when Safari's state changed in some way that would require the extension's toolbar item to be validated again.
validationHandler(true, "1")
}
不幸的是,这个带标记的文字看起来不太好:
我在文档中找不到任何关于自定义徽章文本外观的内容,但为了以防万一,有什么方法可以避免剪切可能意味着圆形徽章的内容吗?
我认为无法更改徽章文字的外观。但是,现在可以使用工具栏项的 setImage
method.
动态设置按钮图像
例如,在您的 SFSafariExtensionHandler
中包含以下内容会在单击按钮时将工具栏项目图标更改为默认用户图标:
override func toolbarItemClicked(in window: SFSafariWindow) {
let image = NSImage(named: NSImageNameUser)
window.getToolbarItem { [=10=]?.setImage(image) }
}
您可以提供任何 NSImage
,但它应该符合 Apple 的 guidelines for template images。
我不知道为什么您链接到的 Safari App Extension Programming Guide 中没有对此进行记录。我怀疑此功能可能是后来添加的,并且该指南已过时。
Safari App Extensions don’t allow you to change toolbar button images dynamically, but they do let you add a string to the button as a badge 通过将字符串传递给扩展处理程序的 validationHandler
方法:
override func validateToolbarItem(in window: SFSafariWindow, validationHandler: @escaping ((Bool, String) -> Void)) {
// This is called when Safari's state changed in some way that would require the extension's toolbar item to be validated again.
validationHandler(true, "1")
}
不幸的是,这个带标记的文字看起来不太好:
我在文档中找不到任何关于自定义徽章文本外观的内容,但为了以防万一,有什么方法可以避免剪切可能意味着圆形徽章的内容吗?
我认为无法更改徽章文字的外观。但是,现在可以使用工具栏项的 setImage
method.
例如,在您的 SFSafariExtensionHandler
中包含以下内容会在单击按钮时将工具栏项目图标更改为默认用户图标:
override func toolbarItemClicked(in window: SFSafariWindow) {
let image = NSImage(named: NSImageNameUser)
window.getToolbarItem { [=10=]?.setImage(image) }
}
您可以提供任何 NSImage
,但它应该符合 Apple 的 guidelines for template images。
我不知道为什么您链接到的 Safari App Extension Programming Guide 中没有对此进行记录。我怀疑此功能可能是后来添加的,并且该指南已过时。