iPhone上的stream体UI布局

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

示例布局

我试图移植到iOS,需要它与iOS 5.0及以上(所以不能在iOS 6.0中使用自动布局)工作。 希望你可以根据这个例子来说明布局应该如何调整/stream动。

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

我到目前为止唯一的尝试一直试图使用静态单元格的UITableViewController。 我能够通过使用heightForRowAtIndexPath中的sizeWithFont获取variables高度,以返回每行所需的高度。 使用这种方法,我有一个时间试图得到我想要的样式(圆angular和背景只为顶部)。

那么有没有更好的方法? 也许是使用集合视图或容器视图的东西? 在其他屏幕上,我需要端口我有类似的问题,但他们有更多层次的嵌套(圆形的蓝色部分内的白色部分内的圆形蓝色部分)。 或者,我最好不要使用IB,只用基本的标签元素和通用视图构build整个UI代码?

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

在创作上:

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

viewDidLayoutSubviews

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

你必须自己添加填充,因为sizeToFitsizeWithFont:不会为你做。 另外,主体UITextView可以滚动自己的,但如果你期待长的主题标题,那么你应该包装整个事情在另一个UIScrollView (或在IB只是设置主视图的类到UIScrollView