UICollectionView在旋转时改变流向

时间:2015-02-09 16:03:36

标签: ios autolayout size-classes

Compact Height

Compact Width

嘿,我想获得你在照片中看到的内容:在紧凑型高度模式(风景iphone)中,红色和蓝色视图都必须垂直占据所有屏幕,水平放置一半屏幕。在紧凑宽度模式(人像iphone)中,他们必须水平占据所有屏幕,垂直占据屏幕的一半。在两种模式下,视图之间的空间大小应相同。

我曾经认为我必须使用大小类和自动布局约束,但我尝试的所有内容都失败了。

也许我必须使用UICollectionView并根据方向改变流向(如果可能的话)?

1 个答案:

答案 0 :(得分:1)

集合视图可能有点过分,因为你不想滚动,这是集合视图的全部要点 - 当你进行大小调整以阻止它时,你会有完成了设置非滚动布局所需的所有工作。

这可以通过IB中的大小类来实现。首先,一般来说,您可能会发现在IB中左侧的文档大纲中命名视图会很有帮助。您还需要使用此轮廓而不是尝试抓住微小的约束H线。

  1. 设置所有约束,除了1)约束链接 OrangeView和BlueView相互之间,2)约束链接 OrangeView到顶部和左侧(前导),以及3)约束 将BlueView链接到底部和右侧(尾随)。
  2. 将底部的尺寸等级设置更改为w-Compact和 h-任何时髦的盒子系统。现在我们正在设计一个紧凑的宽度,因此可以相互查看。
  3. 为BlueView.bottom创建垂直空间约束 OrangeView.Top。还要为OrangeView创建约束 superview.leading(或ledaing,margin)和BlueView superview.trailing.margin。如果您选择这些约束中的任何一个并查看右侧的尺寸检查器(标尺),您应该看到"已安装"未选中复选框,并且在w-Compact h-Any和另一个已安装的框下方,选中此框。
  4. 现在,在保持选择约束以查看发生了什么的同时,将底部的sizeClass选择器更改为w-Regular h-Any。请注意,在左侧的文档大纲中,它应该变灰。
  5. 现在我们正在设计常规,所以左右。添加链接水平空间视图的约束,BlueView.trailing到OrangeView.leading。还将OrangeView.top链接到superview.top或顶部与BlueView.top对齐,底部也是如此。您可以先手动编辑框架;如果没有,IB将自动填写错误的值,因此在创建它们之后编辑它们,并验证它们是w-Regular和h-Any。选择ViewController后,选择"更新帧"并且视图应该捕捉到尺寸类的预期形状。
  6. 如果这对你有用或者不清楚,请告诉我们。祝你好运!