Вы можете использовать Array.map
let a = [1, 2, 3];
let b = ["a", "b", "c"];
let c = a.map((v,i) => ({a:v, b: b[i]}));
console.log(c);
Хотя уже довольно поздно, я все равно публикую этот ответ . В большинстве случаев вам не нужно переустанавливать свои ограничения и повторно добавлять ваши подпредставления в ваше представление super / parent. Таким образом, ваши setUpViews()
и setUpConstraints()
должны быть действительно внутри override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)
, например, так:
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setUpViews()
setUpConstraints()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Кроме того, вам не нужно (в большинстве случаев, опять же), по крайней мере для меня, установить приоритеты для ваших ограничений. По мере возможности решайте проблемы / предупреждения об ограничениях без снижения приоритетов.
badLabel.layoutIfNeeded()
тоже не нужно, если только вы на самом деле не изменяете некоторые константы своих ограничений или не перестраиваете свое ограничение. Хорошо, имеет смысл использовать такую строку, если вы ДЕЙСТВИТЕЛЬНО хотите настроить все в вашем layoutSubviews()
Весь этот класс, похожий на вашу ячейку, работал для меня:
class BadCustomTableViewCell: UITableViewCell {
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setUpViews()
setUpConstraints()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let badLabel:UILabel = {
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 40, weight: UIFont.Weight.light)
label.text = "899"
label.textColor = .black
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
func setUpViews() {
contentView.addSubview(badLabel)
}
func setUpConstraints() {
badLabel.centerXAnchor.constraint(equalTo: contentView.centerXAnchor).isActive = true
let safeMargin:CGFloat = badLabel.frame.size.width - 15
badLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: -safeMargin).isActive = true
badLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: safeMargin).isActive = true
}
}
Опустите нижнее ограничение
let con = badLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -safeMargin)
con.priority = UILayoutPriority(999)
con.isActive = true
и добавьте настройки & amp; ограничения внутри
override init(style: UITableViewCell.CellStyle,reuseIdentifier: String?)
как
override func layoutSubviews()
называются несколько раз `