首页 > 解决方案 > 尝试调整我的 UIView 容器以适应较小的 iPhone 屏幕尺寸

问题描述

我试图让我的布局适合多种 iPhone 屏幕尺寸,但是当屏幕尺寸小于 iPhone xr 时,我无法调整 UIView 的大小以调整自己的大小。

我已经正确限制了视图、标签和按钮,并且所有内容都对齐了,但是在较小的屏幕尺寸上查看应用程序时,我不完全了解如何调整 UIView 容器的大小以调整自身大小以适应较小的屏幕。

在较小的屏幕上,我的按钮不会显示,因为屏幕尺寸太小。UIView 是问题所在,其中的堆栈视图还需要调整文本大小或缩小文本以适应屏幕上的所有内容。

我的故事板的图像,以及各自的屏幕尺寸

在此处输入图像描述

标签: swiftxcodeautolayoutstoryboardconstraints

解决方案


“我不完全理解如何调整我的 UIView 容器的大小来调整自己的大小以适应更小的屏幕。” -UIViews 不会根据屏幕调整大小,您必须为它们添加约束,以便它们选择它们的宽度和高度。或者,您必须为固定高度和宽度设置约束。

在我看来,为了支持更小的屏幕尺寸,您必须使用滚动视图作为父视图。这样用户就可以在应用程序中滚动。您还可以为滚动视图内的视图提供相对宽度和高度。滚动视图是必需的,因为您总是需要按钮、标签等的最小宽度和高度。否则在像 Ipad 这样的大屏幕上它们会非常大,而在较小的屏幕上它们会非常小。

您可以使用 TPKeyboardAvoidingScrollView: How to use TPKeyboardAvoidingScrollView,或者只是谷歌。它处理键盘显示和隐藏任务,否则这是一件令人头疼的事情。

以下是我认为您可以解决问题的方法:为您的最顶层视图设置一些最小高度和宽度(最好是滚动视图)。现在在其中添加其他视图并使用相对宽度和高度。在相对宽度和高度中,您以比率给出值。在这里您可以了解如何做到这一点: -在 autolayout 中以 % 值给出宽度。还要在您的内部视图上添加额外的约束,以获得最小高度和宽度,这样它们就不会低于特定大小。

我不建议,但您可能总是使用UIScreen.main.bounds.size.widthandUIScreen.main.bounds.size.height来获取屏幕的宽度和高度。并根据您的视图/控制器类中的约束设置值。这是在 swift 类中 设置约束值的链接:以编程方式设置约束值


推荐阅读