Ios7 如何隐藏iOS状态栏
在我的iOS视频应用程序中,状态栏隐藏在某些视图控制器中。我已经使用以下代码完成了这项工作Ios7 如何隐藏iOS状态栏,ios7,show-hide,statusbar,Ios7,Show Hide,Statusbar,在我的iOS视频应用程序中,状态栏隐藏在某些视图控制器中。我已经使用以下代码完成了这项工作 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 它适用于iOS 5和iOS 6,但不适用于iOS 7 我试过使用这个视图控制器 例如: 它工作得很好,但我无法在父视图控制器中再次显示状态栏 您应该将此值添加到plist:“查看基于控制器的状态栏外观”并将其设置为“否” 要在iOS7中隐藏状态栏,请执行以下操作: 打开plist文
[[UIApplication sharedApplication] setStatusBarHidden:YES];
- 它适用于iOS 5和iOS 6,但不适用于iOS 7
- 我试过使用这个视图控制器
它工作得很好,但我无法在父视图控制器中再次显示状态栏 您应该将此值添加到plist:“查看基于控制器的状态栏外观”并将其设置为“否”
要在iOS7中隐藏状态栏,请执行以下操作:
打开plist文件,然后添加一个名为“查看基于控制器的状态栏外观”的添加行,并在plist中将其值设置为
NO
,添加以下属性
Status bar is initially hidden = YES
View controller-based status bar appearance = NO
现在状态栏将隐藏。试试看
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
要在iOS7中隐藏状态栏,需要两行代码
[[UIApplication sharedApplication] setStatusBarHidden:YES];
View-Controller Based Status Bar Appearance = NO
在viewdidload中添加以下行
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
并添加新方法
- (BOOL)prefersStatusBarHidden {
return YES;
}
同时更改info.plist文件
基于视图控制器的状态栏外观“=否
从
UIKit
UIApplication.h
,它可以为我工作:
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
因此,应将“查看基于控制器的状态栏外观”设置为“否”,并在Info.plist中添加以下内容:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
UIStatusBarHidden
UIViewControllerBasedStatusBarAppearance
试试这个简单的方法:
目标C:
斯威夫特:
为了更好地理解,请添加一些带有注释的照片: 应用程序在任何更改之前 在名为
支持文件的项目导航器
文件夹中找到,然后单击*.plist文件
之后,您将显示应用程序的不同设置。您需要添加两个键UIStatusBarHidden
和UIViewControllerBasedStatusBarAppearance
。只需单击+按钮即可完成此操作
按+后,您可以选择其中一个键-只需开始键入即可
正确版本:
最后,应用此更改后的应用程序:
此外,您还可以找到替代解决方案您应该将此值添加到plist:“查看基于控制器的状态栏外观”,并将其设置为“否”。我做了以下操作,它似乎可以工作(即使在iOS 8中):
要回答Susitha的问题,请使用设置需要StatusBarAppearanceUpdate。这将调用prefersStatusBarHidden以刷新所需的状态栏状态。请尝试以下操作:
@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
- (BOOL)prefersStatusBarHidden {
return self.isHideStatusBar;
}
- (void)someMethod {
// triggered by an event or user action
[self setHideStatusBar:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
如果要再次查看状态栏,请将属性hideStatusBar(或您所称的任何内容)设置为NO。通过再次调用来间接调用preferStatusBarHidden
[self setNeedsStatusBarAppearanceUpdate]
以下是Swift版本(iOS9之前):
这同样有效(iOS7+):
您还需要拨打:
setNeedsStatusBarAppearanceUpdate()
在sayviewDidLoad()
中
请注意,如果您使用SplitView控制器或其他容器视图控制器,您还需要让它在发送childViewControllerForStatusBarHidden
时返回您的类。一种方法是为saystatusController
使用公共弱变量,并使用此重写方法返回它。
- UIApplication.setStatusBarX自iOS9起已被弃用
- 不推荐在info.plist中使用UIViewControllerBasedStatusBarAppearance=NO
- 因此,我们应该在所有视图控制器中使用preferredStatusBarX
但当涉及到UINavigationController时,它会变得更有趣:
- 如果navigationBarHidden=true,则调用子UIViewController的preferredStatusBarX,因为该子级正在状态栏下显示内容
- 如果navigationBarHidden=false,则在UINavigationController的preferredStatusBarX显示状态栏下的内容后,将调用它
- UINavigationController的默认preferredStatusBarStyle使用UINav.navigationBar.barStyle中的值。默认值=黑色状态栏内容。黑色=白色状态栏内容
- 因此,如果要将BarIntColor设置为某种自定义颜色(可能是),还需要将barStyle设置为.Black以获取白色状态栏内容。在设置BarIntColor之前,我会将barStyle设置为黑色,以防barStyle覆盖BarIntColor
- 另一种选择是,您可以将UINavigationController子类化,而不必使用条样式
- 但是,如果您将UINavigationController子类化,那么如果navigationBarHidden=true,您将无法控制状态栏。在这种情况下,UIKit会在不询问UINavigationController的情况下直接访问子UIViewController。我本以为UINavigationController应该负责询问子UIViewControllerong>在iOS中隐藏状态栏的步骤
1.打开AppDelegate.m文件,添加application.statusBar隐藏在didFinishLaunchingWithOptions方法中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
application.statusBarHidden = YES;
return YES;
}
- 打开info.plist并设置
查看基于控制器的状态栏外观
设置否iOS 9以后的版本:
由于statusBarHidden
方法已被弃用自iOS9您需要在plist中添加两个值,如下所示:
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
UIStatusBarHidden
UIViewControllerBasedStatusBarAppearance
或通过用户界面,请参照下图:
由于statusBarHidden
已从iOS9弃用
@属性(读写,非原子,getter=isStatusBarHidden)BOOL
statusBarHidden NS不推荐使用的IOS(2\u 0,9\u 0,“使用-[UIViewController
优先状态栏隐藏])(禁止使用电视
在iOS10中,我需要做的就是覆盖我的RootViewController
(Swift)中的prefersStatusBarHidden
var:
Swift 3的更新:
更新信息.p
[self setNeedsStatusBarAppearanceUpdate]
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
setNeedsStatusBarAppearanceUpdate()
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
application.statusBarHidden = YES;
return YES;
}
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
override var prefersStatusBarHidden: Bool {
return true
}
private var isStatusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}