ВАРИАНТ № 1 - АВТО НАСТРОЙКА
Установите размер шрифта большим и уменьшите его при необходимости, например:
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.01
Выпросто нужно установить начальный размер, чтобы быть гигантским.Это только уменьшает, а не увеличивает.
Недостатком здесь является то, что если вы делаете что-то действительно большое, например:
label.font = UIFont.systemFont(ofSize: 500)
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.0001
Высота метки будет основана на 500,по умолчанию.
ВАРИАНТ № 2 - ВРУЧНУЮ РЕГУЛИРОВКУ ДЛЯ ПОДСТАВКИ
func updateLabel(_ s: String, label: UILabel) {
var size = 222 as CGFloat
repeat {
let textSize = s.size(withAttributes:[.font: UIFont.systemFont(ofSize:size)])
if textSize.width <= label.frame.width {
break
}
size -= 0.10
} while (size > 4)
label.font = UIFont.systemFont(ofSize: size)
label.text = s
}
Быстрый пример: видео и исходный код .Верхняя метка использует Вариант № 1, а нижняя метка использует Вариант № 2.
Вы можете видеть, что вариант №2 работает лучше, чем управляемый системой способ.Возможно, он также требует больше ресурсов процессора, но, возможно, не имеет значения, выполняете ли вы это только один раз для каждой метки.
Возможно, ваш фрейм метки не соответствует размеру, который вы о нем думаете, потому что вытолько устанавливаем topAnchor .Вы также устанавливаете другие или делаете ограничение ширины или что-то?
Если метка должна заполнять ячейку, вы могли бы сделать что-то вроде этого:
override func setupViews(){
super.setupViews()
addSubview(dateLabel)
dateLabel.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
dateLabel.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
dateLabel.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true
dateLabel.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true
}
Другое предложение будетчтобы запустить приложение в XCode и затем использовать инструмент отладчика представления - щелкните эту вещь:
Это покажет в разобранном виде вашего экранав Xcode вместе с кадрами всех ваших просмотров.Проверьте, действительно ли размер этикетки соответствует вашим ожиданиям.