从全屏视频返回后导航工具栏垂直延伸
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)
}
}
第一个屏幕截图是在全屏播放视频之前截取的。
第二张是视频全屏打开关闭后拍的。
知道为什么导航工具栏会扩展吗?
注意:汉堡包按钮不是导航项的一部分。它是在父级的覆盖层中伪造的,将其子控制器保存在标准容器中。
源代码中没有什么特别之处:
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)
}
}