我想在按下按钮时隐藏我的iPhone应用程序中的状态栏,我想在按下另一个按钮时再次显示它。
我尝试通过覆盖视图控制器中的-(BOOL)prefersStatusBarHidden
来隐藏状态栏,但这也会从顶部删除其视图。
因此在删除此状态栏时会出现跳转。我想要做的只是隐藏状态栏上的内容,同时保持状态栏的背景 例如:您可以在gmail应用中检查相同的功能。在gmail应用程序中打开侧面抽屉时,只有状态栏上的内容被隐藏,没有跳转。
答案 0 :(得分:0)
在控制器的viewDidLoad方法中添加以下代码行 或者在容器控制器中,如果你使用任何。
self.edgesForExtendedLayout = UIRectEdgeAll;
self.extendedLayoutIncludesOpaqueBars = YES;
self.automaticallyAdjustsScrollViewInsets = NO;
第一行,self.edgesForExtendedLayout = UIRectEdgeAll;
包括布局的所有边。
第二个,self.extendedLayoutIncludesOpaqueBars = YES;
在布局中也包含不透明条。如果您的状态栏不是半透明的,则此行涵盖案例。
第三行self.automaticallyAdjustsScrollViewInsets = NO;
指定不调整视图的滚动插入。
答案 1 :(得分:0)
我通过iOS13的additionalSafeAreaInsets
属性解决了此问题。在iOS13上,没有其他解决方案对我有用。
隐藏状态变量时,将additionalSafeAreaInsets
的上限值设置为20
,取消隐藏时将其再次设置为0
。
对于带有缺口的设备,无需更改安全区域插图。仅对其他设备执行此操作。
答案 2 :(得分:-1)
设置一个bool作为你的切换开/关并将其返回到' prefersStatusBarHidden':
- (BOOL)prefersStatusBarHidden {
return self.yourBool;
}
要更改statusBar状态,请更改bool的值并在动画块中调用此方法:
self.yourBool = NO;
[self setNeedsStatusBarAppearanceUpdate];
答案 3 :(得分:-1)
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]){
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}