Mam UITextView z jakimś tekstem. Wszystko było w porządku z iOS 6, ale teraz w iOS 7 pozostawia puste miejsce na górze, a następnie umieszcza tekst poniżej środka widoku tekstu.
Nie ustawiłem żadnego contentOffSet. Proszę pomóż!
Mam UITextView z jakimś tekstem. Wszystko było w porządku z iOS 6, ale teraz w iOS 7 pozostawia puste miejsce na górze, a następnie umieszcza tekst poniżej środka widoku tekstu.
Nie ustawiłem żadnego contentOffSet. Proszę pomóż!
Odpowiedzi:
Widok tekstowy to widok przewijania. Kontrolery widoku dodają automatycznie przesunięcie zawartości do widoków przewijania, ponieważ zakłada się, że będą chciały przewijać w górę za paskiem nawigacji i paskiem stanu.
Aby temu zapobiec, ustaw następującą właściwość na kontrolerze widoku zawierającym widok tekstu:
self.automaticallyAdjustsScrollViewInsets = NO
Obecna odpowiedź, której udzielił IronManGill, nie jest dobrym rozwiązaniem, ponieważ nie opiera się na zrozumieniu, dlaczego problem występuje w pierwszej kolejności.
Odpowiedź jrturtona również nie jest najczystszym sposobem rozwiązania tego problemu. Nie musisz nadpisywać. Nie komplikuj!
Wystarczy, że ustawisz:
self.automaticallyAdjustsScrollViewInsets = NO;
w metodzie viewDidLoad.
Sprawdź dokumenty: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
automaticallyAdjustsScrollViewInsets
jest przestarzałe. Z iOS11 użyjcontentInsetAdjustmentBehavior
W programie Interface Builder
To zadziałało dla mnie
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Idź do Interface Builder
:
view controller
który zawieratext view
Adjusts Scroll View Insets
właściwośćNaprawdę zastanawiam się, czy to prawdziwa funkcja… Ta 64-punktowa automatyczna wstawka jest dodawana tylko wtedy, gdy UIScrollView
lubUITextView
jako większa głębia wszystkich podwidoków widoku kontrolera widoku. Na przykład, jeśli dodasz widok za (tutaj mówię o buforze z, a nie o imbricacji widoku) widokiem przewijania, ta wstawka 64 punktów nie jest automatycznie dodawana.
Na przykład ten dodaje wstawkę:
W tym przypadku wstawka nie jest dodawana:
Wydaje mi się to naprawdę dziwne… Dlaczego system operacyjny miałby patrzeć na głębię widoku, aby zdecydować, czy powinien rozszerzyć widok?
Szybka (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
viewDidLoad
kontrolerze widoku z widokiem tekstowym.
automaticallyAdjustsScrollViewInsets
jest przestarzałe. Z iOS11 użyjcontentInsetAdjustmentBehavior
Rozwiązałem ten problem, ustawiając przesunięcie zawartości na wartość ujemną. Oto kod Swift.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Musisz zrozumieć, że dotyczy to paska nawigacji:
Rozwiązanie dla Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
Jest to nieprofesjonalne rozwiązanie, jestem pewien ... Ale samo umieszczenie pustej etykiety za widokiem tekstu rozwiązuje problem.