Як змінити шрифт UIButton за допомогою Swift


207

Я намагаюся змінити шрифт UIButton за допомогою Swift ...

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

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

Будь-які пропозиції?

Відповіді:


421

Використовуйте titleLabelзамість цього. fontВластивість застарілий в прошивкою 3.0. Це також не працює в Objective-C. titleLabel- це мітка, яка використовується для показу заголовка на UIButton.

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

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


1
Ви знаєте, хлопці, чому я маю "розмотувати"? мій лейбл ?? як це ... myButton.titleLabel! .font = ...
DanMoore

обумовлено НЕ titleLabelє обов'язковим property.Thanks раніше в бета - версії не було.
кодер

4
Цей метод дозволив мені змінити ім’я / стиль шрифту, але зміна властивості розміру не мало значення.
Дейв Г

7
Вам не потрібно змушувати розгортати етикетку. myButton.titleLabel?.font = ...буде працювати з тих пір, якщо, якщо titleLabel є нульовим, це буде просто
неоператор

1
Чому цей метод не працює для користувацького підкласу UIbutton?
Муніб

69

Для Swift 3.0 :

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

де "boldSystemFont" та "16" можна замінити на ваш власний шрифт та розмір.


44

Точкове позначення є дивним (стрімкий 4.2) 👌

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

@mahasam UIFont зроблений, ця відповідь така ж, як і інші, але просто без UIFont (але, оскільки це зроблено компілятором, але це те саме) PD: Я завжди намагаюся писати таким чином, але просто щоб дозволити вам знайте, що це те саме
Пабло Санчес Гомес

1
@mahasam: "Точкове позначення" - це те саме, що зроблено з висновку. І так, це корисна звичка прийняти. І це не такі самі відповіді, як інші, а більш її лаконічні, ніж інші відповіді. ІМО
еоніст

9

Вам не потрібно змушувати розкручувати titleLabel, щоб встановити його.

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

Оскільки ви тут не використовуєте titleLabel, ви можете необов'язково використовувати його, і якщо він нульовий, він буде просто неоперативним.

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


7

З документації :

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


5

Якщо у вас виникли проблеми з розміром шрифту (ваш шрифт не відповідає змінам розміру) ...

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

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

Однак розмір мого шрифту не змінювався. Виявляється, я прошу шрифту, який не існував ("HelveticaNeue-Regular"). Це не спричинило збій, але, здавалося, просто ігнорувало цю заяву шрифту через це. Як тільки я змінив шрифт на щось, що існує, зміни на "size: x" зробила візуалізацією.


5

ми можемо використовувати різні типи системних шрифтів, як показано нижче

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)

4

Ви повинні пройти через titleLabelвласність.

button.titleLabel.font

fontМайно застарілим з прошивкою 3.0.


4

Погляньте тут .

Ви повинні встановити шрифт заголовка кнопки Мітка.

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

4

Це працює в Swift 3.0:

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

4

Якщо ви встановлюєте AttributedString в UIButton, ви можете зробити наступне.

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

4

Якщо вам потрібно змінити лише розмір ( Swift 4.0 ):

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

2

Приклад: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • Якщо ви хочете використовувати шрифт за замовчуванням з власної родини, використовуйте, наприклад: "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))

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.