У меня странная проблема с NavigationBar
за Statusbar
.UINavigationBar ниже StatusBar после Hotspot/Call при использовании пользовательского перехода
Это происходит только тогда, когда строка состояния по умолчанию изменяется на «активную» панель состояния, такую как та, которая появляется во время активного вызова или горячей точки Wi-Fi.
До появления "активный" статусной, это выглядит следующим образом (что вполне нормально):
Когда я включаю WiFi точки доступа, это еще хорошо:
Но когда я отключу точку доступа Wi-Fi или завершаю вызов, размер статусной панели сокращается до прежнего размера, но ViewController
(в данном случае UITableViewController
) не перемещает u p снова. Похоже, что он имеет верхний край размера статусных баров. Кроме того, панель состояния прозрачна, и я вижу фон контроллера вида ниже фактического контроллера табличного представления.
Любые идеи по этому вопросу?
Обновление: Я понял, что это из-за специального модального перехода, который я реализовал.
Это должно быть растворить анимация. Вот код:
class DissolveTransition: NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {
// vars
private var duration: NSTimeInterval = 0.3
private var presenting = true
// MARK: - UIViewControllerAnimatedTransitioning
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
return self.duration
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let destination = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)
if (destination?.isBeingPresented() == true) {
self.animatePresentation(transitionContext)
}
else {
self.animateDismissal(transitionContext)
}
}
private func animatePresentation(transitionContext: UIViewControllerContextTransitioning) {
self.animateDissolve(transitionContext)
}
private func animateDismissal(transitionContext: UIViewControllerContextTransitioning) {
self.presenting = false
self.animateDissolve(transitionContext)
}
private func animateDissolve(transitionContext: UIViewControllerContextTransitioning) {
let source = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let destination = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let container = transitionContext.containerView()!
destination.beginAppearanceTransition(true, animated: true)
let snapshotFromView = source.view.snapshotViewAfterScreenUpdates(true)
// 1. adding real view at the bottom of the view hierarchy
if (self.presenting) {
container.addSubview(destination.view)
}
// 2. adding snapshot of previous view to view hierarchy
container.addSubview(snapshotFromView)
// 3. removing (fade) prev snapshot view and show real VC
UIView.animateWithDuration(self.duration, animations: {
snapshotFromView.alpha = 0.0
}, completion: { (finished) in
if (finished) {
snapshotFromView.removeFromSuperview()
container.bringSubviewToFront(destination.view)
}
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
destination.endAppearanceTransition()
})
}
// MARK: - UIViewControllerTransitioningDelegate
func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return self
}
func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return self
}
}
ли это происходит только на этом конкретном контроллере? Выполняете ли вы какой-либо специальный код, связанный со строкой состояния контроллера, например 'prefersStatusBarHidden',' preferredStatusBarStyle' или 'preferredStatusBarAnimation'? У вас есть код состояния в делегате приложения? Любые строки состояния, связанные с информацией в info.plist? – Kumuluzz
@ Kumuluzz Nope, ничего. Нет настройки statusBar 'внешний вид', нет' preferredStatusBarStyle', ничего ... Единственное, что приходит мне на ум - это особый переход на модальный вид, который представляет этот диспетчер представлений. Но это также встречается во всех других viewcontroller _after_ this. Может быть, это был переход? – Chris