iOS:在 Interface Builder 中创建具有动态 contentSize 的 UIScrollView

标签 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 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/

相关文章:

ios - 在 viewDidLoad 之外时自定义类对象为 NULL?

objective-c - fetchedResultsController 没有正确更新第一行

swift - 非通用协议(protocol)需要类型删除的 Any... 结构吗?

xcode - UIBarButtonItem 没有出现在 UIToolbar Swift 上

ios - 快速内存泄漏

iphone - 以图形方式布局 ScrollView (页面 View )

ios - 动画 ScrollView 高度 - 内容在动画之前突然跳起来

iphone - sibling 的UIViewAutoresizing?

swift - NSLayoutAnchor 无法在 UITableViewCell 中使用 UIScrollViews

ios - 如何从表格 View 行单元格中删除单独的行?