在我的. plist文件中,我将“基于视图控制器的状态栏外观”设置为NO
。但是在UIImagePickerController
之后,我的应用程序的行为就好像选项设置为YES
。
在我的应用程序中,我展示了一个呈现UIImagePickerController
的VC。
问题是这样的:
有没有办法不用在我的视图控制器中管理状态栏来解决这个问题?
如果在应用程序中将“基于视图控制器的状态栏外观”设置为“否”,则接受的答案将有效。plist文件。如果确实需要控制其他一些视图控制器中的状态栏,并将此选项设置为“是”,则使UIImagePickerController正常工作的另一种方法是将其子类化
// .h
@interface MYImagePickerController : UIImagePickerController
@end
// .m
@implementation MYImagePickerController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent; // change this to match your style
}
@end
我今天也面临同样的问题。这是我的解决方案。
在调用图像拾取器的视图控制器中,将自己设置为图像拾取器的委托。(您可能已经在这样做了)
UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
由于UIImagePickerController是一种导航控制器,因此您也可以将自己设置为UINavigationController委托。然后:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
用你想要的任何样式替换UIStatusBarStyleLightContent。
上面的解决方案都不适合我,但通过结合Rich86man和iOS_DEV_09的回答,我得到了一个一贯有效的解决方案:
UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
和
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
关于这个很棒的解决方案。对于2014/iOS8,我发现在某些情况下,您还需要包括首选StatusBarHidden
以及可能的childViewControllerForStatusBarHidden
。。。
-(void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
-(BOOL)prefersStatusBarHidden // iOS8 definitely needs this one. checked.
{
return YES;
}
-(UIViewController *)childViewControllerForStatusBarHidden
{
return nil;
}
-(void)showCamera
{
self.cameraController = [[UIImagePickerController alloc] init];
self.cameraController.delegate = (id)self; // dpjanes solution!
etc...
完整状态栏如下图: 此列表显示所有 HTTP 请求的相关信息,从左到右各列分别代表: 第一区块,显示的 Fiddler 是否处于捕捉状态,(开启状态)、(关闭状态),可以用快捷键 F12 切换或者点击该区域。 第二区块,显示当前捕捉哪些进程的通讯。前提是被捕获的进程必须使用 HTTP 代理:127.0.0.1:8888 All Processes —— 捕获所有进程的请求 Web Browsers
我需要根据视图控制器改变状态栏样式,所以在我的plist文件“基于视图控制器的状态栏外观”设置为是。 我有时需要隐藏状态栏! 我试图使用setStatusBarHidden,但它似乎只有在“基于视图控制器的状态栏外观”设置为NO时才能工作... 有没有办法隐藏状态栏?
我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件: 但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式 我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):
iOS 7+ 允许创建全屏应用,但是当状态栏覆盖你的应用时,会有这样的问题: 不好! 好! Framework7帮助你解决这个问题。它自动检测你的应用是否是全屏模式,如果是的话,自动添加"with-statusbar-overlay"类到<html>(如果不是的话,移除这个类)。通过"with-statusbar-overlay"类(应用处于全屏模式的时候),<html>在顶部拥有额外的paddi
描述 (Description) iOS 7+允许您构建全屏应用,当您的状态栏与您的应用重叠时,这可能会产生问题。 Framework7通过检测您的应用是否处于全屏模式来解决此问题。 如果你的应用程序处于全屏模式,那么Framework7会自动将with-statusbar-overlay类添加到《html》 (如果app不是全屏模式,则删除),你需要在《body》添加statusbar-over
标题说明了一切。或者我在理解sdk时有一些非常错误的地方,或者苹果的sdk有一些非常错误的地方。 设置(info.plist)基于视图控制器的状态时..=是的,我可以通过调用setNeedsStatusBarEtc来隐藏我的状态栏动画等等。。。但是,我不能改变我喜欢的风格。当我将其设置为“否”时,我可以更改样式,但不能更改所有其他内容。。我该怎么办?怎么了?请帮帮我! 当基于控制器的状态...=Y