Ios 如何摆脱额外的状态栏?
因此,我有一个UITableViewController,它是以模态的方式呈现的。点击一个单元格将启动一个全屏播放器(AVPlayerViewController)。它与self.presentViewController(…)一起显示 一切正常,只是现在显示了一个额外的状态栏。当您点击播放器视图时,这两个视图中只有一个被隐藏Ios 如何摆脱额外的状态栏?,ios,swift,uikit,Ios,Swift,Uikit,因此,我有一个UITableViewController,它是以模态的方式呈现的。点击一个单元格将启动一个全屏播放器(AVPlayerViewController)。它与self.presentViewController(…)一起显示 一切正常,只是现在显示了一个额外的状态栏。当您点击播放器视图时,这两个视图中只有一个被隐藏 func play (url: NSURL, time: NSTimeInterval) { let asset = AVURLAsset(URL: url)
func play (url: NSURL, time: NSTimeInterval) {
let asset = AVURLAsset(URL: url)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
let playerController = AVPlayerViewController()
playerController.player = player
playerController.modalPresentationStyle = .OverFullScreen
presentViewController(playerController, animated: true) {
player.seekToTime(CMTime(seconds: time, preferredTimescale:
playerItem.currentTime().timescale))
player.play()
}
}
我尝试将模式演示样式设置为。全屏显示。这没用
编辑:
为了清楚起见,让我附上一些截图
当我介绍玩家VC时,看起来是这样的。如您所见,有两个状态栏彼此重叠
当我点击播放器视图时,其中只有一个消失了。
我想要的是只有一个状态栏(点击后会隐藏),而不是两个。如果您想完全摆脱状态栏:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarHidden = true
return true
}
或者,如果您想摆脱视图中的状态栏,只需添加
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None)
在视图中加载
如果要完全删除状态栏:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarHidden = true
return true
}
或者,如果您想摆脱视图中的状态栏,只需添加
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: .None)
在您的视图中,我找到了解决此问题的方法。不过,这更像是一种老套的变通方法
1) 首先,我在Info.plist中将查看基于控制器的状态栏外观设置为YES
,因为我想明确这一点(我想,YES
是默认设置)
2) 我在视图控制器中添加了一个布尔属性,它以模态的方式呈现了上面提到的UITableViewController
(从现在起我们称之为“backvc”)
3) 我已经重写了prefersStatusBarHidden
,因此它返回第二步中存储在变量中的任何内容
override func prefersStatusBarHidden() -> Bool {
return statusBarHidden
}
4) 假设backVC
指向“backVC”,我对presentViewController
的完成块添加了一些更改。基本上,我让“Back VC”隐藏了它的状态栏,所以我们只有一个由avplayervewcontroller
管理的状态栏
presentViewController(playerController, animated: true) {
if UI_USER_INTERFACE_IDIOM() == .Pad {
backVC.statusBarHidden = true
}
player.seekToTime(CMTime(seconds: time, preferredTimescale:
playerItem.currentTime().timescale))
player.play()
}
5) 当球员被解雇时,我们需要恢复我们原来的状态栏。一个好地方是我们的模态VC的视图将出现
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if UI_USER_INTERFACE_IDIOM() == .Pad {
backVC.statusBarHidden = false
}
}
这是可行的,但肯定感觉不对。如果您知道更好的解决方案,请随意分享。我找到了解决此问题的方法。不过,这更像是一种老套的变通方法
1) 首先,我在Info.plist中将查看基于控制器的状态栏外观设置为YES
,因为我想明确这一点(我想,YES
是默认设置)
2) 我在视图控制器中添加了一个布尔属性,它以模态的方式呈现了上面提到的UITableViewController
(从现在起我们称之为“backvc”)
3) 我已经重写了prefersStatusBarHidden
,因此它返回第二步中存储在变量中的任何内容
override func prefersStatusBarHidden() -> Bool {
return statusBarHidden
}
4) 假设backVC
指向“backVC”,我对presentViewController
的完成块添加了一些更改。基本上,我让“Back VC”隐藏了它的状态栏,所以我们只有一个由avplayervewcontroller
管理的状态栏
presentViewController(playerController, animated: true) {
if UI_USER_INTERFACE_IDIOM() == .Pad {
backVC.statusBarHidden = true
}
player.seekToTime(CMTime(seconds: time, preferredTimescale:
playerItem.currentTime().timescale))
player.play()
}
5) 当球员被解雇时,我们需要恢复我们原来的状态栏。一个好地方是我们的模态VC的视图将出现
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if UI_USER_INTERFACE_IDIOM() == .Pad {
backVC.statusBarHidden = false
}
}
这是可行的,但肯定感觉不对。如果您知道更好的解决方案,请随时与我们分享。恐怕这并不能解决问题。我用一些截图编辑了我的原始帖子。所以你想删除显示时钟等的状态栏,并保留显示视频进度的状态栏吗?不是真的。我想删除带有时钟等的第二个状态栏。正如您从第二个屏幕截图中看到的,一个在点击时被隐藏,另一个(从显示的电池指示灯可以看出)仍然存在。在第二个屏幕截图上,您不能执行UIApplication.sharedApplication().setStatusBarHidden(true,带动画:.None)
?setStatusBarHidden
在iOS 9中不推荐使用。作为替代方案,UIViewController上有一个方法可以被覆盖“prefersStatusBarHidden->Bool”。我试过了,但没什么改变。恐怕这不能解决问题。我用一些截图编辑了我的原始帖子。所以你想删除显示时钟等的状态栏,并保留显示视频进度的状态栏吗?不是真的。我想删除带有时钟等的第二个状态栏。正如您从第二个屏幕截图中看到的,一个在点击时被隐藏,另一个(从显示的电池指示灯可以看出)仍然存在。在第二个屏幕截图上,您不能执行UIApplication.sharedApplication().setStatusBarHidden(true,带动画:.None)
?setStatusBarHidden
在iOS 9中不推荐使用。作为替代方案,UIViewController上有一个方法可以被覆盖“prefersStatusBarHidden->Bool”。我试过了,但没什么改变。