Могу ли я сделать значки текста для кнопок панели инструментов Safari App Extension менее уродливыми?
Расширения Safari App не позволяют динамически изменять изображения кнопок панели инструментов, но позволяют добавлять строку к кнопке в виде значка, передавая строку в обработчик расширения. 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")
}
К сожалению, этот текст под маркой не выглядит великолепно:
Я не могу найти в документации ничего о настройке внешнего вида текста, помеченного бейджем, но на всякий случай, есть ли способ избежать обрезки того, что предположительно должно быть круглым значком?
1 ответ
Я не думаю, что можно изменить внешний вид текста значка. Однако теперь можно динамически устанавливать изображение кнопки, используя элементы панели инструментов. setImage
метод.
Например, включая следующее в вашем SFSafariExtensionHandler
изменит значок элемента панели инструментов на значок пользователя по умолчанию при нажатии кнопки:
override func toolbarItemClicked(in window: SFSafariWindow) {
let image = NSImage(named: NSImageNameUser)
window.getToolbarItem { $0?.setImage(image) }
}
Вы можете предоставить любой NSImage
Тем не менее, он должен соответствовать рекомендациям Apple для шаблонов изображений.
Я не знаю, почему это не задокументировано в Руководстве по программированию расширений приложений Safari, на которое вы ссылаетесь. Я подозреваю, что эта функция могла быть добавлена позже и что Руководство устарело.