ScrollView 滚动出约束

ScrollView scrolls out of constraints

我里面有一个UIScrollView和一个UIStackView。我的问题是,滚动时,内容会超出其限制。为什么会这样?我必须设置一些其他的 constraints 吗?

这些是我的 constraints:

view.addSubview(theScrollView)
theScrollView.addSubview(theStackView)

    theScrollView.topAnchor.constraint(equalTo: theLabel.bottomAnchor, constant: 20).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).isActive = true
    theStackView.leadingAnchor.constraint(equalTo: theScrollView.leadingAnchor).isActive = true
    theStackView.trailingAnchor.constraint(equalTo: theScrollView.trailingAnchor).isActive = true
    theStackView.bottomAnchor.constraint(equalTo: theScrollView.bottomAnchor).isActive = true
    theStackView.widthAnchor.constraint(equalTo: theScrollView.widthAnchor).isActive = true

theLabel 是顶部的 "Konto erstellen"。知道我怎样才能适应它吗?

如果有任何不清楚的地方,请告诉我。

在你的 SignUpViewController class...

  • 您将 theScrollView 添加到 view
  • 您将 theStackView 添加到 theScrollView
  • 您向 theStackView 添加了视图
    • theStackView.addArrangedSubview(emailView)
    • theStackView.addArrangedSubview(anzeigeNameView)
    • theStackView.addArrangedSubview(用户名视图)
    • 美国。

但是然后您将其他视图添加到view:

  • view.addSubview(emailTextField)
  • view.addSubview(anzeigeNameTextField)
  • view.addSubview(用户名文本字段)

然后将这些视图限制为 theStackView 中的视图。当您滚动内容时,那些视图会随着堆栈视图的子视图一起移动,但它们 在滚动视图的层次结构之外

相反,您需要这样做:

    view.addSubview(theScrollView)
    theScrollView.addSubview(theStackView)

    theStackView.addArrangedSubview(emailView)
    emailView.addSubview(emailTextField)
    //view.addSubview(emailTextField)

    theStackView.addArrangedSubview(anzeigeNameView)
    anzeigeNameView.addSubview(anzeigeNameTextField)
    //view.addSubview(anzeigeNameTextField)

    theStackView.addArrangedSubview(usernameView)
    usernameView.addSubview(usernameTextField)
    //view.addSubview(usernameTextField)

现在你的文本字段将是它们各自视图的子视图,它们是堆栈视图的排列子视图。

执行此操作后您可能需要调整约束。