iPhone上流畅的UI布局

时间:2012-10-02 23:39:19

标签: ios user-interface interface-builder

我有一个Android应用程序,其中包含用于查看电子邮件的用户界面:

Example Layout

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

创作时:

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

    1. 时间标签:简单。只需将宽度设置为超视图宽度减去一些填充,使用sizeWithFont:
    2. 设置高度
    3. 适用于To:From:Re:;致电sizeToFit。获取最大宽度并坚持下去。
    4. To: label:将x设置为0,将y设置为时间标签的底部。
    5. 接收者姓名标签:将x设置为从(2.)得到的宽度,将y设置为与(3.)相同。使用sizeWithFont:将宽度设置为(容器宽度 - (2.))和高度。
    6. From:Re:行执行(3.)到(4.)相同的步骤。
    7. 将蓝色视图高度设置为主题标签的框架底部。
    8. 使用正文textview / label填充框架的其余部分。
    9. 您必须自行添加填充,因为sizeToFitsizeWithFont:不会为您执行此操作。此外,正文UITextView可以自己滚动,但是如果您期望长主题,那么您应该将整个事物包装在另一个UIScrollView中(或者在IB中将主视图的类设置为{{ 1}})