2016-05-11 3 views
1

Я пытаюсь изменить шрифт кнопки на моем контроллере представления в своем коде, потому что он не работает в раскадровке. По какой-то причине я продолжаю пытаться, но не могу изменить шрифт моей кнопки. Вот как выглядит мой код. Имя шрифта, которое я выбрал, это «Печать ясно», и я уже настроил его правильно, чтобы он работал в текстовых полях, но у меня проблемы с кнопками.Изменение шрифта UIButton в Swift

@IBOutlet weak var songSuggestButton: UIButton! 
    var theFont : UIFont = UIFont(name: "Print Clearly", size: 12)! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    songSuggestButton.titleLabel?.font = theFont 
    print(songSuggestButton.titleLabel?.font.fontDescriptor()) 
} 

Отпечаток говорит мне шрифт разборчиво и размер 12, но по-прежнему отображается как шрифт по умолчанию, когда я бегу мое приложение.

Обновление: второй ответ на самом деле сработал для меня.

> Попробуйте это:

@IBOutlet weak var songSuggestButton: UIButton! 

override func viewDidAppear() { 
super.viewDidAppear(false) 
songSuggestButton.titleLabel?.font = UIFont(name: "Print Clearly", size: 12)! 
print(songSuggestButton.titleLabel?.font.fontDescriptor()) 
} 

Странно, как мои пользовательские шрифты для кнопки работают только при вызове через этот код. Я также хотел иметь разные размеры шрифта для разных размеров, есть ли способ сделать это? Благодарю.

+2

[Вы уверены, что имя шрифта?] (Http://stackoverflow.com/questions/31420758/swift-custom-fonts-xcode-7-0-beta/31420849#31420849) – Aladin

+0

@ DanielDoubt Для: " Я также хотел иметь разные размеры шрифта для разных размеров, есть ли способ сделать это? Спасибо. Это совсем другой вопрос. Поэтому, пожалуйста, задайте другой вопрос: D – Coder1000

ответ

5

Вы можете выполнить следующие инструкции:

  • загрузить и добавить свои файлы шрифтов для вашего проекта в Xcode (The файлы должны появляться, а в «Target ->Построить Phases ->Копия Bundle Ресурсы ").
  • В вашем Info.plist файл добавить ключ «Шрифты, предоставляемые приложением» с типом «Массив».
  • Для каждого шрифта, который вы хотите добавить в свой проект, создайте элемент для массива , который вы создали, с полным именем файла, включая его расширение (например, PrintClearly.ttf). Сохраните файл "Info.plist" .
  • Не забудьте включить пользовательские шрифты в «Copy Bundle Ресурсы» раздел, если вы уже не имеете или вы не сможете использовать их

Теперь вы можете использовать следующий код:

songSuggestButton.titleLabel?.font = UIFont (name: "Print Clearly", size: 12) 

UPDATE:

Вы можете поместить этот код, как в viewDidLoad или viewDidAppear, UIKit не является потокобезопасным и его следует обновлять только с основного потока.

Так, чтобы убедиться, вы будете обновлять свой интерфейс на главном потоке вы можете сделать:

dispatch_async(dispatch_get_main_queue()) { 
    songSuggestButton.titleLabel?.font = theFont 
    songSuggestButton.setNeedsDisplay() 
} 

Чтобы ответить на ваш последний вопрос, который вы должны знать, что ярлык ограничен, и при изменении размера этикетки, вы изменяете размер рамки метки и изменяете также его ограничения. Если у вас мало просмотров, лучший способ в iOS - сделать разные xib с разным размером метки и загрузить лучший xib для этого представления.

Смежные вопросы