我有一堆 View Controller ,它们的布局略有不同,但对顶部 UILabel 的垂直位置有相同的要求。状态栏始终为 X(=70) 个单位。这些 View Controller 可能会添加到带有导航栏的导航 Controller 中。
如何创建一个相对通用的布局约束来考虑导航栏,这样无论 View Controller 是否在导航堆栈中,我的标题始终是状态栏的 X 个单位?
(我知道我可以在运行时更改现有约束的常量,但这对于很多带有 xibs 的 Controller 来说可能有点问题。我正在寻找更通用的东西,最好在界面生成器中)
我正在使用带有安全区域指南的 iOS 11 SDK。
请查看图片以获得更清晰的信息。
基本上,我会寻找可以根据导航栏的存在自动调整约束常数的东西。也许有可能通过几个可以“轻松”从 xib 复制到 xib 的约束来实现这一点。
如果您可以选择在代码中设置它,您可以使用这个简单的技巧:
topLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: UIApplication.shared.statusBarFrame.height + 70).isActive = true
所以基本上你将它限制在 View 的顶部(跳过 topLayoutGuide 和安全区域指南)到常量加上状态栏的高度。
请注意,如果您允许横向模式,或者存在隐藏状态栏的 View ,则必须添加更多代码来处理这些情况。
关于IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 + X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243535/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |