Я динамически создавал ячейки с использованием автоматического макета (без раскадровки или xib), но, похоже, менеджер макета
спаривание клеток таким образом, чтобы короткая и высокая клетка рядом друг с другом составляли ряд.
То, что я хочу, - это иметь ячейки с одинаковым расстоянием между ними (сложенные вертикально) вместо больших пустых промежутков. Таким образом, три последовательные короткие ячейки, идущие вниз слева, могут быть равны по высоте и положению одной большой ячейке справа. Другими словами: равномерное расстояние по вертикали между всеми клетками.
/// Everything is a side effect. Configure the cell passed in
///
/// - Parameters:
/// - cell: cell to format
/// - indexPath: index of cell
func formatAutolayoutCell(cell: AutoResizingTextCell, at indexPath: IndexPath) {
let event = eventsSource[indexPath.row]
cell.layer.borderColor = event.calendar.cgColor
cell.contentView.backgroundColor = UIColor(cgColor: event.calendar.cgColor).withAlphaComponent(0.1)
cell.titleLabel.text = event.title
cell.contentView.addSubview(cell.titleLabel)
cell.titleLabel.topAnchor.constraint(equalTo: cell.contentView.topAnchor).isActive = true
cell.titleLabel.widthAnchor.constraint(equalToConstant: cellWidth).isActive = true
cell.titleLabel.textColor = UIColor(cgColor: event.calendar.cgColor)
cell.titleLabel.textAlignment = .center
cell.contentView.addSubview(cell.bodyLabel)
cell.bodyLabel.text = event.notes ?? ""
cell.bodyLabel.widthAnchor.constraint(equalToConstant: cellWidth).isActive = true
cell.bodyLabel.bottomAnchor.constraint(equalTo: cell.contentView.bottomAnchor).isActive = true
cell.titleLabel.bottomAnchor.constraint(equalTo: cell.bodyLabel.topAnchor).isActive = true
}
EDIT:
Используя предложение Galo Torres Sevilla
, я попытался использовать UICollectionViewLayout
. Это приближает меня к моей цели, но похоже, что количество ячеек делится поровну по столбцам, поэтому, если в крайнем левом столбце есть короткие ячейки, у него заканчиваются ячейки «рано», а на левой стороне много места. низ. Вероятно, мне нужно отсортировать ячейки по размеру, чтобы получить лучшее распределение.