Настройка UIBarButtonItem в Swift
Я пытаюсь установить шрифт UIBarButtonItem
в AppDelegate
следующим образом:
let barButton = UIBarButtonItem.appearance()
barButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "AvenirNext", size: 15], forState: UIControlState.Normal)
Но это бросает мне ошибку компилятора:
Cannot invoke 'init' with an argument list type '($T7, forState: UIControlState)
и я понятия не имею, что это значит
Я также пробовал
barButton.titleTextAttributesForState(UIControlState.Normal) =[NSFontAttributeName...]
но кажется, что он не может быть назначен
Как я могу это сделать? большое спасибо!
Ответы
Ответ 1
Инициализатор UIFont
возвращает необязательный, поскольку он может завершиться неудачно из-за неправильного имени шрифта и т.д.
Вам нужно развернуть его и проверить:
if let font = UIFont(name: "AvenirNext", size: 15) {
barButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
ОБНОВЛЕНО для Swift 3
if let font = UIFont(name: "AvenirNext", size: 15) {
barButton.setTitleTextAttributes([NSFontAttributeName:font], for: .normal)
}
Ответ 2
Настройка пользовательского шрифта немного сложна, поскольку у них нет свойств font
и title
. Надеюсь, следующий ответ вам поможет.
let font = UIFont(name: "<your_custom_font_name>", size: <font_size>)
var leftBarButtonItem = UIBarButtonItem(title: "<font_hex_code>", style: UIBarButtonStyle.Plain, target: self, action: "buttonClicked:")
leftBarButtonItem.setTitleTextAttributes([NSFontAttributeName:font!], forState: UIControlState.Normal)
self.navigationItem.leftBarButtonItem = leftBarButtonItem
Ответ 3
if let font : UIFont = UIFont(name: "Roboto-Regular", size: 15)
{
cancelBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
doneBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}