UILabel 对齐并将一个视图移动到不同大小的另一个视图 类

UILabel alignment and moving one view to other view in different Size Classes

总结

我正在我当前的项目中制作一个收据屏幕,这个屏幕可以纵向和横向查看。我已经完成了纵向约束,它看起来像这样:

。现在,在横向上应该是这样的:

问题

(1)竖屏时A1-A3居中对齐,横屏时左对齐(A1-A3的值是动态的,可以是长文本也可以是短文本)。那么,我可以添加一个约束以编程方式从中心到左侧对齐,还是有任何其他方法可以做到这一点?

(2)注意在landscape中View A、B、C的parentView合二为一,这样可行吗? UIImageView 必须放在 View B

下面

我试过的

(1) 只有系统字体系列和大小可以在使用 IB 的不同大小 class 中更改,如果 UILabel 居中对齐,它将在所有大小中居中 classes

(2) 将 UIImageView 从视图 B 移动到视图 C 时出现错误。似乎如果将一个视图移动到另一个视图,它将永久移动所有大小 classes

对于标签对齐,您必须在代码中更新它。您可以通过在视图控制器或自定义视图上实现 traitCollectionDidChange: 来检测大小 class 何时发生变化。

对于图像,一种方法是使图像视图成为B或C的子视图。相反,使其成为根视图的子视图,但将其定位在B 和 C 使用约束。示例:

注意文档大纲中Image是不是Green的子视图;它是根视图的子视图。由于 Image 在子视图列表中排在最后,因此它比其他视图“在前面”或“更靠近屏幕”。

图像为 wAny/hAny 安装了约束,以便将其定位为 Image.centerY = Green.centerY 和 Image.trailing = Green.trailing - 20。

现在这里是 wAny/hCompact 尺码 class:

现在未安装将图像置于绿色的约束。相反,我为 wAny/hCompact 安装了约束,设置 Image.centerX = Blue.centerX 和 Image.top = Blue.top + 20.

这是iPhone 4s 模拟器中的演示: