UIScrollView contentOffset ändern, nach der anderen Ansicht geschoben
Ich habe eine UIViewController
im Interface Builder, und ich füge ein UIScrollView
zu den UIView
. Es hat eine contentOffset
Eigenschaft gleich 0,0 ist, aber wenn ich scrollen UIScrollView
am unteren Ende und drücken Sie eine andere Sicht der contentOffset
änderungen.
NSLog
gibt mir folgende Werte:
//View just loaded
2013-09-09 16:19:27.455 my_app[24588:907] Scroll View content offset is 0.000000
//We came back from another view
2013-09-09 16:19:30.957 my_app[24588:907] Scroll View content offset is 108.000000
Was ist der Grund für dieses Verhalten? Ich habe soeben einen UIScrollView
bei der IB und hab nichts im code.
Den contentHeight
von der scrollView ist größer als self.view.height
. Die frame
von der scrollView die gleiche bleibt.
InformationsquelleAutor Sergey Grischyov | 2013-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen meine Antwort zu einer ähnlichen Frage.
Müssen Sie die scrollview ist
contentOffset
entsprechend inviewWillAppear:
undviewWillDisappear:
.Finden Sie auch unter:
Keine Probleme, ich hoffe es wird bald behoben 🙂
hah, StephSharp @SergeyGrischyov 5 Jahren und dieses problem noch besteht.
Nur das funktioniert, ich habe sogar versucht
UIScrollViewContentInsetAdjustmentNever
was auch nicht.InformationsquelleAutor Steph Sharp
Für iOS 7/8
self.automaticallyAdjustsScrollViewInsets = NO;
das problem gelöst.Vielen Dank, Hinweis Hinzugefügt.
Das war das beste Update für mich, die Einstellung der contentOffset auf 0 verursacht einen sichtbaren Sprung.
Thiis nicht fix it für mich und ich muss Folgen Sie den Richtlinien in der akzeptierten Antwort und manuell aktualisieren Sie die
contentOffset
imviewDidLayoutSubviews
. Keine Ahnung, was Los ist mit diesem problem - seine 2015 !5 Jahre später, im Jahr 2018 das problem immer noch vorhanden ...
InformationsquelleAutor Alex
ich hatte ein ähnliches problem, nach der Entlassung ein viewController, der contentOffset von meinem tableView wurde geändert, um (0, -64).
meine Lösung war ein wenig seltsam, ich habe versucht, alle anderen Antworten, hatte aber keinen Erfolg,
das einzige, was mein problem behoben wurde, schalten Sie das tableView-position in den Kontrollen Baum der .xib
war es das erste Steuerelement in der übergeordneten Ansicht wie diese:
Zog ich den tableView direkt nach der Bildansicht und es funktionierte:
scheint es, dass die Inbetriebnahme der Tabelle in die erste position war die Schwierigkeit verursacht, und verschieben Sie die Tabellen-Ansicht an eine andere position das problem behoben.
P. D. ich bin nicht mit autoLayout weder storyboards
hoffe dies kann jemand helfen!
InformationsquelleAutor Chuy47
Wenn Sie den Bildschirm zu verlassen, wo der scrollview ist vorhanden und kommen zurück, es wird fügen Sie die Hälfte der Größe des Bildschirms, oben oder Links oder beide. Eine Leerstelle, etwas, das Sie nicht wollen. Und in meinem Fall, die Auslagerungsdatei wird ein Durcheinander und nicht richtig funktioniert, bis ich den scroll in den CGPointZero programmgesteuert oder per touch, als ein Nutzer. Wenn Sie anrufen
NSLog( @"%f", scrollview.contentSize.height );
aufviewDidLayoutSubviews
Sie werden sehen, dass die Größe sich verändert hat.Es kommt auf die Achse, die der offset-Wert ist nicht null. Also, um es zu lösen, sollten Sie diese Einstellung auf null
CGPointZero
bevor es angezeigt wird.Den
@Steph Sharp
Antwort mein problem lösen, außer, wenn ich öffnen Sie einen viewcontroller als einem popup (presentViewController
). Ich habe versucht, zu kompensieren, wird der Wert durch hinzufügen der Fehler Betrag aufviewDidLayoutSubviews
aber es nervt das paging.Kurze Antwort, dass ich am Ende mit:
Nun funktioniert es, wenn ich, verlassen der Sektion oder wenn ich das öffnen eines popup-Fensters über.
InformationsquelleAutor Ratata Tata
War ich mit https://github.com/michaeltyson/TPKeyboardAvoiding auf UITableView.
Meine Lösung war das entfernen der Klasse TPKeyboardAvoidingTableView von UITableView. Es wurde verursacht scroll-Problem auf TableViewController mit statischen und dynamischen Zellen.
InformationsquelleAutor Dave
Überprüfen Sie, ob die
contentSize
Eigenschaft der scrollview istCGSizeZero
. Ich hatte ein ähnliches problem, weil diecontentSize
hatte, wurde nicht festgelegt.InformationsquelleAutor Yongqiang Zhou