访问导航栏高度和状态栏高度

Accessing Navigation Bar Height and Status Bar Height

我目前正在使用 Swift 开发我的第一个 iOS 应用程序,我 运行 在应用程序开发的 UI 部分遇到了很多问题。我决定以编程方式完成所有视图,因为其中足够多的视图非常复杂,我认为故事板将是一个主要的痛苦。

我当前的问题是,我试图使我的视图上的所有间距都相对,这样当屏幕尺寸为 运行 时,屏幕尺寸是多少并不重要。我的第一个问题是自上而下的间距。我知道我必须考虑状态栏高度和导航栏高度。当我在视图控制器中时,我知道如何访问这两个值,但我正在为应该将这些值存储在哪里而苦苦挣扎。

我是否必须在我使用它们的每个视图控制器中访问这些值?我是通过视图控制器将这些值传递给我的视图,还是应该在视图控制器中完成所有框架?我以为我了解视图控制器和视图之间的关系,但我并不完全清楚如何处理间距等问题。那是在视图控制器端还是在视图上?

我知道我可以破解它并让它工作,但我更感兴趣的是 "correct" 这样做的方法是什么。以编程方式创建并适用于所有设备的视图和视图控制器的示例如果有人可用的话会很棒。

I am trying to make all of the spacing on my views relative so that it doesn't matter what the screen size is when it's run.

实现此目的的最佳方法是使用 autolayout。它可以在故事板设计器中使用,也可以以编程方式使用。它将允许您定义 UI 元素的行为方式,而无需知道状态栏、工具栏、导航栏、屏幕宽度和高度等的尺寸。

我建议您不要在代码中执行 'everything'。如果您只是在代码中布局所有视图,您仍然可以使用故事板来管理导航栏和状态栏下方的单个视图。那么你永远不必使用它们中任何一个的实际高度。