2017-08-27 2 views
0

UITextViewは、すべてのテキストが最大2行以内に収まるようにフォントサイズを変更できますか?テキストが1行または2行に完全に収まる場合は、フォントサイズを変更したくありません。しかし、テキストがそれ以上あれば、もっと小さくする必要があります。ありがとう。スウィフトUITextViewは、テキストが2行よりも長い場合はフォントサイズを変更します

答えて

0

具体的にUITextViewを使用する必要がある場合を除き、UILabelを使用することをおすすめします。このコードは、UILabel〜2行を制限し、そのテキスト自動収縮ます:

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:...のようなもの、および変更フォントサイズの内部行を取得します。私はよく分からないtextView内のテキストと

textView.font = label.font 

のデリゲートメソッド、labelの更新」すると

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

もう一つの提案は、以下のように設定されたプロパティで目に見えないUILabelを作ることです私は自分でテストしていないので、これらのどちらかが実際に動作しますが、この問題の起点を設定するのに役立つことを願っています。

関連する問題