2017-01-31 10 views
2

Я перехожу из ViewController со строкой состояния в один из них.Строка состояния IOS-стопа от исчезновения во время анимации

Во время анимации я вижу, что строка состояния быстро перемещается на старый ViewController, когда новый ViewController сдвигается сверху.

Любые предложения, почему это происходит и как это исправить?

enter image description here

Новый ViewController не имеет строку состояния в связи с:

override var prefersStatusBarHidden: Bool { 
    return true 
} 

Презентация стиль

modalPresentationStyle = "overCurrentContext"

NEW:

Создано XCode проект тест с вопросом: https://github.com/paul301/TestSlideUp

ответ

1

Чтобы сделать новый ViewController остаться на вершине бара старого статуса, вам необходимо создать новый UIWindow и сделать анимацию вручную.
Пример кода:

var window = UIWindow() 

//to show new view controller 
func showWindow() { 
    let vc = NewViewController() 
    self.window.rootViewController = vc 
    self.window.backgroundColor = UIColor.clear 
    self.window.windowLevel = UIWindowLevelStatusBar 
    self.window.frame = CGRect(x: 0, y: UIScreen.main.bounds.height, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height) 
    self.window.isHidden = false 

    UIView.animate(withDuration: 0.5) { 
     self.window.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height) 
    } 
} 
+0

Это выглядит лучше, чем раньше, но теперь новый ViewController заканчивает имеющий строку состояния в течение доли секунды, прежде чем она исчезнет. Было бы неплохо, если бы он просто скользнул поверх строки состояния – pflous

+0

@pflous обновлен – jokeman

+0

Спасибо, что это работает! – pflous

 Смежные вопросы

  • Нет связанных вопросов^_^