2015-02-09 134 views
0

Compact HeightUICollectionView改变流动方向

Compact Width

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

我曾经以为我不得不使用规模类和自动布局的限制,但我想一切都悲惨地失败了。

也许我必须使用基于方位的UICollectionView和改变流动方向(如果这甚至有可能)?

回答

1

集合视图可能是矫枉过正,因为你不想滚动,这是一个集合视图整点 - 由你做的大小的时候停止了,你会做了所有必要的工作来设置一个不滚动的布局。

这对IB中的Size Classes是可能的。首先,一般来说,您可能会发现在IB左侧的文档大纲中命名视图很有帮助。你也会想要使用这个轮廓,而不是试图抓住小约束H-线。

  1. 设置所有的除了1)链接 OrangeView和蓝景彼此约束的限制,2)连接 的OrangeView到顶部和约束左(前导),和3)约束 链接BlueView到底部和右侧(尾部)。
  2. 变化在底部的尺寸等级设定为w紧凑和 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后,选择“更新帧”,视图应该捕捉到它们对于尺寸类的预期形状。

让我们知道如果这对你的作品,如果它是不清楚。祝你好运!

+0

嘿迈克尔,感谢您撰写这样详细而详尽的答案! IB在某些时候可能非常不直观...... – 2015-02-10 19:57:08

+0

我仍在尝试学习自动布局和大小类:在第1步。当你说“设置所有约束条件”时,你的意思是:1)蓝色到顶部2)蓝色到顶部3)橙色到底部4)橙色到尾部? Xcode抱怨我错过了蓝色和橙色的高度和宽度限制。我已经尝试为蓝色和橙色设置相等的宽度和高度,但它不起作用“无法同时满足约束”。依次类推...... – 2015-02-12 09:55:37

+0

是的,Xcode的警告有时非常有效,有时需要忽略 - 这就是为什么有一个“占位符”选项,只是为了安静警告,如果你知道你要在代码中处理它们。 – 2015-02-12 13:25:38