如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏
Posted
技术标签:
【中文标题】如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏【英文标题】:How to hide status bar for specific viewcontroller in ios 9, using objective-C 【发布时间】:2016-04-23 06:19:20 【问题描述】:我想隐藏特定视图控制器的状态栏,而不是全部。 然后我尝试了这个,
[[UIApplication sharedApplication] setStatusBarHidden:YES]; in the `.AppDelegate.m` inside the `didfinishlaunchwithoption` but it didn't work. and also it is deprecated.
然后我在我的视图控制器中尝试了
- (BOOL) prefersStatusBarHidden
return YES;
这也没有用。任何人都可以帮我解决这个问题。thnak 你 我不想在这里使用任何已弃用的方法
【问题讨论】:
Hide the status bar in ios 9的可能重复 你的问题解决了吗? 不,兄弟@DianaProdan 没有为我工作,尝试了所有。你有什么想法吗? 我从 .plist'View controller-based status bar appearance
字段中删除,并在需要隐藏状态栏的控制器中添加 - (BOOL) prefersStatusBarHidden return YES;
。成功了
【参考方案1】:
转到 info.plist 并添加两个属性(如果不存在)。将“状态栏最初隐藏”设置为“YES”并将“UIViewControllerBasedStatusBarAppearance”设置为“YES”。这将隐藏您应用的状态栏。
-(BOOL)prefersStatusBarHidden
return YES;
并在你想要的地方调用这个方法,例如从 viewDidLoad
[self prefersStatusBarHidden];
【讨论】:
这适用于隐藏状态栏。但在特定视图控制器中显示状态栏不起作用。无论如何,谢谢 @Graham 检查已编辑的答案,这对我来说是完美的,只需将“UIViewControllerBasedStatusBarAppearance”更改为“YES”,其他的也一样。【参考方案2】:我想隐藏特定视图控制器的状态栏,而不是全部。
只有 *** 视图控制器才能说明状态栏是否隐藏。您的prefersStatusBarHidden
没有被咨询,因为您的视图控制器不是***视图控制器——它有某种负责状态栏的父视图控制器。
【讨论】:
【参考方案3】:在您的视图控制器中尝试以下代码。 在没有贬损警告的情况下尝试以下方法:
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
- (void)viewWillDisappear:(BOOL)animated
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
[super viewWillDisappear:animated];
iOS 9 更新 在 viewController 中添加以下代码来隐藏状态栏。
- (BOOL) prefersStatusBarHidden
return YES;
【讨论】:
setStatusBarHidden(_:withAnimation:)
在 iOS 9 中已弃用。【参考方案4】:
Try below code in your view controller.
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
- (void)viewWillDisappear:(BOOL)animated
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[super viewWillDisappear:animated];
【讨论】:
[[UIApplication sharedApplication] setStatusBarHidden:YES]
此方法已弃用。【参考方案5】:
将以下代码添加到您的视图控制器..
- (BOOL)prefersStatusBarHidden
return NO;
如果更改此方法的返回值,请调用 setNeedsStatusBarAppearanceUpdate 方法。
对于 childViewController,要指定子视图控制器应控制首选状态栏隐藏/取消隐藏状态,请实现 childViewControllerForStatusBarHidden 方法。
【讨论】:
prefersStatusBarHidden
没有被调用
prefersStatusBarHidden
方法中返回命令后无法调用setNeedsStatusBarAppearanceUpdate
。以上是关于如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏的主要内容,如果未能解决你的问题,请参考以下文章