繁体   English   中英

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

[英]How to hide the status bar programmatically in iOS 7?

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

在iOS7中,您应该在viewController中实现

- (BOOL)prefersStatusBarHidden {
    return YES;
}

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

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

[[UIApplication sharedApplication] setStatusBarHidden:YES];

斯威夫特3.0

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

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

在应用程序中隐藏状态基础

UIApplication.shared.isStatusBarHidden = true

并在项目的信息列表中设置键值“基于视图控制器的状态栏外观”为否。

- (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;
}

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];
}

如果您需要在给定的视图控制器上动态隐藏/显示它,则可以执行以下操作。

(尽管我建议您只使用- (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

如果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];

斯威夫特4.1

步骤1。 info.plist View controller-based status bar appearance设置为YES

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

private var statusBarIsHidden = false

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

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

尝试这个

[[UIApplication sharedApplication] setStatusBarHidden:YES];

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

  1. 在“ info.plist”中将“基于View Controller的状态栏外观设置为NO”

  2. UIApplication.sharedApplication()。statusBarHidden = true //将应用程序委托放在某个地方(applicationWill或DidFinishLaunchingWithOptions:

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

将此添加到您的viewDidLoad方法。

[[UIApplication sharedApplication] setStatusBarHidden:YES];

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

View controller-based status bar appearance

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

并重写UIViewController子类中的prefersStatusBarHidden

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

可以通过类似的方法更改preferredStatusBarStyle

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

快速4:

    UIApplication.shared.isStatusBarHidden = ..true/false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM