在ScrollView内约束StackView

时间:2020-03-02 19:08:54

标签: ios swift uiscrollview uistackview

我正在尝试在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放置错误(第一张图片),并且只有在选择了textfield之后,它才应该一直移动到中央(第二张图片)。

enter image description here enter image description here

另一个问题是,当我滚动视图时,它可以在x轴和y轴上滚动,但是我限制了它,因此用户只能向上或向下滚动。

最后但并非最不重要的eyeButtons根本没有显示。

我想我对如何约束StackView内的ScrollView内有误解。有人知道我在做什么错吗?

0 个答案:

没有答案