2017-08-27 95 views

回答

0

除非特别需要使用UITextView,否则我推荐使用UILabel。这个代码限制了UILabel为两行,使得它的文本自动收缩:

label.numberOfLines = 2 
label.adjustsFontSizeToFitWidth = true 
1

我相信你有一个伟大的理由使用UITextView,因此我认为这可能是有点棘手,需要大量的测试,以看到它实际上正如你所料。

我的建议是,计算的数:

let font = yourFont 
let size = yourTextView.contentSize 
let inset = yourTextView.textContainerInset 
let rows = (size.height - inset.top - inset.bottom)/font.lineHeight 

进去textView的委托方法行,像textView:shouldChangeTextIn:...例如,变字体大小根据此信息。

另一个建议是使无形UILabel设置如下图所示的属性:

label.font = yourFont 
label.frame = CGRect(x: 0, y: 0, width: yourTextView.contentSize.width, height: yourTextView.contentSize.height) 
label.numberOfLines = 2 
label.adjustFontSizeToFitWidth = true 

内。然后textView的委托方法,更新label的文字和

textView.font = label.font 

我不知道由于我没有为自己测试它们,所以其中任何一个都可以正常工作,但我希望这可以帮助您为此问题设定一个起点。

相关问题