2016-09-17 12 views
0

Я использую Swift 3 и виды стека (aka auto layout) с ограничениями.Как создать пространство в верхней части моего стека для строки состояния без использования фиксированной высоты?

В настоящее время заголовок моего приложения и стандартная строка состояния iOS перекрываются.

Я НЕ хочу создавать еще один пустой стек с фиксированной высотой, потому что я стараюсь сохранить его как можно более гибким для настоящего и будущего (для iPhone 5 высота, вероятно, как 50px и iPhone 7, вероятно, как 200px).

Есть ли какое-то логическое решение из интерфейса или это единственный способ сделать это, чтобы загрузить какой-то пользовательский код в;

override func viewDidLoad() раздел?

ответ

0

Вы можете применить NSLayoutConstraint:

1)Создание верхней autolayout ведущего ограничение между супер и видом стеки - CTRL перетащить его в контроллер представления

@IBOutlet weak var topLeadingOffsetFromStatusBar: NSAutolayoutConstraint! 

2)Установите его постоянную на динамическое значение:

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

Это не сработало - последняя версия Xcode Version 8.0 (8A218a) и Swift 3 - немного изменила код с обновленными ключевыми словами и была успешно построена, но затем она с ошибкой: libC++ abi.dylib: завершение с неотображаемым исключение типа NSException – Brewski

+0

Я также использую swift3. Я предположил, что вы используете swift2. Вы хотите, чтобы я переписал код для swift3 для вас? – pedrouan

+0

Ага, ну, я уже это сделал, когда он дал мне ошибку: @IBOutlet слабый var topLeadingOffsetFromStatusBar: NSLayoutConstraint! пусть смещение = UIApplication.shared.statusBarFrame.size.height , а затем self.topLeadingOffsetFromStatusBar.constant = смещение ,, .. в viewDidLoad() – Brewski