Ios iPhone上的流体UI布局
我有一个Android应用程序,它有这样一个用于查看电子邮件的UI: 我正在尝试将其移植到iOS,并需要它与iOS 5.0及以上版本配合使用(因此无法在iOS 6.0中使用自动布局)。希望您能根据示例告诉布局应该如何调整/流动 处理这种布局的最佳方式是什么?From和Re行的高度必须是可变的,如图所示(实际上也是to:行)。当然,消息正文的高度需要可变 到目前为止,我唯一的尝试是将UITableViewController与静态单元格一起使用。通过使用sizeWithFont inside heightForRowAtIndexPath返回每行所需的高度,我可以通过这种方式获得可变高度。使用这种方法,我花了很长时间试图获得我想要的风格(圆角和背景仅用于顶部)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
那么有更好的方法吗?可能是使用集合视图或容器视图的东西?在其他一些屏幕上,我需要移植我也有类似的问题,但它们有更多的嵌套级别(蓝色圆形部分在白色部分中在蓝色圆形部分中)。或者我最好不要使用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用户界面那样复杂,所以在每个视图/屏幕上移动不会太多。