横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题

Posted

技术标签:

【中文标题】横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题【英文标题】:Issue when percentage based layout (view equal height and width to Superview by multiplier ) for landscape mode 【发布时间】:2017-01-09 18:55:59 【问题描述】:

我想制作两个视图:

纵向模式:

紫色一 60 % 高度 - 全宽

蓝色一个 40% 高度-全宽到子视图。

横向模式:

紫色一 60 % 宽和全高

蓝色一个 40 % 宽和全高

这就是我想要的

首先,我将紫色设置为与子视图相等的高度并将其乘以 0.6。对于蓝色的设置,我将子视图的高度设置为与子视图相同的高度并乘以 0.4。然后我将约束 0 0 0 添加到紫色的一和 0 0 0 到蓝色的一。所以它非常适合纵向模式。

为了在风景中做到这一点,我使用堆栈视图将垂直对齐到水平。它不起作用。它仅水平对齐紫色 60 % 的高度和蓝色 40 % 的高度。

我没有找到班级大小来改变横向的高度和宽度百分比值。

有人可以解释一下怎么做吗?

非常感谢!

【问题讨论】:

【参考方案1】:

你的意思是这样的?

我通过使用 UIStackView 并在 .horizontal.vertical 之间切换其 .axis 来做到这一点。

如果这是仅限 iPhone,您可以在 Interface Builder 中配置该更改:

但这在 iPad 上不起作用,因为当我们旋转时你没有改变尺寸等级;您必须在代码中进行交换(在 viewWillTransition 中)。

【讨论】:

是的,这就是我想要的。请你能用屏幕截图一步一步地解释吗? 我认为您是以编程方式完成的。是否可以在 Xcode 中执行此操作? 好吧,想想比例模式下的堆栈视图是如何工作的。它以 proportion 的方式查看视图彼此之间的约束。所以我的观点分别具有内在的内容大小60,6040,40。在.vertical 轴中,只有高度很重要,而在.horizontal 轴中,只有宽度很重要。所以它适用于两者。因此,当您听到我们在旋转时,您会交换轴类型。 Axis设置可以响应Interface Builder中的size class。 对不起,我不明白。

以上是关于横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题的主要内容,如果未能解决你的问题,请参考以下文章

了解自动布局中的乘数以使用相对定位

横向模式更改布局上的图像

具有自动布局的 UITableView 在横向模式下不会填满屏幕。为啥?

如何使用自动布局在纵向模式下垂直堆叠视图并在横向模式下水平堆叠视图?

为啥横向模式下的扩展布局在 Xamarin Forms 中显示半黑屏?

UIPageViewController - 如何在横向模式下自定义左右页面?