Я занимаюсь разработкой приложения для викторины и хочу отобразить вопрос с соответствующими вариантами ответов, но только один правильный ответ. Количество соответствующих для каждого вопроса зависит от вопроса (некоторые имеют 2,3,4 и т. Д.). Выбор отображается с помощью кнопки UIButton, и каждая кнопка добавляется в UIStackView. Количество кнопок зависит от того, сколько возможных вариантов есть у вопроса. Например, если у вопроса есть 2 варианта, то для просмотра стека выделяются 2 кнопки.
Однако, когда я добавляю кнопку в представление стека, каждая кнопка помещается прямо друг на друга, но я хочу, чтобы они располагались вертикально и равномерно. Вот мой текущий код:
func viewConfiguration() {
questionView.topAnchor.constraint(equalTo: headerView.bottomAnchor).isActive = true
questionView.widthAnchor.constraint(equalTo: headerView.widthAnchor).isActive = true
questionView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.385).isActive = true
choicesView.topAnchor.constraint(equalTo: questionView.bottomAnchor).isActive = true
choicesView.widthAnchor.constraint(equalTo: questionView.widthAnchor).isActive = true
choicesView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
// Adds question title label to questionVIew hierarchy
let questionLabel = UILabel()
questionLabel.translatesAutoresizingMaskIntoConstraints = false
questionView.addSubview(questionLabel)
questionLabel.backgroundColor = UIColor.yellow
questionLabel.centerXAnchor.constraint(equalTo: questionView.centerXAnchor).isActive = true
questionLabel.centerYAnchor.constraint(equalTo: questionView.centerYAnchor).isActive = true
// Adds question choices to choicesView hierarchy
var questionChoices = [UIButton]()
var buttonStack: UIStackView = {
var stack = UIStackView()
stack.translatesAutoresizingMaskIntoConstraints = false
stack.axis = .vertical
stack.distribution = .fillEqually
return stack
}()
let questionData = QuestionData()
questionData.presentQuestion(label: questionLabel, buttons: &questionChoices)
print("NUMBER OF BUTTONS IS --> \(questionChoices.count)")
choicesView.addSubview(buttonStack)
for button in questionChoices {
buttonStack.addArrangedSubview(button)
}
buttonStack.heightAnchor.constraint(equalTo: choicesView.heightAnchor, multiplier: 0.875).isActive = true
buttonStack.widthAnchor.constraint(equalTo: choicesView.widthAnchor, multiplier: 0.9).isActive = true
buttonStack.topAnchor.constraint(equalTo: choicesView.topAnchor, constant: 15).isActive = true
buttonStack.centerXAnchor.constraint(equalTo: choicesView.centerXAnchor).isActive = true
}
Синяя секция - это вид, который содержит вид кнопок в стеке. Возможные варианты для отображаемого вопроса: «Здесь», «Везде», «Везде», «Там», но отображается только последний вариант. Как сделать так, чтобы все варианты выбора были видны внутри стека и не накладывались друг на друга?
Снимок экрана текущей функциональности: введите описание изображения здесь