Jay*_*Jay 191 iphone ios ios7 swift
我想删除屏幕顶部的状态栏.
这不起作用:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Run Code Online (Sandbox Code Playgroud)
dre*_*wag 431
你真的应该在你的视图控制器上实现prefersStatusBarHidden:
迅捷2
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
迅捷3及以后
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
nyc*_*nie 97
在方法内添加代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
application.statusBarHidden = true
return true
}
Run Code Online (Sandbox Code Playgroud)DONE!运行你的应用程序,没有更多的状态栏!
Jos*_*ark 69
斯威夫特3
在Info.plist设置View controller-based status bar appearance为NO
并致电 UIApplication.shared.isStatusBarHidden = true
Vin*_*Joy 42
如果你想在按钮上隐藏和恢复状态栏,在显示和解除滑入菜单,弹出窗口等时,你可以使用这种方法: -
要隐藏状态栏: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelStatusBar
Run Code Online (Sandbox Code Playgroud)
要恢复状态栏: -
UIApplication.shared.keyWindow?.windowLevel = UIWindowLevelNormal
Run Code Online (Sandbox Code Playgroud)
Mil*_*iuM 32
如果您更喜欢视觉方法而不是编码,请使用此方法:在您的 info.plist
只需添加View controller-based status bar appearance到NO
而Status bar is initially hidden作为YES
Moh*_*mar 28
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true);
navigationController?.navigationBar.hidden = true // for navigation bar hide
UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}
Run Code Online (Sandbox Code Playgroud)
atl*_*lwx 28
iOS 10/Swift 3.0的更新
不再是一个功能,现在是一个属性......
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*ami 16
在Swift 3.x中:
override func viewWillAppear(_ animated: Bool) {
UIApplication.shared.isStatusBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)
Dim*_*ima 12
所以这里的问题实际上与Swift无关,而是从iOS 7开始处理状态栏的外观.
默认情况下,视图控制器在屏幕上单独控制状态栏的外观.如果要使用此方法来控制状态栏,则可以为要修改外观的任何视图控制器覆盖以下方法:
prefersStatusBarHidden,
preferredStatusBarStyle,
preferredStatusBarAnimation,
在您的情况下,您只需实现prefersStatusBarHidden并返回true.
另一种方法是在应用程序级别控制状态栏外观.这似乎是你真正想做的事情(通过设置application.statusBarHidden).
为了使这项工作,你需要打开你的应用程序的Info.plist文件并添加密钥UIViewControllerBasedStatusBarAppearance,并给它一个值NO.
nah*_*g89 11
就我而言,我需要根据某些条件更新隐藏的状态栏。
因此,我创建了一个BaseViewController包含新属性的基本控制器hideStatusBar。
其他视图控制器是这个基本控制器的子类。最后当我想更新状态栏行为时,我只需要更改这个hideStatusBar值。
class BaseViewController: UIViewController {
var hideStatusBar: Bool = false {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return hideStatusBar
}
}
Run Code Online (Sandbox Code Playgroud)
final class ViewController: BaseViewController, UIScrollViewDelegate {
let scrollView = UIScrollView()
...
func scrollViewDidScroll(_ scrollView: UIScrollView) {
UIView.animate(withDuration: 0.3) {
if scrollView.contentOffset.y > 100 {
self.hideStatusBar = true
} else {
self.hideStatusBar = false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个演示,我UIView.animate(...)用来使过渡更平滑。
我实际上是自己想出来的.我将添加我的解决方案作为另一种选择.
extension UIViewController {
func prefersStatusBarHidden() -> Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
针对 iOS 13 和 Swift 5 进行了更新
如果以上答案都不适合您。检查你的 plist 看看是否有这个:
“查看基于控制器的状态栏外观”
如果是这样,请务必将其设置为 YES!!!!
然后下面的代码就可以工作了。
override var prefersStatusBarHidden: Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132931 次 |
| 最近记录: |