Содержание содержимого
Содержание содержимого приводит к большей вероятности сжатия ваших этикеток.То, что вы хотите, это высота ярлыков, чтобы быть более уважаемым.Поэтому вы бы предпочли использовать приоритет сопротивления сжатию.Однако на самом деле вам не нужен ни один из них.
Ограничения макета
Поскольку вы устанавливаете свои ограничения программно, вам также необходимо установить translatesAutoresizingMaskIntoConstraints
в false
для ваших меток:
leftRow.translatesAutoresizingMaskIntoConstraints = false
rightRow.translatesAutoresizingMaskIntoConstraints = false
Нижнее ограничение на самом деле является хорошим началом, но вы не хотите без необходимости подгонять высоту меньшего ярлыка к высоте большого ярлыка.Поэтому вы хотели бы добавить ограничение, которое «меньше или равно нижнему якору»:
make.bottom.lessThanOrEqualTo(self.snp.bottom)
Ленивые переменные
Если вы хотите использовать переменные с отложенным доступом, вам придетсяизменить способ инициализации.Как вы и написали, он инициализирует переменные сразу при инициализации класса.Но вы хотите, чтобы они были инициализированы, когда они используются в первый раз.Для этого вам нужно написать это так:
private lazy var leftRow: UILabel = {
return UILabel()
}()
private lazy var rightRow: UILabel = {
return UILabel()
}()
Однако в вашем случае вам не нужна отложенная загрузка, поэтому вы можете инициализировать их напрямую:
private let leftRow = UILabel()
private let rightRow = UILabel()
Other
Поскольку вы используете ограничения макета, вам не нужно вызывать sizeToFit
на метках.Он ничего не делает.
Вызов layoutIfNeeded()
внутри init также ничего не делает, так как он будет вызван в любом случае, как только вы добавите ComponentCell
как подпредставление к другому представлению.