ScrollView 滚动出约束

Posted

技术标签:

【中文标题】ScrollView 滚动出约束【英文标题】:ScrollView scrolls out of constraints 【发布时间】:2020-03-04 13:15:20 【问题描述】:

我在其中有一个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”。知道我怎么能适应它吗?

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

【问题讨论】:

尝试过使用视图层级调试器调试视图吗? 是的,stackViewscrollView 就位,但不知何故,stackView 内的项目在它之外 检查theScrollView.clipsToBounds = true 是的。 scrollVIew 和 `stackView` 这是我的完整项目:github.com/DieGlueckswurst/Wishlist 也许有帮助 【参考方案1】:

在您的SignUpViewController 班级中...

您将theScrollView 添加到view 您将theStackView 添加到theScrollView 您将视图添加到theStackView StackView.addArrangedSubview(emailView) StackView.addArrangedSubview(anzeigeNameView) StackView.addArrangedSubview(usernameView) usw.

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

view.addSubview(emailTextField) view.addSubview(anzeigeNameTextField) view.addSubview(usernameTextField)

然后您将这些视图限制为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)

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

完成此操作后,您可能需要调整约束。

【讨论】:

mmmm,这实际上修复了它,谢谢!我知道我以前有过这样的情况,但我改变了,因为有些东西没有按应有的方式工作。但是,现在一切正常。感谢您的帮助:)

以上是关于ScrollView 滚动出约束的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 ScrollView 和 Horizo​​ntalScrollView 实现对角滚动?

同一视图上的多个手势(从可滚动视图中拖出视图)无法正常工作?

iOS UIScrollView 无法滚动 没有弹簧效果解决方案

Swift:ScrollView 不滚动(如何设置约束)?

UIScrollView 可滚动区域未随 scrollView 框架约束更新而更新

iOS 用xib给scrollView添加约束