iOS。做一个布局约束,粘贴到状态栏底部+ X,不管导航栏
问题描述:
我有一堆视图控制器,布局略有不同,但对顶部UILabel的垂直位置有相同的要求。状态栏始终为X(= 70)个单位。这些视图控制器可能被添加到导航控制器与导航栏或不。iOS。做一个布局约束,粘贴到状态栏底部+ X,不管导航栏
我怎样才能做一个比较通用的布局约束考虑到导航栏,所以我的题目是总是从状态栏的X单元不管视图控制器是在导航堆栈或不?
(我知道我可以改变在运行现有约束常量,但是这可能会有点有很多与xibs控制器的问题。我在寻找的东西最好在Interface Builder更通用)
我我正在使用带安全区域指南的iOS 11 SDK。
为了更加清晰请看照片。
- 只能用X单位状态栏状态栏。有一个约束,以安全区域的顶部以恒定X.
答
如果在代码中设置这是一个选择,你可以使用这个简单的黑客:
topLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: UIApplication.shared.statusBarFrame.height + 70).isActive = true
所以基本上你就约束到视图的顶部(跳过topLayoutGuide和安全区指南)至常数加上状态栏的高度。
需要注意的是,如果你允许横向模式,或有意见了状态栏被隐藏,你就必须添加更多的代码来处理这些情况。
Self.view.topAnchor是窗口的最高点吗?根据苹果公司的文档:“使用这个锚来创建视图顶部边缘的约束条件。”我假设视图的顶部边缘与窗口的顶部边缘不一样。嗯,很好的问题也是,如果我能做到'.topAnchor.constraint(equalTo:self.view.window .topAnchor,...' – iur
我从来没有见过约束窗口,但它可能是一个办法.. –
@ IUR如果答案是有帮助的,可以请你无论如何接受吗? –