ограничить StackView внутри ScrollView - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь реализовать UIStackView внутри UIScrollView, но у меня возникают проблемы с его корректным ограничением. Это мои constrains:

func setUpViews() {

    view.addSubview(backgroundImage)
    view.addSubview(backButton)
    view.addSubview(theScrollView)
    theScrollView.addSubview(theStackView)
    theStackView.addArrangedSubview(emailTextField)
    theStackView.addArrangedSubview(anzeigeNameTextField)
    theStackView.addArrangedSubview(wishlistHandleTextField)
    theStackView.addArrangedSubview(passwordTextField)
    theStackView.addArrangedSubview(passwordWiederholenTextField)
    theStackView.addArrangedSubview(documentsLabel)
    theStackView.addArrangedSubview(signUpButton)
    view.addSubview(eyeButtonOne)
    view.addSubview(eyeButtonTwo)

    backgroundImage.topAnchor.constraint(equalTo: view.topAnchor, constant: -20).isActive = true
    backgroundImage.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 20).isActive = true
    backgroundImage.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: -20).isActive = true
    backgroundImage.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 20).isActive = true

    backButton.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 30).isActive = true
    backButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30).isActive = true
    backButton.heightAnchor.constraint(equalToConstant: 30).isActive = true
    backButton.widthAnchor.constraint(equalToConstant: 30).isActive = true

    theScrollView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 120).isActive = true
    theScrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30).isActive = true
    theScrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -30).isActive = true
    theScrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

    theStackView.topAnchor.constraint(equalTo: theScrollView.topAnchor, constant: 400).isActive = true
    theStackView.leadingAnchor.constraint(equalTo: theScrollView.leadingAnchor, constant: 30).isActive = true
    theStackView.trailingAnchor.constraint(equalTo: theScrollView.trailingAnchor, constant: -30).isActive = true
    theStackView.bottomAnchor.constraint(equalTo: theScrollView.bottomAnchor).isActive = true
    theStackView.widthAnchor.constraint(equalTo: theScrollView.widthAnchor).isActive = true

    emailTextField.heightAnchor.constraint(equalToConstant: 60).isActive = true
    anzeigeNameTextField.heightAnchor.constraint(equalToConstant: 60).isActive = true
    wishlistHandleTextField.heightAnchor.constraint(equalToConstant: 60).isActive = true
    passwordTextField.heightAnchor.constraint(equalToConstant: 60).isActive = true
    passwordWiederholenTextField.heightAnchor.constraint(equalToConstant: 60).isActive = true
    documentsLabel.heightAnchor.constraint(equalToConstant: 60).isActive = true
    signUpButton.heightAnchor.constraint(equalToConstant: 50).isActive = true

    eyeButtonOne.trailingAnchor.constraint(equalTo: passwordTextField.trailingAnchor, constant: -5).isActive = true
    eyeButtonOne.centerYAnchor.constraint(equalTo: passwordTextField.centerYAnchor, constant: 10).isActive = true

    eyeButtonTwo.trailingAnchor.constraint(equalTo: passwordWiederholenTextField.trailingAnchor, constant: -5).isActive = true
    eyeButtonTwo.centerYAnchor.constraint(equalTo: passwordWiederholenTextField.centerYAnchor, constant: 10).isActive = true

}

Когда отображается View, StackView расположен неправильно (1-е изображение) и только после выбора A textfield он перемещается в центр, как и всегда быть (2-е изображение).

enter image description hereenter image description here

Другая проблема заключается в том, что при прокрутке представления он прокручивается на оси x и y, но я бы ограничил это, чтобы пользователь мог только прокручивать вверх или вниз.

И, наконец, eyeButtons вообще не отображаются.

Я полагаю, я есть недоразумение о том, как ограничить внутри StackView внутри ScrollView. Кто-нибудь знает, что я делаю не так?

...