Могу ли я сделать значки текста для кнопок панели инструментов 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, на которое вы ссылаетесь. Я подозреваю, что эта функция могла быть добавлена ​​позже и что Руководство устарело.

Другие вопросы по тегам