Я пытаюсь реализовать 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-е изображение).
Другая проблема заключается в том, что при прокрутке представления он прокручивается на оси x и y, но я бы ограничил это, чтобы пользователь мог только прокручивать вверх или вниз.
И, наконец, eyeButtons
вообще не отображаются.
Я полагаю, я есть недоразумение о том, как ограничить внутри StackView
внутри ScrollView
. Кто-нибудь знает, что я делаю не так?