无法让UITextField自动收缩字体

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

我希望,这可以在IB中完成,我在这里完成了Min Font Size的设置并且只是适合,但这并没有改变任何东西:

在此处输入图像描述

还有另一种解决方法吗?

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...