【问题标题】:UIImageView: use all available space via auto layoutUIImageView:通过自动布局使用所有可用空间
【发布时间】:2013-03-01 00:35:33
【问题描述】:

我正在尝试使用自动布局来最小化UIImageView(绿色)和UICollectionView(红色)之间的差距。在模拟器中(我假设它显示的是 iPhone 4 尺寸的屏幕),两个视图很好地排列在一起,只有很小的差距:

但是在我的实际设备上,一个更大屏幕的 iPhone 5,有一个很大的差距:

如何指定自动布局约束,以便UIImageView(绿色框)占用尽可能多的空间,而不管屏幕大小如何,同时将UICollectionView 固定在底部工具栏上?

我尝试在 XCode 中调整约束、添加引脚等,但没有取得多大成功。我觉得我只是在胡思乱想,并没有真正理解它们是如何工作的,而且我还没有找到一个好的教程来解释如何做一些事情,比如“展开以占用尽可能多的垂直空间”。

【问题讨论】:

  • 我昨天回答了一个类似的问题 (stackoverflow.com/questions/15076362/…)。基本上,现在,您的红色视图似乎有一个 constant 高度约束和一个 fixed to bottom y 约束。虽然您可能需要一个固定的 H 绿色视图高度,而红色视图会自动在totalHeight - H 上拉伸其高度。你已经使用了约束,还是 UIView 的autoresizingMask

标签: xcode ios6 autolayout


【解决方案1】:

所以需要指定两个view的间距是固定的,底部view的高度也是固定的。在视觉格式语言中,

"V:|[topView]-[bottomView(==150)]|"

V: 表示这是一个垂直约束

|[topView] 表示将topView 的顶部固定到尽可能靠近超级视图的顶部边缘。

-表示两个视图之间的间距是固定的

[bottomView(==150)] 表示bottomView 必须为 150 像素

]| 表示bottomView 的底边固定到父视图的底边

您还可以通过在底部视图上设置固定高度以及顶部和底部视图之间的固定间隙来在 Interface Builder 中添加这些约束

【讨论】:

  • 不想自我宣传,但我写了一些关于在 Cocoa 上使用 Autolayout 的教程,但这些原则也适用于 Cocoa-touch:comelearncocoawithme.blogspot.co.uk/2011/08/…
  • 这里是另一个 Cocoa-touch 教程:raywenderlich.com/20881/beginning-auto-layout-part-1-of-2
  • 那是 RubyMotion ASCII 布局吗?希望我能用那个。故事板/IB 令人抓狂。我在情节提要中选择了一个约束,然后详细信息窗格完全空白。我无法编辑它!
  • 我相信我遇到的部分问题是绿色框是 UIImageView,它似乎需要固定大小。我希望它扩展以填充可用空间,但不知道如何用约束来表示。
  • 是的,XCode 中有许多与约束相关的错误。 ASCII约束字符串是Autolayout可视化格式字符串,你可以在代码中使用它来设置约束。 techotopia.com/index.php/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多