Когда я добавляю uibuttons к представлению стека, они появляются друг над другом - PullRequest
1 голос
/ 02 июля 2019

Я занимаюсь разработкой приложения для викторины и хочу отобразить вопрос с соответствующими вариантами ответов, но только один правильный ответ. Количество соответствующих для каждого вопроса зависит от вопроса (некоторые имеют 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



}

Синяя секция - это вид, который содержит вид кнопок в стеке. Возможные варианты для отображаемого вопроса: «Здесь», «Везде», «Везде», «Там», но отображается только последний вариант. Как сделать так, чтобы все варианты выбора были видны внутри стека и не накладывались друг на друга?

Снимок экрана текущей функциональности: введите описание изображения здесь

...