Ich habe UITextView mit etwas Text darin. Mit iOS 6 war alles in Ordnung, aber jetzt mit iOS 7 lässt es die Leerstelle oben und platziert den Text dann unter der Mitte der Textansicht.
Ich habe kein contentOffSet festgelegt. Bitte helfen Sie!
Ich habe UITextView mit etwas Text darin. Mit iOS 6 war alles in Ordnung, aber jetzt mit iOS 7 lässt es die Leerstelle oben und platziert den Text dann unter der Mitte der Textansicht.
Ich habe kein contentOffSet festgelegt. Bitte helfen Sie!
Antworten:
Eine Textansicht ist eine Bildlaufansicht. Ansichts-Controller fügen den Bildlaufansichten automatisch einen Inhaltsversatz hinzu, da davon ausgegangen wird, dass sie hinter der Navigationsleiste und der Statusleiste nach oben scrollen möchten.
Um dies zu verhindern, legen Sie die folgende Eigenschaft auf dem Ansichtscontroller fest, der die Textansicht enthält:
self.automaticallyAdjustsScrollViewInsets = NO
Die aktuelle Antwort von IronManGill ist keine gute Lösung, da sie nicht auf dem Verständnis basiert, warum das Problem überhaupt auftritt.
Die Antwort von jrturton ist auch nicht der sauberste Weg, sie zu lösen. Sie müssen nicht überschreiben. Halte es einfach!
Sie müssen lediglich Folgendes einstellen:
self.automaticallyAdjustsScrollViewInsets = NO;
in der viewDidLoad-Methode.
Überprüfen Sie die Dokumente: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
automaticallyAdjustsScrollViewInsets
ist veraltet. Verwenden Sie ab iOS11contentInsetAdjustmentBehavior
Im Interface Builder
Das hat bei mir funktioniert
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Gehe zu Interface Builder
:
view controller
, das Ihre enthälttext view
Adjusts Scroll View Insets
EigenschaftIch frage mich wirklich, ob dies eine echte Funktion ist ... Dieser automatische 64-Punkt-Einschub wird nur hinzugefügt, wenn die UIScrollView
oder UITextView
als die größere Tiefe aller Unteransichten der Ansicht des Ansichts-Controllers. Wenn Sie beispielsweise eine Ansicht hinter der Bildlaufansicht hinzufügen (hier geht es um Z-Buffer, nicht um Ansichtsimbrikation), wird dieser 64-Punkte-Einschub nicht automatisch hinzugefügt.
Zum Beispiel fügt dieser den Einschub hinzu:
In diesem Fall wird der Einschub nicht hinzugefügt:
Das kommt mir wirklich seltsam vor… Warum sollte das Betriebssystem die Tiefe der Ansicht prüfen, um zu entscheiden, ob es die Ansicht erweitern soll?
Auf schnell (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
viewDidLoad
View Controller mit der Textansicht aus.
automaticallyAdjustsScrollViewInsets
ist veraltet. Verwenden Sie ab iOS11contentInsetAdjustmentBehavior
Ich habe dieses Problem behoben, indem ich den Inhaltsoffset auf einen negativen Wert gesetzt habe. Hier ist Swift-Code.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Was Sie verstehen müssen, ist, dass dies mit der Navigationsleiste zusammenhängt:
Lösung für Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
Ich bin sicher, dies ist eine unprofessionelle Lösung ... Aber nur ein leeres Etikett hinter der Textansicht löst das Problem.