我有一堆视图控制器,它们的布局略有不同,但对顶部UILabel的垂直位置有相同的要求。从状态栏开始,它始终是X(= 70)单位。这些视图控制器是否可以通过导航栏添加到导航控制器中。
我该如何制定一个相对通用的布局约束来说明导航栏,以便无论视图控制器是否位于导航堆栈中,我的标题始终是状态栏的X个单位?
(我知道我可以在运行时更改现有约束的常量,但是对于许多带有xibs的控制器而言,这可能会有些问题。我正在寻找更通用的东西,最好是在接口生成器中)
我正在将iOS 11 SDK与安全区域指南一起使用。
请查看图片以更清楚。
基本上,我在寻找一种可以根据导航栏的存在自动调整约束常数的工具。也许有可能通过在xib到xib之间“轻松”复制的几个约束条件来实现这一目标。
最佳答案
如果您可以选择在代码中进行设置,则可以使用以下简单技巧:
topLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: UIApplication.shared.statusBarFrame.height + 70).isActive = true
因此,基本上,您将其约束到视图的顶部(跳过topLayoutGuide和安全区域指南)为常量加上状态栏的高度。
请注意,如果您允许横向模式,或者在状态栏被隐藏的情况下存在视图,则必须添加更多代码来处理这些情况。
关于ios - iOS。设置布局约束以粘贴到状态栏底部+ X,而不考虑导航栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46243535/