Это может быть что-то столь же простое, поскольку атрибут шрифта применяется только тогда, когда состояние кнопки .normal
(как указано).
Возможно, вам потребуется указать, что все состояния кнопкипримените эти атрибуты текста заголовка, например, так:
let title = publicSVGAssets().menu
let style = UIBarButtonItemStyle.plain
let selector = #selector(menuAction)
let menuButton = UIBarButtonItem(title: title, style: style, target: self, action: selector)
let font = UIFont(name: "icomoon", size: 25)
let attributesDictionary: [NSAttributedStringKey: Any]? = [NSAttributedStringKey.font: font!, NSAttributedStringKey.foregroundColor : UIColor.red]
menuButton.setTitleTextAttributes(attributesDictionary, for: .normal)
menuButton.setTitleTextAttributes(attributesDictionary, for: .selected)
menuButton.setTitleTextAttributes(attributesDictionary, for: .highlighted)
self.navigationItem.rightBarButtonItem = menuButton
Нажатие на кнопку изменит ее состояние.Это может быть причиной того, что вы видите, как он меняет значок, когда вы нажимаете на него.
Примечание: если вам когда-либо понадобится показать кнопку в каком-либо другом состоянии (например, disabled
), вам нужно будет присвоить этот же заголовокатрибуты текста для этого состояния.
... например:
menuButton.setTitleTextAttributes(attributesDictionary, for: .disabled)
(Примечание: это ответ, аналогичный тому, который дал @Satish).