Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iPhone上的流体UI布局_Ios_User Interface_Interface Builder - Fatal编程技术网

Ios iPhone上的流体UI布局

Ios iPhone上的流体UI布局,ios,user-interface,interface-builder,Ios,User Interface,Interface Builder,我有一个Android应用程序,它有这样一个用于查看电子邮件的UI: 我正在尝试将其移植到iOS,并需要它与iOS 5.0及以上版本配合使用(因此无法在iOS 6.0中使用自动布局)。希望您能根据示例告诉布局应该如何调整/流动 处理这种布局的最佳方式是什么?From和Re行的高度必须是可变的,如图所示(实际上也是to:行)。当然,消息正文的高度需要可变 到目前为止,我唯一的尝试是将UITableViewController与静态单元格一起使用。通过使用sizeWithFont inside h

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

我正在尝试将其移植到iOS,并需要它与iOS 5.0及以上版本配合使用(因此无法在iOS 6.0中使用自动布局)。希望您能根据示例告诉布局应该如何调整/流动

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

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


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

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

关于创建:

  • 在IB中,将所有标签作为蓝色区域的子视图。检查容器的自动调整大小遮罩是否贴在顶部、左侧和右侧,以及宽度是否可拉伸。我们将在代码中固定高度和子视图框架。消息正文可以是标签或作为单独视图的文本视图
  • viewDidLoad
    中,根据需要设置包含视图的图层半径、边框颜色等
  • viewdilayoutsubview
    中:

  • 时间标签:简单。只需将宽度设置为superview宽度减去一些填充,然后使用
    sizeWithFont:
  • 对于
    收件人:
    发件人:
    ,以及
    回复:
    ;调用
    sizeToFit
    。获得最大宽度并保持不变
  • To:
    label:将x设置为0,将y设置为时间标签的底部
  • 接收者姓名标签:将x设置为(2)中的宽度,将y设置为(3)中的宽度。使用
    sizeWithFont:
    将宽度设置为(容器宽度-(2.)),高度设置为
  • from:
    Re:
    行执行从(3.)到(4.)的相同步骤
  • 将蓝色视图高度设置为主题标签的框架底部
  • 用正文文本视图/标签填充框架的其余部分

  • 您必须自己添加填充物,因为
    sizeToFit
    sizeWithFont:
    不会为您添加填充物。另外,主体
    UITextView
    可以自己滚动,但是如果您希望获得长主题标题,那么您应该将整个内容包装在另一个
    UIScrollView
    (或者在IB中,只需将主视图的类设置为
    UIScrollView

    谢谢,如果可行,我会尝试接受。这听起来并不像你写的那么糟糕。我想我被其他平台宠坏的时间太长了——早在Windows的早期,我就习惯于做这件事,但时间太长了。这确实让人望而生畏,因为你有很多UI元素,但如果你看一下你的屏幕截图,大多数度量都已经存在了。就个人而言,我更喜欢这种方法,因为它非常简单。通常我只是在IB中推送整个视图层次结构,只关心静态位置和大小;然后在代码中修复所有动态测量值。我最终将每个“行”(字段表和文本)放在一个视图中,并且能够在IB中定义所有填充/etc。因此,编码所要做的就是为每行设置每个视图的高度,并为除顶行以外的所有行设置top/y。这是一种痛苦,但至少iOS用户界面将/不应该像Mac/Windows用户界面那样复杂,所以在每个视图/屏幕上移动不会太多。