Ios Can';无法获取UITextField以自动收缩字体
在Swift中,我在表视图单元格上有一个UITextField,当它的文本变得太长时,我希望减小字体大小。我想说得很清楚,我说的是UIExtField,而不是UILabel或UIExtView。我之所以这么说,是因为我多次看到这个问题弹出,而且答案都是基于UILabel而不是UIExtField 我希望,这可以在IB中实现,在IB中,我设置了最小字体大小,并根据需要调整大小,但这并没有改变任何事情: 是否有其他方法解决此问题?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
扩展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
,该扩展自动调整文本大小-要使它每次都正确调整文本大小,需要在多个位置调用它:
(我还没有找到更好的方法来调用它,因为您必须等到它的边界设置好,TVC生命周期变得混乱)重写func drawRect(rect:CGRect)
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
,该扩展自动调整文本大小-要使它每次都正确调整文本大小,需要在多个位置调用它:
(我还没有找到更好的方法来调用它,因为您必须等到它的边界设置好,TVC生命周期变得混乱)重写func drawRect(rect:CGRect)
textField(textField:UITextField,shouldChangeCharactersInRange…