1

Safari App Extensions不允许您动态更改工具栏按钮图像,但它们允许您通过将字符串传递给扩展处理程序的方法来将字符串作为标记添加到按钮: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")
    }

不幸的是,这个带有标记的文本看起来不太好:

在此处输入图像描述

我在文档中找不到有关自定义标记文本外观的任何内容,但以防万一,有没有办法避免剪裁可能是圆形徽章的内容?

4

1 回答 1

2

我认为无法更改徽章文本的外观。但是,现在可以使用工具栏项的setImage方法动态设置按钮图像。

例如,包括以下内容SFSafariExtensionHandler将在单击按钮时将工具栏项图标更改为默认用户图标:

override func toolbarItemClicked(in window: SFSafariWindow) {
    let image = NSImage(named: NSImageNameUser)
    window.getToolbarItem { $0?.setImage(image) }
}

您可以提供任何NSImage,但它应该符合 Apple 的模板图像指南

我不知道为什么您链接到的 Safari App Extension Programming Guide 中没有记录这一点。我怀疑此功能可能是后来添加的,并且该指南已过时。

于 2017-05-09T20:28:12.030 回答