Как изменить шрифт UIButton с помощью Swift

135

Я пытаюсь изменить шрифт UIButton с помощью Swift...

myButton.font = UIFont(name: "...", 10)

Однако .font устарел, и я не уверен, как изменить шрифт в противном случае.

Любые предложения?

Теги:
uibutton
uifont

16 ответов

309
Лучший ответ

titleLabel этого используйте titleLabel. Свойство font устарело в iOS 3.0. Это также не работает в Objective-C. titleLabel - это метка, используемая для отображения заголовка на UIButton.

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

Однако при настройке текста заголовка вы должны использовать только setTitle:forControlState: Не используйте titleLabel чтобы установить любой текст для заголовка напрямую.

  • 1
    Ребята, вы знаете, почему я должен «развернуть»? мой лейбл ?? вот так ... myButton.titleLabel! .font = ...
  • 0
    titleLabel является необязательным свойством. titleLabel ранее в бета-версии не было.
Показать ещё 2 комментария
52

Для Swift 3.0:

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

где "boldSystemFont" и "16" могут быть заменены вашим пользовательским шрифтом и размером.

12

Точечная нотация потрясающая (swift 4.2)

btn.titleLabel?.font = .systemFont(ofSize: 12)
  • 0
    эта работа для меня, спасибо. Я хочу изменить только размер текста, а не изменить имя шрифта.
  • 0
    @mahasam UIFont выводится, этот ответ такой же, как и другие, но только без UIFont (но потому, что он выводится компилятором, но он одинаковый). PD: Я всегда стараюсь писать таким образом, но просто чтобы позволить вам знаю, что это то же самое
Показать ещё 1 комментарий
7

Вам не нужно принудительно разворачивать titleLabel, чтобы установить его.

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

Так как вы не используете titleLabel здесь, вы можете просто использовать его, и если он будет равен нулю, это будет просто no-op.

Я также добавлю, как говорят другие люди, свойство шрифта устарело и не забудьте использовать setTitle:forControlState: при настройке текста заголовка.

6

Из documentation:

Шрифт, используемый для отображения текста на кнопке. (Устаревший в iOS 3.0). Вместо этого используйте свойство font titleLabel.)

5

Если у вас проблемы с размером шрифта (ваш шрифт не отвечает на изменения размера)...

@codester имеет правильный код:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

Однако размер моего шрифта не менялся. Оказывается, я прошу шрифта, которого не было ( "HelveticaNeue-Regular" ). Это не вызвало краха, но, похоже, просто игнорировало это утверждение шрифта из-за этого. Как только я изменил шрифт на то, что существует, изменения в "size: x" отображались.

4

Это работает в Swift 3.0:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 
4

Посмотрите здесь.

Вместо этого вы должны установить шрифт кнопки titleLabel.

myButton.titleLabel!.font = UIFont(name: "...", 10)
  • 0
    это неправильно, вам нужен myButton.titleLabel! .font
3

Если вы устанавливаете AttributedString для UIButton, то вы можете сделать следующее.

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)
3

Вы должны пройти через свойство titleLabel.

button.titleLabel.font

Свойство font устарело с iOS 3.0.

2

мы можем использовать различные типы системных шрифтов, как показано ниже

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

и ваш собственный шрифт, как показано ниже

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)
2

Если вам нужно изменить только размер (Swift 4.0):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)
1

Пример: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • Если вы хотите использовать шрифт defaul из собственного семейства, используйте, например: "HelveticaNeue"
  • Если вы хотите указать семейный шрифт, используйте, например: "HelveticaNeue-Bold"
1

Теперь этот способ не работает:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

Это работает:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)
0

эта работа для меня, спасибо. Я хочу изменить только размер текста, а не изменить имя шрифта.

var fontSizeButtonBig:Int = 30

btnMenu9.titleLabel?.font =.systemFont(ofSize: CGFloat (fontSizeButtonBig))

0

В Xamarin.iOS вы можете написать код на С# следующим образом:

myButton.TitleLabel.Font = UIFont.FromName( "Helvetica-Bold", 33f);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню