【问题标题】:How to show the full placeholder text in an ios UITextfield?如何在 ios UITextfield 中显示完整的占位符文本?
【发布时间】:2019-06-22 12:49:04
【问题描述】:

占位符文本确实显示了三点以切断文本。

文本甚至不占用文本字段宽度的一半,并且三个点比文本长。有没有办法进入该领域并调整阈值以避免截止?

我确实知道编程方式,并暂时使用它来调整占位符 tekst 的大小,直到合适为止。

    let labelKeyPath: String = "_placeholderLabel"
    var label : UILabel = self.Distance.value(forKeyPath: labelKeyPath) as! UILabel
    label.adjustsFontSizeToFitWidth = true
    label = self.FocalLength.value(forKeyPath: labelKeyPath) as! UILabel
    label.adjustsFontSizeToFitWidth = true

我确实添加了一些当前 IB 设置和结果的图像。请继续加分,让我展示当前和未来嵌入的图像,谢谢。

The IB view, settings and app result

【问题讨论】:

  • 只需更改文本字段的宽度,您将获得预期的输出。占位符修剪为文本字段的宽度不像预期的那样适合占位符
  • 我为什么要加宽文本字段,对于值来说已经太大了。问题是结果比占位符大,而且非常适合,那么为什么不是占位符呢?另外为什么三个点比我需要的一个字母宽?

标签: ios swift xcode layout interface-builder


【解决方案1】:

您也可以创建自己的 UITF 子类并覆盖:

open func placeholderRect(forBounds bounds: CGRect) -> CGRect

【讨论】:

  • 谢谢。这行得通。我也确实将原点移动了几个像素。
【解决方案2】:

您可以自定义文本字段来解决您的问题。将此 CustomTextField 放入您的 Storyboard 文本字段类类型中。这里将最小比例因子设置为 0.3。这有助于修复...

class CustomTextField: UITextField {
    override func layoutSubviews() {
        super.layoutSubviews()

        for subview in subviews {
            if let label = subview as? UILabel {
                label.minimumScaleFactor = 0.3
                label.adjustsFontSizeToFitWidth = true
            }
        }
    }
} 

【讨论】:

  • 您可以调整 minimumScaleFactor 为您想要的值。
【解决方案3】:

您应该将 Autolayouts Constraints 更改为 leading,center vertical 更改为 Distance,水平空间 更改为 Distance。

您还可以使用最小字体大小调整文本字段的大小来包装文本。

【讨论】:

  • 谢谢。不知道如何解决这个问题。我的带字段的行位于 StackView 中。为了更好地理解你的意思,你能用上面的文字解释一下它应该如何工作以及预期的结果吗?
  • 您应该设置文本字段的自动布局约束前导:0,视图垂直居中,顶部:0 和底部:0。您还可以更改 UITextField 的最小字体大小以换行到 textFiled。
  • 我现在明白你写了什么。谢谢。我确实在将约束归零之前尝试过,但没有与字体大小一起尝试。
猜你喜欢
  • 2016-03-14
  • 1970-01-01
  • 2016-02-21
  • 2023-03-12
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多