У меня есть массив UIButton, который я пытаюсь добавить в горизонтальный UIStackView. Количество этих кнопок - динамическое c, и они могут стать настолько высокими, что не поместятся на экране.
Для моего варианта использования я хотел бы добавить кнопки слева от моего представления стека, в то время как они помещаются на экране. Итак, если у меня есть 10 кнопок, и после добавления 5-й не будет достаточно места для добавления 6-й кнопки, я хотел бы остановиться на этом моменте.
Кто-нибудь знает хороший подход для получения такого поведения ?
Мой текущий код выглядит примерно так:
import UIKit
class ViewController: UIViewController {
let items = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven"]
override func viewDidLoad() {
super.viewDidLoad()
let stackView = UIStackView()
stackView.axis = .horizontal
stackView.spacing = 5
view.addSubview(stackView)
for title in items {
let button = UIButton()
button.backgroundColor = .red
button.setTitle(title, for: .normal)
// if button.doesNotFit() {
// break
// }
stackView.addArrangedSubview(button)
}
let spacerView = UIView()
spacerView.setContentHuggingPriority(.defaultLow, for: .horizontal)
stackView.addArrangedSubview(spacerView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
stackView.heightAnchor.constraint(equalToConstant: 50).isActive = true
}
}
При этом я получаю следующий результат. Проблема в кнопках «Девять», «Десятка» и т. Д. c ... потому что они не подходят. Я бы не хотел, чтобы они добавлялись в UIStackView.