iOS - 动态高度、数据驱动、垂直滚动布局

标签 ios swift ios-autolayout

我正在尝试在图像中创建布局

enter image description here

主要要求如下:

  • 每个部分中的内容都是数据驱动的,并从 API 中检索。
  • 每个部分的高度是动态的,具体取决于我们拥有的字段数量。
  • 场景高度是动态的。
  • 场景可垂直滚动。

这是我尝试做的: - 使用静态单元格 UITableView - 使用带有 ScrollView 的堆栈 View

在这两种情况下,我都在处理动态数据字段的堆栈 View 时遇到了困难,并且在处理每个部分的动态高度时遇到了困难。

有什么想法吗?

最佳答案

您的要求非常简单,可以使用 UITableView 来满足。使用动态 UITableViewCell。我选择动态表格 View 单元格的原因是您可以根据内容调整单元格高度。在 tableView:heightForRowAtIndexPath: 中测量您的内容大小.

流程如下:

  1. 发起api调用
  2. 当数据不可用时,根据您的占位符 View (即占位符图像高度)返回单元格高度
  3. 当数据可用时,处理您的数据并重新加载 TableView
  4. 重新加载表格 View 后,表格 View 将再次询问每个单元格的高度,因此这是您计算内容高度的机会。 (我假设您可以在给出字符串宽度和字体的同时测量字符串高度。请用谷歌搜索,这很明显。)
  5. 返回计算出的高度。

优化可能性: 不必每次都重新计算单元格高度,您可以计算一次单元格高度并将该高度存储在一个简单的字典中,该字典以 IndexPath 为键。

关于iOS - 动态高度、数据驱动、垂直滚动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785644/

相关文章:

ios - 如何在非填充垂直容量中使用 UIStackView?

ios - 尝试使用 AutoLayout 在容器 View 中将 UINavigationController 子类设置为 `viewDidLoad-Embed`

ios - 将数组添加到 PLIST

ios - 为什么应用了自动布局的 View 会继续放大,而不是在较大的设备模拟器(iPhone 6 及更高版本)上以原始分辨率显示?

swift - 遍历 NSOrderedSet

ios - 使用自动布局将屏幕分成 1/3 和 2/3 View

ios - 如何在 Swift 中更改按钮标题对齐方式?

ios - 使用 NSAttributedString 为 UITextView 中的文本着色真的很慢

swift - 如何使我实例化的 SCNCamera 仅放大到我在 SceneKit 中想要的节点

ios - 如何将 UIDatePicker 中的数据显示到 UITableView 中?