我可以为Safari App Extension工具栏按钮制作文本徽章不那么难看吗?

时间:2016-12-09 01:15:05

标签: macos safari safari-app-extension

Safari App Extensions不允许您动态更改工具栏按钮图像,但他们会通过将字符串传递给扩展程序处理程序的validationHandler方法来让您add a string to the button as a badge

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")
    }

不幸的是,这个带徽章的文字看起来不太好:

enter image description here

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

1 个答案:

答案 0 :(得分:2)

我认为不可能改变徽章文字的外观。但是,现在可以使用工具栏项setImage method动态设置按钮图像。

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

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

您可以提供任何NSImage,但它应符合Apple的guidelines for template images

我不知道为什么在您链接到的Safari App Extension编程指南中没有记录这一点。我怀疑此功能可能稍后添加,并且指南已过期。