Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';无法获取UITextField以自动收缩字体_Ios_Xcode_Autosize_Swift2.2 - Fatal编程技术网

Ios Can';无法获取UITextField以自动收缩字体

Ios Can';无法获取UITextField以自动收缩字体,ios,xcode,autosize,swift2.2,Ios,Xcode,Autosize,Swift2.2,在Swift中,我在表视图单元格上有一个UITextField,当它的文本变得太长时,我希望减小字体大小。我想说得很清楚,我说的是UIExtField,而不是UILabel或UIExtView。我之所以这么说,是因为我多次看到这个问题弹出,而且答案都是基于UILabel而不是UIExtField 我希望,这可以在IB中实现,在IB中,我设置了最小字体大小,并根据需要调整大小,但这并没有改变任何事情: 是否有其他方法解决此问题?扩展UITextField{ extension UITextFie

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

我希望,这可以在IB中实现,在IB中,我设置了最小字体大小,并根据需要调整大小,但这并没有改变任何事情:

是否有其他方法解决此问题?

扩展UITextField{
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
      }
    }
  }
}
内部函数resizeText(){ 如果let text=self.text{ self.font=UIFont.systemFontOfSize(14) 让textString=文本作为NSString var widthOfText=textString.sizeWidthAttributes([NSFontAttributeName:self.font!]).width var widthOffFrame=self.frame.size.width //减小字体大小,直到合适为止 而框架宽度-5<文本宽度{ 让fontSize=self.font!.pointSize self.font=self.font?.fontWithSize(fontSize-0.5) widthOfText=textString.SizeWidthAttributes([NSFontAttributeName:self.font!])。宽度 宽度框架=self.frame.size.width } } } }
根据我链接的答案,我创建了一个扩展到
UITextField
,该扩展自动调整文本大小-要使它每次都正确调整文本大小,需要在多个位置调用它:

  • 重写func drawRect(rect:CGRect)
    (我还没有找到更好的方法来调用它,因为您必须等到它的边界设置好,TVC生命周期变得混乱)

  • textField(textField:UITextField,shouldChangeCharactersInRange…

扩展UITextField{
内部函数resizeText(){
如果let text=self.text{
self.font=UIFont.systemFontOfSize(14)
让textString=文本作为NSString
var widthOfText=textString.sizeWidthAttributes([NSFontAttributeName:self.font!]).width
var widthOffFrame=self.frame.size.width
//减小字体大小,直到合适为止
而框架宽度-5<文本宽度{
让fontSize=self.font!.pointSize
self.font=self.font?.fontWithSize(fontSize-0.5)
widthOfText=textString.SizeWidthAttributes([NSFontAttributeName:self.font!])。宽度
宽度框架=self.frame.size.width
}
}
}
}
根据我链接的答案,我创建了一个扩展到
UITextField
,该扩展自动调整文本大小-要使它每次都正确调整文本大小,需要在多个位置调用它:

  • 重写func drawRect(rect:CGRect)
    (我还没有找到更好的方法来调用它,因为您必须等到它的边界设置好,TVC生命周期变得混乱)

  • textField(textField:UITextField,shouldChangeCharactersInRange…


此问题的可能重复项不是重复项,因为它意味着此问题的可能重复项不是重复项,因为它意味着ShouldChangeCharactersRange中的Swiftworks很好()非常感谢!@sschaleworks在ShouldChangeCharactersRange中很好()非常感谢!@sschale