我正在尝试布局一个UIScrollView
以具有多个内容UIView
对象(几个UIImageView
对象,一个MKMapView
对象,一个UILabel
对象等)。
我想要的是将项目布置为在左上角带有“大” UIImageView
,在右上角带有MKMapView
。我希望它们的大小相同,通常在屏幕的左右边缘之间隔开(标准20点),在视图的顶部(标准20点),并且在每个屏幕的中心通常隔开其他(标准8分)。我希望它们是正方形的,所以它们的高度取决于它们的计算宽度。
然后,我想放置一排布局相似的UIImageView
对象,这些对象与顶部“行”,视图的左侧和右侧以及彼此之间通常间隔开。我也希望这些对象是正方形的,从它们的宽度计算它们的高度。
在此之下,我需要一些UILabel
对象(标题标签,然后是更长的描述)。
这是我的愿望的粗略布局:
纵向模式
|------------------------------|
| |
| |----------| |----------| |
| | | | | |
| | | | | |
| | | | | |
| |----------| |----------| |
| |
| |------| |------| |------| |
| | | | | | | |
| | | | | | | |
| |------| |------| |------| |
| |
| Title Label Here |
| |
| Description here.......... |
| Description here.......... |
| Description here.......... |
| Description here.......... |
| |
|------------------------------|
横向模式(标题和描述标签假定不在屏幕上)
|----------------------------------------------|
| |
| |------------------| |------------------| |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| |------------------| |------------------| |
| |
| |-----------| |-----------| |-----------| |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| |-----------| |-----------| |-----------| |
| |
|----------------------------------------------|
显然,很多标题/描述内容将填充比屏幕更大的尺寸,因此,我试图将所有这些内容放置在
UIScrollView
中。此外,我希望这种布局能够适应设备旋转。
我似乎无法弄清楚如何使用自动布局。
使用弹簧和支柱,这似乎是一个相当简单的过程。
使用自动布局时,我不断收到“缺少约束”和“位置错误的视图”的错误/警告。
我已经阅读了Apple文档here。
我已阅读this博客文章
遵循他们的建议对我来说真的没有任何意义(或者至少在我尝试时不起作用)。
最佳答案
每个视图必须至少具有4个约束,自动布局才能计算4个边。
从左上方的图像开始。设置顶部边缘的约束:使用默认值将其固定到其superView(只需删除InterfaceBuilder中的数值)。然后对左边缘执行相同操作。
现在,对右上角和右上角的 map 视图执行相同的操作(将它们固定到superView)。
然后设置从左图像的右边缘到 map 左边缘的水平约束。再次删除数值,“自动布局”将使用默认值。
最后,为图片和 map 设置高宽比1:1约束。
现在,两个顶视图已完全定义。
继续左侧的小图像,将其左边缘固定到 super 视图(默认),将顶部边缘固定到大图像的底部(默认)。现在,将中间小图像的顶部边缘与左侧图像对齐。将右侧小图像的上边缘与中间小图像对齐。将左侧图像的右侧边缘固定到中间图像的左侧边缘,然后对右侧+中间图像进行相同的操作。将右图的右边缘固定到 super 视图。现在,所有图像都进行了顶部对齐,并彼此水平固定并固定在 super 视图上。同样,您需要向至少一张图像添加高宽比1:1约束。但是,您可以将其他两幅图像的底边与第一幅图像的底边对齐,而不是每幅图像都有自己的长宽比约束。
现在,三个小图像已完全定义。
最后,将标签分别固定在 super 视图的左边缘,每个顶边缘固定在其顶视图的底部。由于文本标签的大小取决于文本(宽度)和使用的字体(高度),因此标签仅需要两个约束(x,y)。
你完成了。
关于ios - 具有自动布局和设备旋转的UIScrollView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22543699/