2016-09-17 66 views
0

我正在使用Swift 3和堆栈视图(又名自动布局)与约束。如何在不使用固定高度的情况下在状态栏的堆栈顶部创建空间?

目前我的应用程序标题和标准iOS状态栏重叠。

我不想创建另一个固定高度的空栈,因为我试图保持它对现在和未来的响应性(对于iPhone 5,高度可能像50px和iPhone 7,可能像200px)。

是否有某种来自接口的逻辑解决方案,或者是唯一的方法来加载一些自定义代码;

override func viewDidLoad() section?

回答

0

你可以申请NSLayoutConstraint:

1)创建一个自动版式顶首屈一指的超级视图和堆栈视图之间的约束 - CTRL将其拖放到您的视图控制器

@IBOutlet weak var topLeadingOffsetFromStatusBar: NSAutolayoutConstraint! 

2)将其常量设置为动态值:

let offset = UIApplication.sharedApplication().statusBarFrame.size.height 
self.topLeadingOffsetFromStatusBar.constant = offset 
+0

不幸的是 - 最新版本的Xcode版本8.0(8A218a)和Swift 3 - 用更新后的关键字稍微改变了代码,并成功构建,但之后崩溃,出现错误:libC++ abi.dylib:以未捕获NSException类型的异常 – Brewski

+0

我也在使用swift3。我假设你使用swift2。你想让我重新输入swift3的代码吗? – pedrouan

+0

啊哈,以及我已经做了,当它给了我错误: @IBOutlet弱var topLeadingOffsetFromStatusBar:NSLayoutConstraint! let offset = UIApplication.shared.statusBarFrame.size.height 然后 self.topLeadingOffsetFromStatusBar.constant = offset,.. in the viewDidLoad() – Brewski

相关问题