View anhand vom ContentOffset positionieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • View anhand vom ContentOffset positionieren

    Hallo,

    ich habe einen ScrollView und über dem ScrollView liegt ein View. Der aber kein SubView vom ScrollView ist.
    Ich möchte jetzt das genau bei einem bestimmten contentOffset bzw wenn dieser erreicht ist diesen View mit dem contentOffset weiterfließen lassen. Ansehen kann man sich das bei TVSpielfilm iPad app zum Beispiel bei dem TV-Programm wo die PrimTime leiste bei der Primetime Zeit andockt und mitfährt.

    Das Problem ist jetzt leider nur das der contentOffset an dem ich den View bewegen will ja nicht jedes mal EXAKT getroffen wird. Weil es ja darauf ankommt wie schnell man scrollt.

    Wie kann ich an die Sache am besten rangehen :/ ?
  • Ich würde mal ausprobieren, den View in den Scrollview umzuhängen, wenn der Content-Offset die entsprechende Position überschreitet und ihn wieder zurückzuhängen, wenn der Offset unterschritten wird. Durch dieses Verfahren hast Du den Vorteil, dass alleine der Scrollview für die Bewegungen und Animationen zuständig ist und die Bewegungen synchron laufen.
    „Meine Komplikation hatte eine Komplikation.“
  • Eigentlich sollte dies auch problemlos in der Delegate Methode scrollViewDidScroll: vom UIScrollViewDelegate Protocol gehen. Diese Methode wird bei jeder Änderung am contentOffset vom ScrollView aufgerufen.

    Ob sich der entsprechende View dann im ScrollView befindet oder darüber liegt sollte dabei keine Rolle spielen. Wenn sich der entsprechende View im ScrollView befindet, müsstest Du nur dann korrigierend eingreifen, wenn der entsprechende View quasi an einer Stelle "fixiert" werden muss. Anderenfalls würde sich dieser View analog zum restlichen Content des ScrollViews mitbewegen.

    Alternativ könntest Du noch eine Subsclass von UIScrollView erstellen und dann die "Repositionierung" bzw. "Fixierung" des entsprechenden Views in der Methode layoutSubviews durchführen. Es müsste eigentlich auch ein passendes Beispiel von Apple in einer WWDC Session zum Thema ScrollView geben. Leider weiss ich aktuell nicht, welche Session von welcher WWDC dies jetzt genau war.