Я пытаюсь реализовать ячейку просмотра таблицы, которая отображает серию значков, которые представляют домашние удобства (например, полотенца, wifi, прачечная и т. Д.). Ячейка может потенциально отображать большое количество удобств (в зависимости от того, сколько у вас дома), поэтому я отображу максимум три и укажу, что вы можете просмотреть больше, нажав на ячейку, если их больше трех. Вот то, что она должна выглядеть (из приложения AirBnB в):Программно добавить subviews в UIStackView
Я пытаюсь сделать это динамически добавлять UIImageViews к UIStackView в табличном ячейке. Я использую UIStackView с настройкой выравнивания, установленной «Заполнить», а дистрибутив - «Равное расстояние», идея состоит в том, что представление стека будет равномерно размещать значки независимо от того, сколько я добавляю к нему.
Я установил представление стека в Раскадровка. У этого есть ограничения на верхний, нижний, левый и правый поля его содержимого, чтобы он заполнил ячейку просмотра таблицы, вплоть до полей.
Вот код, который я использую, чтобы попытаться динамически добавлять UIImageViews в ячейку. Примечание amenities
массив строк равно именами значков в моей папке изображений активов:
cell.stackView.backgroundColor = UIColor.greenColor()
var i = 0
while (i < amenities.count && i < 4) {
if (i < 3) {
let imageView = UIImageView(image: UIImage(named: amenities[i]))
imageView.contentMode = .ScaleAspectFit
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = UIColor.blueColor()
// Add size constraints to the image view
let widthCst = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 50)
imageView.addConstraint(widthCst)
// Add image view to stack view
cell.stackView.addSubview(imageView)
} else {
// Add a label to the stack view if there are more than three amenities
let label = UILabel()
label.text = "\(amens.count - i) more"
label.textAlignment = NSTextAlignment.Left
cell.stackView.addSubview(label)
}
i++
}
Фоны взглядов изображения синего цвета, а цвет фона зрения стека зеленый. Вот результат, для случая, когда в доме есть три удобства:
выглядит как все виды изображения подталкивают друг на друга в левой части экрана. Они также заполняют представление содержимого ячейки сверху вниз, даже если представление стека привязано к полям представления содержимого. Зеленая зеленая не видна, поэтому кажется, что вид стека не остается прикрепленным к краям ячейки.
Подумайте, что здесь не так?
Использование 'addArrangedSubview' – dan