ios - 无法让 UITextField 自动缩小字体

标签 ios xcode autosize swift2

在 Swift 中,我在表格 View 单元格上有一个 UITextField,当它的文本变得太长时,我希望减小字体大小。我想说得很清楚,我说的是 UITextField,而不是 UILabel 或 UITextView。之所以这么说,是因为我看到这个问题弹出了好几次,答案都是基于 UILabel 而不是 UITextField。

我希望,这可以在 IB 中完成,我在那里设置了最小字体大小并调整以适应,但这并没有改变任何东西:

enter image description here

还有其他方法可以解决这个问题吗?

最佳答案

extension UITextField {
  internal func resizeText() {
    if let text = self.text{
      self.font = UIFont.systemFontOfSize(14)
      let textString = text as NSString
      var widthOfText = textString.sizeWithAttributes([NSFontAttributeName : self.font!]).width
      var widthOfFrame = self.frame.size.width
      // decrease font size until it fits
      while widthOfFrame - 5 < widthOfText {
        let fontSize = self.font!.pointSize
        self.font = self.font?.fontWithSize(fontSize - 0.5)
        widthOfText = textString.sizeWithAttributes([NSFontAttributeName : self.font!]).width
        widthOfFrame = self.frame.size.width
      }
    }
  }
}

根据我链接的答案,我为 UITextField 创建了一个扩展,它可以自动调整文本大小 - 为了让它每次都正确调整文本大小,需要在多个位置调用它:

  • override func drawRect(rect: CGRect)(我还没有找到更好的地方来调用它,因为你必须等到它的边界被设置并且 TVC 生命周期变得困惑)

  • textField(textField: UITextField, shouldChangeCharactersInRange...

关于ios - 无法让 UITextField 自动缩小字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37399573/

相关文章:

ios - 在核心数据中添加相关实体会删除所有其他关系吗?

ios - 如何使用作为 IBOutlet 连接的 UIView 作为 TableView 部分标题?

c# - 如何为表单设置 "preferred size"?

Delphi FMX TCheckbox/TRadiobutton 自动调整大小

ios - 在 Objective-C 中实现 C 回调

ios - 快速方向改变 IOS

xcode - 如何让 Xcode 使用 clang 的替代版本?

iphone - Freelancer Iphone开发-接受Xcode警告吗?

objective-c - NSMutabel 二维数组不起作用

wpf - 如何使 ListBoxItem 垂直拉伸(stretch)