У меня есть метка заголовка, для которой я настраиваю размер шрифта, чтобы он соответствовал размеру метки. Я хотел бы сохранить значение этого размера шрифта, чтобы я мог установить для него размер шрифта некоторых кнопок.
Я попытался просто сохранить pointSize метки, но это просто дает мне нескорректированное значение, а не значение, которое фактически действует.
Причина этого в том, что я хочу, чтобы размер всего текста в метках и кнопках хорошо выглядел на экранах iPad разного размера. Но я изо всех сил пытаюсь сохранить одинаковый размер для нескольких элементов.
class ViewController: UIViewController {
@IBOutlet weak var essenceButton: UIButton!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var tribesButton: UIButton!
@IBOutlet weak var creaturesButton: UIButton!
@IBOutlet weak var monstersButton: UIButton!
@IBOutlet weak var musesButton: UIButton!
@IBOutlet weak var newsletterButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
self.titleLabel.adjustsFontSizeToFitWidth = true
let fontsize = self.titleLabel.font.pointSize
self.essenceButton.titleLabel?.font = essenceButton.titleLabel?.font.withSize(fontsize)
self.tribesButton.titleLabel?.font = tribesButton.titleLabel?.font.withSize(fontsize)
}
}
В viewDidLoad()
представление и его подвиды (включая метку) еще не были выложены на экран устройства, поэтому размер шрифта метки не изменился.
Вы должны быть в состоянии сделать это в viewWillLayoutSubviews()
:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
view.layoutIfNeeded()
// Code to adjust font of the other UI items here
}
О да. Ответ на этот stackoverflow.com/questions/2396715/… должен вам помочь. Если метка, которую вы используете для исходного шрифта, имеет динамический размер, вы все равно захотите сделать это после того, как представление разместит свои подпредставления.
к сожалению, я все еще получаю тот же результат. также пробовал viewDidLayoutSubviews(); но это тоже не работает.