Die Ansichtshierarchie meiner App ist ziemlich einfach: Eine UINavigationController
enthält eine UITableViewController
. Die Navigationsleiste der Navigationssteuerung undurchsichtig ist, die während der Navigation Übergänge einig seltsamen Inset Verhalten der Tabellenansicht verursacht, hier zu sehen:UIViewController: extendedLayoutIncludesOpaqueBars und scroll view offset
Um dies zu beheben, ich bin extendedLayoutIncludesOpaqueBars
zu true
auf dem UITableViewController
Einstellung. Dadurch wird die Ansicht unter der Navigationsleiste richtig erweitert, aber das Verhalten der Tabellenansicht contentOffset
wird in einer Weise geändert, die ich nicht ganz verstehe. Wenn diese Eigenschaft auf true
gesetzt ist, gibt der Y-Wert der Tabellenansicht contentOffset
an, dass der Offset um die aktuelle Höhe der Navigationsleiste höher ist (dh die Tabellenansicht 1pt wird durchsucht und der Y-Offset angezeigt -63 Punkte).
Das brachte mich dazu zu denken, dass der Navigationscontroller die Bildlaufansicht contentInset
automatisch verwaltet, wie es für durchscheinende Balken tut. Ich konnte jedoch keinen Hinweis darauf finden, dass in der Bildlaufansicht Inhaltseinfügungen in scrollViewDidScroll()
festgelegt waren. Selbst wenn automaticallyAdjustsScrollViewInsets
auf dem Tabellenansicht-Controller auf false
gesetzt war, war der Inhalt-Offset nicht richtig, also scheint es, dass es nichts mit den Einfügungen zu tun hat.
Apple's documentation about extendedLayoutIncludesOpaqueBars
erwähnt keine Auswirkungen auf das Verhalten des Inhalts Offset einer Bildlaufansicht. Das Ändern der contentInset
der Tabellenansicht löst dies leider nicht.
Ich habe versucht, die edgesForExtendedLayout
-Eigenschaft des TableView-Controllers zu ändern, um es zu erzwingen, ohne die Bildlaufansicht zu beeinträchtigen, aber es scheint, dass diese Eigenschaft gegen opake Balken machtlos ist.
Gibt es ein verstecktes Verhalten bei extendedLayoutIncludesOpaqueBars
, das den Inhaltsoffset einer Bildlaufleiste festlegt? Oder könnte das ein Fehler sein?
fühlt sich zu leicht - das hat funktioniert! Ich hatte es vorher versucht, aber nur in Verbindung mit extendedLayoutIncludesOpaqueBars auf True gesetzt. Die opaque bars -Eigenschaft auf dem Standardwert false belassen und das inklusive funktioniert super. Vielen Dank! –
@JohnWickham Froh, dass ich helfen konnte, einen schönen Tag :) – JoniVR