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

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

myButton.font = UIFont(name: "...", 10)
.font устарел, и я не уверен, как изменить шрифт в противном случае.

какие предложения?

14 ответов


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

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

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


на Swift 3.0:

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

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


С документация:

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


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

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

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

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


точка-обозначение является удивительным (swift 4.2)

btn.titleLabel?.font =  .systemFont(ofSize: 12)

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

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

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

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


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

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

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

button.titleLabel.font

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


посмотреть здесь.

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

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

этот способ не работает сейчас:

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

это работает:

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

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

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

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

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

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

var fontSizeButtonBig:Int = 30

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


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

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