Dies ist eher ein sehr wichtiger Kommentar
Der Schlüssel zum Verständnis, warum die Antwort von Vitaminwater funktioniert, sind drei Dinge:
- Wissen Sie, dass UITextView eine Unterklasse der UIScrollView-Klasse ist
- Verstehen Sie, wie ScrollView funktioniert und wie die contentSize berechnet wird. Weitere Informationen finden Sie hier Antwort und seine verschiedenen Lösungen und Kommentare.
- Verstehen Sie, was contentSize ist und wie es berechnet wird. Sehen Sie hier und hier . Es könnte auch dazu beitragen , diese Einstellung
contentOffset
ist wahrscheinlich nichts anderes als:
func setContentOffset(offset: CGPoint)
{
CGRect bounds = self.bounds
bounds.origin = offset
self.bounds = bounds
}
Weitere Informationen finden Sie unter objc scrollview und zum Verständnis der scrollview
Wenn Sie die drei miteinander kombinieren, werden Sie leicht verstehen, dass Sie zulassen müssen, dass die intrinsische contentSize der textView entlang der AutoLayout-Einschränkungen der textView arbeitet, um die Logik zu steuern. Es ist fast so, als ob Sie textView wie ein UILabel funktionieren
Um dies zu erreichen, müssen Sie das Scrollen deaktivieren. Dies bedeutet im Grunde, dass die Größe der scrollView, die Größe der contentSize und im Falle des Hinzufügens einer containerView die Größe der containerView alle gleich ist. Wenn sie gleich sind, haben Sie KEIN Scrollen. Und du hättest . Haben bedeutet, dass Sie nicht nach unten gescrollt haben. Nicht einmal einen Punkt nach unten! Infolgedessen wird die Textansicht vollständig gestreckt.0
contentOffset
0
contentOffSet
Es ist auch nichts wert, was bedeutet, dass die Grenzen und der Rahmen von scrollView identisch sind. Wenn Sie 5 Punkte nach unten scrollen, ist Ihr contentOffset gleich , während Ihr gleich ist0
contentOffset
5
scrollView.bounds.origin.y - scrollView.frame.origin.y
5