Свифт, как динамически добавить количество просмотров с ограничениями - PullRequest
0 голосов
/ 30 августа 2018

Я разрабатываю быстрое приложение, которое поместит 10 элементов на экране. Если бы я хотел сделать это на экране, который не изменил бы размер, т. Е. Пользователь не изменил ориентацию или пользователь iPad не использовал разделенный экран, я бы смог определить ширину, выполнив let size = bounds.width/19.

Проблема в том, что размер экрана является динамическим, поэтому мне нужно делать это с ограничениями. Я не хотел бы использовать UICollectionView, поскольку он слишком тяжелый, и также не хотел бы использовать UIStackView, если это возможно, поскольку я не думаю, что он поддерживает соотношение сторон, которое мне нужно для кругов. Я пытаюсь использовать UIViews.

Edit: Вот как я хочу, чтобы они выглядели. Это будет около 50, а другая информация будет внизу.

enter image description here

1 Ответ

0 голосов
/ 30 августа 2018

UIStackView - правильный инструмент для этой работы. В будущем я рекомендую более строго определить, что вы хотите, чтобы произошло сначала, а затем погрузиться в документацию.

let sv = UIStackView()
sv.spacing = 10
// this means each arranged subview will take up the same amount of space
sv.distribution = .fillEqually 

for _ in 0..<50 { 
    // omitting the rounded corners or any other styling because
    // it's not the point of this question
    let subview = UIView()
    // The stack view will determine the width based on the screen size
    // we just need to say that height == width
    subview.widthAnchor.constraint(equalTo: subview.heightAnchor).isActive = true
    sv.addArrangedSubview(subview)
}

// add your stackview to your view hierarchy and constrain it
...