Ziele des Blogs
Nach dem Lesen dieses Blogs werden wir den Grund für den zusätzlichen Platz zwischen der oberen Navigationsleiste und der Bildlaufansicht in der iOS-App in den Versionen iOS 7 bis iOS 10 verstehen können.
Problem Statement
Wenn wir in einem View-Controller, der oben eine Navigationsleiste enthält, eine Bildlaufansicht oder Tabellenansicht (jede durchlaufbare Ansicht) hinzufügen, tritt ein allgemeines Problem auf, dass zwischen der oberen Navigationsleiste und der Bildlaufansicht ein zusätzlicher Abstand besteht.
Warum die aktuelle Ausgabe da ist
Wenn Sie von iOS 7 bis iOS 10 eine Navigationsleiste über einem ViewController hinzufügen, bietet Xcode eine Option, um die Navigationsleiste transparent zu machen. Damit wir durch die Navigationsleiste sehen und das Scrollen der Seite können Sie durch die Navigationsleiste sehen.
Nun liegt der Grund für das Problem darin, dass beim Hinzufügen einer Bildlaufansicht im ViewController und der durchsichtigen und durchscheinenden Navigationsleiste die ScrollView einen Rand der Hauptansicht für die Navigationsleiste hinterlässt. Die Navigationsleiste fügte jedoch zur Laufzeit hinzu und verschiebt die Hauptansicht nach unten, so dass die Navigationsleiste oben passt. In diesem Fall wird die Ansicht durch die Navigationsleiste nach unten verschoben, und die Bildlaufansicht verlässt den Rand für die Navigationsleiste. Hier stellen wir fest, dass sich der zusätzliche Abstand zweimal erhöht.
Dies war der einzige Grund, warum zwischen der Navigationsleiste und der Bildlaufansicht zusätzlicher Abstand angezeigt wird.
Verfahren, um das Problem zu lösen
Es gibt zwei Möglichkeiten, das Problem zu lösen. In beiden Fällen beschränken wir die Bildlaufansicht, um zusätzlichen Rand für die Navigationsleiste zu erhalten.
1.Wir können die Option Transluzent für die Navigationsleiste in Xcode auf "False" setzen
? This will make the navigation bar Opaque and then the scroll view is not required to scroll under the Navigation Bar. So that Scroll View will leave no space for Navigation Bar.
In der folgenden Gif sehen Sie, dass sich die Layout-Einschränkung der Ansicht ändert, wenn Sie die Eigenschaft "Transluzent" der Navigationsleiste aktivieren / deaktivieren.
2.Wir können deaktivieren "Passen Sie die Scroll-Insets an"Eigenschaft des ViewControllers.
? This will restrict the Scroll View to leave extra space for the Navigation bar on top.
Zusammenfassung
Nachdem Sie die obigen Schritte ausgeführt haben, können Sie den zusätzlichen Abstand zwischen der Navigationsleiste und der Bildlaufansicht entfernen.