如何使 UITextField 根据所使用的 iPhone 适当调整其大小?

How do I make a UITextField adjust its size appropriately depending on the iPhone being used?

我希望我的 UITextField 占用大部分屏幕。我试过在文本字段上设置约束,但这不起作用。我正在使用 iPhone 5s 和 6.

进行测试

在 iPhone 5 上获得合适的尺寸会在 iPhone 6 上的 UITextField 两侧留下大空间;当我在 iPhone 6 上设置所需的尺寸时,UITextField 对于 iPhone 5 的屏幕来说太大了。

我认为设置滚动视图等时使用的相同原则适用。这些 UITextField 位于滚动视图中,我对使用不同设备的滚动视图没有任何问题。

我试过调整大小以适合,但这会使文本字段太小。我会提供代码,但我已经在 Interface Builder 中完成了这一切。

这些字段在我的 scrollView 的 contentView 中。

我不介意 Objective-C 或 Swift 个答案。

假设您只有一个文本字段。然后你必须应用以下约束来满足所有约束:

  1. 左间距
  2. 右间距
  3. 顶部间距
  4. 宽度
  5. 身高

宽度和高度限制是最重要的一个。当所有约束都满足时,线条将变为蓝色。试试这个。

问题是自动布局会根据内容自动计算出滚动视图的内容大小。如果您不告诉它您的 contentView 的宽度,它必须通过 scrollView 中项目的约束来计算。即使您的 textView 固定在 scrollView 的左侧和右侧,您也必须指定它们的宽度,以便 Auto Layout 可以计算出 scrollView 内容的宽度。要解决此问题,请将 contentView 添加到您的 scrollView 中,这将是 scrollView 中的单个顶级项目。所有其他项目将添加为 contentView 的子视图。

  1. 向您的滚动视图添加一个内容视图。将其左、上、右和下边缘固定到 scrollView。将其宽度限制为等于 scrollView 的宽度。为此,打开文档大纲视图,控制从滚动视图包含的视图拖动到滚动视图,然后从弹出窗口中拖动 select "Equal Widths"。将其高度限制为足以容纳您的所有内容。这将允许 scrollView 仅垂直滚动。

  2. 将您的 textView 的后缘和前缘约束到 contentView。它们的宽度将自动拉伸以填充每个 phone.

  3. 上的 space