iOS:在Interface Builder中使用动态内容大小创建UIScrollView
对于我的项目,我需要使用一个垂直滚动屏幕内容的iOS:在Interface Builder中使用动态内容大小创建UIScrollView,ios,swift,uiscrollview,interface-builder,Ios,Swift,Uiscrollview,Interface Builder,对于我的项目,我需要使用一个垂直滚动屏幕内容的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 r
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")
标签对容器视图的顶边、前缘、后缘和底边具有约束
但是,当我运行应用程序时,它不会动态设置UIScrollView的contentSize。
我不想使用其他堆栈溢出帖子中的技巧,在这些帖子中创建了运行时变量,或者视图在屏幕外变得更大
在没有代码的情况下,如何告诉interface builder 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()
在控制器的
updateViewConstraints()
中,以下操作成功:
“基本上,为了完成这项工作,您在容器视图中放置的所有视图都必须具有高度。某些视图将使用其固有的内容高度,该高度通常由宽度决定。一般来说,您需要为任何不包含文本的视图指定高度和宽度。确实包含文本的视图应至少具有指定的宽度或边距。”
教程应该可以帮助您解决这个问题您确定标签大小是否正确拉伸了吗?如
sizeToFit
是的,标签位于容器视图的正中央,标签上有sizeToFit(cmd+=),但是标签不可见,滚动视图不可滚动。我尝试调用label.sizeToFit()和scrollview.layoutSubviews()但是,在updateViewConstraints()中,这不会给出任何不同的结果。