从全屏视频返回后导航工具栏垂直延伸

Navigation toolbar extends vertically after returned from full screen video

第一个屏幕截图是在全屏播放视频之前截取的。

第二张是视频全屏打开关闭后拍的。

知道为什么导航工具栏会扩展吗?

注意:汉堡包按钮不是导航项的一部分。它是在父级的覆盖层中伪造的,将其子控制器保存在标准容器中。

源代码中没有什么特别之处:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    bbiListic = UIBarButtonItem(image: UIImage(identifier: .IcoHeaderListic), style: .Plain, target: self, action: #selector(UIViewController.showListic))
    bbiFavorite = UIBarButtonItem(image: UIImage(identifier: .IcoHeaderStarEmpty), style: .Plain, target: self, action: #selector(LiveDogadjajViewController.toggleFavorite(_:)))

    ... 
    let items = [bbiListic!,bbiFavorite!]

    navigationItem.rightBarButtonItems = items
}

func someRefresh() {
    var items = [UIBarButtonItem]()

    items.append(bbiListic!)
    ...
    navigationItem.rightBarButtonItems = items
}

更新:

这似乎是最新版本 iOS、9.3

的问题

先决条件:

a) 通过从 main.storyboard

中选择 uiviewcontroller 取消选中 "extends edges"

b) 您的视频播放器和容器控制器之间不存在约束

解决方案:

检查导航栏上的任何按钮是否底部受限。删除该约束或将固定高度约束应用于您的自定义导航栏视图,以使其保持相同的高度。

从您的屏幕截图来看,状态栏的高度似乎增加了一倍。试试这个:-

播放视频前,隐藏状态栏

UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None)

视频结束后,显示状态栏

UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: .None)

我就此问题联系了 Apple 开发者技术支持。 他们确定这可能是 iOS 9.3.

中的一个 bug

错误 ID:26439832,iOSSDK

这是堆栈上视图控制器的简单解决方法:

// ... add this to init method
let nc = NSNotificationCenter.defaultCenter()
nc.addObserver(self, selector: #selector(didExitFullscreen(_:)), name: MPMoviePlayerDidExitFullscreenNotification, object: nil)

func didExitFullscreen(notification: NSNotification)
{

     // hack, fix for 9.3. 
     if #available(iOS 9.3, *)
     {
         navigationController?.setNavigationBarHidden(true, animated: false)
         navigationController?.setNavigationBarHidden(false, animated: false)
     }
}