如果文本超过两行,Swift UITextView会更改字体大小

时间:2017-08-27 19:12:12

标签: swift uitextview

如何更改UITextView字体大小,以便所有文字最多可以容纳两行?如果文本完全符合一行或两行,那么我不希望字体大小发生变化。但如果文本更长,我需要它变得更小。感谢。

2 个答案:

答案 0 :(得分: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

我不确定其中任何一个是否真的有用,因为我没有亲自测试过,但我希望这可以帮助你为这个问题设定一个起点。

答案 1 :(得分:0)

除非您特别需要使用UITextView,否则我建议您使用UILabel。此代码将UILabel限制为两行并使其文本自动缩小:

label.numberOfLines = 2
label.adjustsFontSizeToFitWidth = true