对于我的项目,我需要使用一个 UIScrollView
来垂直滚动屏幕内容。屏幕的内容可以在屏幕外增长,因为有一个具有动态大小的标签。
我在 Interface Builder 中执行了以下操作:
-View
--UIScrollView (constraint to superview "View": 0,0,0,0)
---UIView/contentview (constraint to superview "UIScrollView": 0,0,0,0) + equals width to root view "View"
----subview ..
----subview .. etc
----Label("Some huge dynamic text")
标签对容器 View 的顶部、前导、尾部和底部边缘有约束。
但是,当我运行该应用程序时,它不会为 UIScrollView 动态设置 contentSize。 我不想使用其他 Stack Overflow 帖子中创建运行时变量或将 View 放大到屏幕外的技巧。
你如何在没有代码的情况下告诉界面构建器,UIScrollView 应该根据内容动态增长并且只能垂直滚动?
最佳答案
尝试调用 label.sizeToFit()
和 scrollView.layoutSubviews()
。
如果这不起作用,请尝试向您的标签添加高度限制并手动将其常量设置为您需要的大小:
let expectedSize = label.sizeThatFits(CGSize(width: scrollView.frame.size.width, height: CGFloat.max))
labelHeightConstraint.constant = expectedSize.height
self.view.layoutSubviews()
在 Controller 的 updateViewConstraints()
中。
关于iOS:在 Interface Builder 中创建具有动态 contentSize 的 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35657080/