У меня есть несколько UILabels с различным текстом внутри них.У меня есть пользовательская метка со свойством AdjustmentsFontSizeToFitWidth, равным true, и numberOfLines, равным 0. Это заставляет шрифт размером с каждую метку занимать всю UILabel.Проблема в том, что из-за разного размера шрифта у каждого UILabel свой шрифт.Кроме того, в некоторых случаях шрифт переносится на следующую строку.Вот две картины поведения, которое происходит. Использование numberOfLines = 0 Использование numberOfLines = 1
class MyCustumLabel: UILabel {
let fontSize : CGFloat = 3000
init(text: String) {
super.init(frame: .zero)
self.text = text
self.font = UIFont.init(name: myFont, size: fontSize)
self.numberOfLines = 1
self.adjustsFontSizeToFitWidth = true
self.baselineAdjustment = .alignCenters
self.backgroundColor = .clear
self.textAlignment = .center
self.textColor = .white
self.translatesAutoresizingMaskIntoConstraints = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Мне бы хотелось, чтобы каждый текст UILabels находил самый большой размер шрифта, который будет соответствовать его размеру.соответствующий вид, пока только на одной линии.Затем мне нужно взять наименьший шрифт из всех меток и применить этот шрифт к каждой средней метке.Это приведет к тому, что все шрифты UILabels будут иметь максимально возможный размер в одной строке, при этом все они будут одинаковыми друг с другом.
Я думал о том, как получить размер шрифта для каждой метки с помощью label.fontSize после его настройки, ноон просто возвращает назначенный размер шрифта 3000. Я не могу найти способ получить размер текста после того, как он был отрегулирован по ширине.
Я также попытался с помощью минимального ScaleFactor безуспешно.
Я не уверен, имеет ли это какое-то значение, но каждое представление удерживается внутри представления стека.Я думал об использовании табличного представления для хранения представлений, но это подход, который я использовал.
Любая помощь будет высоко ценится.