У меня есть куча UILabel, но следующий UILabel (lastMessage) показывает только одну строку. Предполагается, что он усекается хвостом, но нет эллипсов, что означает, что вторая строка просто не существует. Кроме того, dateTime UILabel также не отображается. Может ли это быть как-то связано с моими ограничениями автопоставки? Мой код для UITableViewCell:
let nameLabel = UILabel()
let lastMessage = UILabel()
let profileImageView = UIImageView(image: #imageLiteral(resourceName: "blankAvatar"))
let dateTime = UILabel()
required init?(coder aDecoder: NSCoder) {super.init(coder: aDecoder)}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
nameLabel.numberOfLines = 1
nameLabel.tintColor = .label
nameLabel.font = .boldSystemFont(ofSize: 18)
nameLabel.translatesAutoresizingMaskIntoConstraints = false
dateTime.numberOfLines = 1
dateTime.tintColor = .label
dateTime.text = "7:03"
dateTime.translatesAutoresizingMaskIntoConstraints = false
lastMessage.numberOfLines = 2
lastMessage.tintColor = .lightGray
lastMessage.lineBreakMode = .byTruncatingTail
lastMessage.translatesAutoresizingMaskIntoConstraints = false
profileImageView.contentMode = .scaleAspectFill
profileImageView.layer.cornerRadius = profileImageView.frame.size.width
profileImageView.clipsToBounds = true
profileImageView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(profileImageView)
contentView.addSubview(nameLabel)
contentView.addSubview(lastMessage)
contentView.addSubview(dateTime)
contentView.layoutMargins = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 3)
let lg = contentView.layoutMarginsGuide
NSLayoutConstraint.activate([
profileImageView.leadingAnchor.constraint(equalTo: lg.leadingAnchor),
profileImageView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor),
profileImageView.heightAnchor.constraint(equalToConstant: 50),
profileImageView.widthAnchor.constraint(equalToConstant: 50),
nameLabel.topAnchor.constraint(equalTo: lg.topAnchor),
nameLabel.leadingAnchor.constraint(equalTo: profileImageView.trailingAnchor, constant: 6),
nameLabel.trailingAnchor.constraint(equalTo: dateTime.leadingAnchor),
nameLabel.bottomAnchor.constraint(equalTo: lastMessage.topAnchor, constant: 6),
dateTime.topAnchor.constraint(equalTo: lg.topAnchor),
dateTime.trailingAnchor.constraint(equalTo: lg.trailingAnchor),
dateTime.bottomAnchor.constraint(equalTo: lastMessage.topAnchor),
lastMessage.leadingAnchor.constraint(equalTo: profileImageView.trailingAnchor, constant: 6),
lastMessage.trailingAnchor.constraint(equalTo: lg.trailingAnchor),
lastMessage.bottomAnchor.constraint(equalTo: lg.bottomAnchor)
])
}
Это было в init. Спасибо!
Редактировать: UITableViewCell не был проблемой. Я встроил таблицу в горизонтальный UIScrollView ( repo ), но мои автоматические ограничения макета для таблицы были верхний, ведущий, конечный и нижний якорь. Я переключил его на конечный якорь, чтобы вместо него можно было использовать якорь ширины с константой view.bounds.width
.