0

我有一个带有这样的 UI 的 Android 应用程序,用于查看电子邮件:

示例布局

我正在尝试将其移植到 iOS 并需要它与 iOS 5.0 及更高版本一起使用(因此不能在 iOS 6.0 中使用自动布局)。希望您可以根据示例说明布局应如何调整/流动。

处理这种布局的最佳方法是什么?From 和 Re 线需要是可变高度,如图所示(实际上 To: 线也是如此)。消息正文当然需要可变高度。

到目前为止,我唯一的尝试是尝试将 UITableViewController 与静态单元格一起使用。我可以通过在 heightForRowAtIndexPath 中使用 sizeWithFont 来获得可变高度,以返回每行所需的高度。使用这种方法,我花了很长时间试图获得我想要的样式(圆角和背景仅用于顶部)。

那么有没有更好的方法呢?也许使用集合视图或容器视图的东西?在其他一些我需要移植的屏幕上,我遇到了类似的问题,但它们有更多级别的嵌套(圆形蓝色部分在圆形蓝色部分内的白色部分内)。还是我最好不要使用 IB 并仅从基本标签元素和通用视图在代码中构建整个 UI?

4

1 回答 1

2

我能想到的最简单的方法是手动计算内部的标签框架viewDidLayoutSubviews。这是一些伪代码:

创作时:

  1. 在 IB 中,将所有标签作为蓝色区域的子视图。检查容器的自动调整大小蒙版是否贴在顶部、左侧和右侧,并且具有可拉伸的宽度。我们将在代码中修复高度和子视图框架。消息正文可以是标签或作为单独视图的文本视图。
  2. viewDidLoad中,根据需要设置包含视图的图层cornerRadius、borderColor 等。

viewDidLayoutSubviews

  1. 时间标签:简单。只需将宽度设置为超级视图宽度减去一些填充,设置高度sizeWithFont:
  2. 对于To:, From:, 和Re:; 打电话sizeToFit。获得最大宽度并坚持下去。
  3. To:label:将 x 设置为 0,将 y 设置为时间标签的底部。
  4. 接收者姓名标签:将 x 设置为从 (2.) 获得的宽度,将 y 设置为与 (3.) 相同的宽度。将宽度设置为 (容器宽度 - (2.)) 并将高度设置为sizeWithFont:.
  5. From:对和Re:行执行从 (3.) 到 (4.) 的相同步骤。
  6. 将蓝色视图高度设置为主题标签的框架底部。
  7. 用正文文本视图/标签填充框架的其余部分。

您必须自己添加填充,因为sizeToFit并且sizeWithFont:不会为您这样做。此外,正文UITextView可以自行滚动,但如果您期望较长的主题标题,那么您应该将整个内容包装在另一个中UIScrollView(或者在 IB 中,只需将主视图的类设置为UIScrollView

于 2012-10-03T04:48:46.913 回答