swift - 尝试调整我的 UIView 容器的大小以适应较小的 iPhone 屏幕尺寸

标签 swift xcode autolayout storyboard constraints

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

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

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

我的 Storyboard的图像以及各自的屏幕尺寸

enter image description here

最佳答案

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

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

您可以使用TPKeyboardAvoidingScrollView:How to use TPKeyboardAvoidingScrollView ,或者只是谷歌搜索。它处理键盘显示和隐藏任务,否则这是一个令人头痛的问题。

我认为您可以通过以下方式解决您的问题: 为最上面的 View (最好是 ScrollView )设置一些最小高度和宽度。 现在在其中添加其他 View 并使用相对宽度和高度。在相对宽度和高度中,您以比率给出值。在这里您可以了解如何做到这一点:- Giving width in % values in autolayout 。 还要对内部 View 的最小高度和宽度添加额外的限制,这样它们就不会低于特定尺寸。

我不建议,但您可以始终使用 UIScreen.main.bounds.size.widthUIScreen.main.bounds.size.height 来获取宽度和屏幕的高度。并根据 View / Controller 类中的约束设置值。这是在 swift 类中设置约束值的链接: set contraint value programatically

关于swift - 尝试调整我的 UIView 容器的大小以适应较小的 iPhone 屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268160/

相关文章:

macos - 我可以使用自动布局根据标签大小调整窗口大小吗?

iOS 在以编程方式实现自动布局时获取 NSInvalidArgumentException

Swift:如何触发Xcode项目中的函数?

Swift Dictionary 通过下标访问值抛出错误

ios - 奇怪的ARC内存发行问题

Swift 构造函数未出现在方法列表中, "Arguments passed to call that takes no arguments"

ios - 如何将 FMDB 导入 swift 框架

swift - Xcode Swift 上午/下午时间转换为 24 小时格式

xcode - 如何使用 Swift 打开我的 OSX 应用程序的父文件夹

ios - 在 iPad 屏幕中使用自动布局时按钮宽度会变长?