2017-08-27 3 views

Antwort

0

Sofern Sie keine spezielle Notwendigkeit haben, eine UITextView zu verwenden, empfehle ich die Verwendung einer UILabel. Dieser Code begrenzt eine UILabel auf zwei Linien und macht seinen Text Auto-Schrumpf:

label.numberOfLines = 2 
label.adjustsFontSizeToFitWidth = true 
1

Ich glaube, Sie einen großen Grund haben UITextView zu verwenden, und so denke ich, das etwas schwierig sein kann und braucht eine Menge Tests zu Sehen Sie, es funktioniert genau so, wie Sie es erwartet haben.

Was würde ich vorschlagen, ist die Anzahl der Zeilen berechnen von:

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

Get Reihen innerhalb textView ‚s Delegatmethode, so etwas wie textView:shouldChangeTextIn:... zum Beispiel, und Schriftgröße ändern auf diese Informationen entsprechend.

Ein weiterer Vorschlag ist, unsichtbar UILabel mit Eigenschaften wie unten angegeben zu machen:

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

Dann innen textView 's Delegatmethode, aktualisieren label' s Text und

textView.font = label.font 

Ich bin nicht sicher Beide werden tatsächlich funktionieren, da ich sie nicht selbst getestet habe, aber ich hoffe, dass dies Ihnen helfen kann, einen Ausgangspunkt für dieses Problem zu setzen.

Verwandte Themen