【问题标题】:Difficulty in a Calculator Layout in XCode in SwiftSwift 中 XCode 中计算器布局的困难
【发布时间】:2023-11-25 21:25:01
【问题描述】:

我正在开发一个计算器应用程序,我的所有代码都能完美执行,但我唯一关心的是布局。在所有手机上,布局都完美无缺,约束似乎很完美!除了 iPhone 4,它似乎还不够高!这很令人沮丧,因为这是我从事的第一个真正的项目,并且看到它被这样的事情阻止至少可以说是烦人的。

这些按钮是 5 高和 4 宽,它们都是方形的,然后我在顶部有一个 320x50 的 AdMob 广告,中间有值标签。 在 5、6 和 6 plus 上,空间很大,一切看起来都很完美,但是当我模拟 4s 时,广告到按钮的距离大大缩短,因此看不到值标签。您可以从这些屏幕截图中了解我的意思。

这是一个有效的布局:

这是有问题的 4s:

有人对解决方案有任何想法吗?

【问题讨论】:

  • 我会说这很普通。 iPhone 4 比 5 或 6 短。(尤其是高度/宽度之间的比例)。您可能需要更改 iPhone 4 上的按钮布局以使其看起来正确。幸运的是,您可以直接在 IB 中执行此操作。

标签: ios xcode swift constraints calculator


【解决方案1】:

我不确定你是如何设置按钮的,所以无法给出具体答案。

不过,一般来说,您可以通过以下任一方式克服屏幕尺寸过短的问题

(1) 显式检测短屏幕(即window.height

或者

(2) 设置与其superview成比例的高度约束,而不是一个固定的数字。这可能会导致高屏幕上的元素非常高,并且可以通过小于或等于的约束和优先级来缓解。

如果我要做计算器 UI,我会设置约束,使五行按钮的高度相同,为它们的父视图的 1/5——通过创建 4 个等宽约束、1 个顶部间距和1 底部间距约束。然后我会为包含所有按钮的视图创建一个出口,并遵循 (1) 或 (2)。

【讨论】:

  • 我基本上将每个水平行设置为所有相等的宽度和高度,然后整个左列都是相等的宽度/高度(除了 0 按钮)我将如何设置与成比例的约束风景?这与约束中的“乘数”选项有关吗?
  • @JacksonWright 是的,乘数选项就是您所需要的。格式必须为 0.x
【解决方案2】:

我不知道您使用的是哪种约束,但如果它适用于 iPhone 5+,那么您似乎在做正确的事情。 :-/

我在我的应用中做的事情是这样的:

valueLabel.Top == ad.Bottom,所以它们总是相互接触,我没有为它们设置高度或宽度,所以它们可以是他们想要的任何高度。除此之外..我不知道。

【讨论】: