【问题标题】:How do I make a UITextField adjust its size appropriately depending on the iPhone being used?如何根据所使用的 iPhone 使 UITextField 适当地调整其大小?
【发布时间】:2015-03-06 02:40:27
【问题描述】:

我希望我的UITextFields 用完大部分屏幕。我尝试在文本字段上设置约束,但这不起作用。我正在使用 iPhone 5s 和 6 进行测试。

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

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

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

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

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

【问题讨论】:

  • 您能否添加一个屏幕截图来显示您使用的约束?
  • 您是否固定了文本字段的前导和尾随空格?
  • 添加了屏幕截图。

标签: ios cocoa-touch uiscrollview uitextfield nslayoutconstraint


【解决方案1】:

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

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

  2. 将您的 textView 的后沿和前沿约束到 contentView。它们的宽度会自动拉伸以填充每个手机上的空间。

【讨论】:

  • 我有一个 contentView。我没有像往常一样设置约束,因为滚动似乎没有这样做。我现在就试一试。
  • 错误消失了:tinypic.com/r/2f0btp4/8,但布局仍然没有运气:tinypic.com/r/2duh8nc/8
  • 你的 scrollView 是否固定在顶层视图的顶部、底部、左侧和右侧?
  • 下、左、右为。顶部固定到分段控件。它位于导航栏的正下方。
  • 您是否记得将 contentView 的宽度限制为等于 scrollView 的宽度?看起来您的 contentView 仍然比 scrollView 宽。
【解决方案2】:

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

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

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

【讨论】:

  • 嗨,是的,这是我理解的,但我的印象是,如果我设置宽度,那么文本字段将变为固定大小。所以举个例子,如果我设置一个宽的宽度来容纳 iPhone 6,那么在使用 iPhone 5 时会不会太大?
  • 这里的 width 和 height 表示 width 和 height 约束。和你的意思一样吗? @LondonGuy
猜你喜欢
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2021-05-16
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多