To bardziej bardzo ważny komentarz
Kluczem do zrozumienia, dlaczego odpowiedź firmy Vitaminwater działa, są trzy rzeczy:
- Wiedz, że UITextView jest podklasą klasy UIScrollView
- Dowiedz się, jak działa ScrollView i jak jest obliczany jego contentSize. Aby uzyskać więcej, zobacz tę tutaj odpowiedź i jej różne rozwiązania i komentarze.
- Dowiedz się, czym jest contentSize i jak jest obliczany. Zobacz tutaj i tutaj . Może również pomóc, że ustawienie
contentOffset
jest prawdopodobnie niczym innym jak:
func setContentOffset(offset: CGPoint)
{
CGRect bounds = self.bounds
bounds.origin = offset
self.bounds = bounds
}
Aby uzyskać więcej informacji, zobacz objc scrollview i zrozumienie scrollview
Łącząc te trzy razem, łatwo zrozumiesz, że musisz zezwolić na wewnętrzną contentSize textView na pracę z ograniczeniami AutoLayout elementu textView, aby sterować logiką. To prawie tak, jakbyś textView działał jak UILabel
Aby tak się stało, musisz wyłączyć przewijanie, co w zasadzie oznacza rozmiar scrollView, rozmiar contentSize, aw przypadku dodania containerView, rozmiar containerView byłby taki sam. Kiedy są takie same, NIE masz przewijania. I byś to zrobił . Mając oznacza, że nie przewinąłeś w dół. Ani jeden punkt mniej! W rezultacie tekst textView zostanie rozciągnięty.0
contentOffset
0
contentOffSet
Nie jest też nic warta, co oznacza, że granice scrollView i ramka są identyczne. Jeśli przewinąć 5 punktów wówczas contentOffset byłoby , w czasie, gdy będzie równa0
contentOffset
5
scrollView.bounds.origin.y - scrollView.frame.origin.y
5