如何在iOS 7中以编程方式隐藏状态栏?

时间:2013-09-28 14:14:46

标签: iphone ios7 hide statusbar ios6.1

中,如何以编程方式隐藏?我正在使用XCode 4.6.1),我想在XCode中实现它。

12 个答案:

答案 0 :(得分:72)

你应该在你的viewController

中实现iOS7中的

- (BOOL)prefersStatusBarHidden {
    return YES;
}

答案 1 :(得分:32)

您可以隐藏状态栏以在plist中设置键值“查看基于控制器的状态栏外观”NO。这是最简单的方法。

或者您可以使用UIApplication类的属性statusBarHidden隐藏代码。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

Swift 3.0

隐藏任何特定视图控制器的状态栏

override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}

在整个应用程序中隐藏状态

UIApplication.shared.isStatusBarHidden = true

并在项目的信息plist中设置键值“View controller-based status bar appearance”NO。

答案 2 :(得分:18)

- (void)viewDidLoad
{
    [super viewDidLoad];
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
    {
        [self prefersStatusBarHidden];
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    }
    else
    {
        // iOS 6
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
}

// Add this method
- (BOOL)prefersStatusBarHidden {
    return YES;
}

答案 3 :(得分:5)

View controller-based status bar appearance设置为NO时隐藏特定的ViewController(然后重新打开):

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}

答案 4 :(得分:3)

如果你需要动态地在给定的视图控制器上隐藏/显示它,你可以做这样的事情。

(尽管如果您不需要更改,我建议您只使用- (BOOL)prefersStatusBarHidden返回您的偏好。)

// view controller header 
@interface MyViewController : UIViewController  {
    BOOL shouldHideStatusBar;
}
@end


@implementation

- (BOOL)prefersStatusBarHidden {
    return shouldHideStatusBar; // backed by your instance variable
}

- (void)setPrefersStatusBarHidden:(BOOL)hidden {
    shouldHideStatusBar = hidden;

    // Don't call this on iOS 6 or it will crash since the 
    // `setNeedsStatusBarAppearanceUpdate` method doesn't exist
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

    // [self setNeedsStatusBarAppearanceUpdate]; // (if Xcode 5, use this)
}

@end

答案 5 :(得分:1)

如果是iOS> = 7.0,请使用以下代码:

语法:

// Present in UIViewController of UIKit Frameworks
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO

用法:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

在iOS< 7.0使用以下代码:

语法:

// Present in UIApplication of UIKit Frameworks
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);

用法:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

答案 6 :(得分:1)

Swift 4.1

第1步。。在View controller-based status bar appearance中将info.plist设置为

第二步。。在您的UIViewController中键入一些代码,当您显示UIViewController时,状态栏将隐藏。

private var statusBarIsHidden = false

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    statusBarIsHidden = true
    setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
    return statusBarStatus
}

答案 7 :(得分:0)

试试这个

[[UIApplication sharedApplication] setStatusBarHidden:YES];

答案 8 :(得分:0)

如果有人想要最新的方式(Swift 2.1和最新的Xcode 7.2)

  1. 在info.plist中设置"查看基于控制器的状态栏外观为NO"

  2. UIApplication.sharedApplication()。statusBarHidden = true //在某处放置app delegate(applicationWill或DidFinishLaunchingWithOptions:

答案 9 :(得分:0)

我的经验是你需要iOS 9 / Xcode 7.3中info.plist文件中的代码和值。

将此添加到 viewDidLoad 方法。

join t3 in ctx.T3
    on new { A = t2.pk2, B = (DateTime?)null }
    equals new { A = t3.fk2, B = t3.x }

将此信息作为布尔值添加到info.plist文件中,并将其设置为NO:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

答案 10 :(得分:0)

如果使用iOS 9.0+和Swift。如果您希望状态栏隐藏在某些视图控制器中但不是全部 - 请确保View controller-based status bar appearance中的Info.plist值设置为YES,否则将在所有视图控制器中使用相同的参数。

并覆盖prefersStatusBarHidden

的子类中的UIViewController
override var prefersStatusBarHidden: Bool {
    get {
        return true
    }
}

可以类似地更改preferredStatusBarStyle

override var preferredStatusBarStyle: UIStatusBarStyle {
    get {
        return .lightContent
    }
}

答案 11 :(得分:0)

on swift 4:

    UIApplication.shared.isStatusBarHidden = ..true/false