2010-06-05 58 views
15

UIImagePickerController将状态栏样式更改为黑色/不透明。 我想保持状态栏风格黑色/半透明。 我正在寻找一种防止状态栏样式改变的方法。 或让它顺利过渡。现在,呈现UIImagePickerController立即更改状态栏样式,即使 - 指定了[presentModalViewController:picker animated:YES]。有没有办法阻止UIImagePickerController更改状态栏样式?

任何方法,欢迎,包括黑客或私人方法。 这是AppStore的应用程序,但我想尝试。

回答

0

如果您想完全禁用更改状态栏样式,可以添加一个UIApplication类别来阻止它。

@implementation UIApplication (MyCategory) 
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {} 
@end 

如果这样的作品,但你要选择禁用更改,请尝试子类UIApplication的,所以你可以在需要时通过改变超级调用。

+0

哦,这是行不通的。我也尝试过UIApplication的子类化,但它也没有工作。也许UIImagePickerController正在使用私有方法。 – Eonil 2010-06-06 04:49:31

39

我希望状态栏保持黑色不透明,同时显示照片库选择器(照片选择器将其更改为黑色半透明),这解决了我的问题。

设置UIImagePickerDelegate:

libraryUI.delegate = self; 

实现下面的回调:

- (void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated { 

    if ([navigationController isKindOfClass:[UIImagePickerController class]] && 
     ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) { 
     [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO]; 
    } 
} 

您可以在这里指定任何一种状态栏风格。在你的情况下,你可能需要删除sourceType检查并指定UIStatusBarStyleBlackTranslucent

+0

这是正确的答案,但您会看到从半透明黑色到您选择的颜色的轻微“跳跃”。 – Peres 2013-10-18 22:38:36

+0

使用UIImagePickerControllerSourceTypePhotoLibrary时,您是否注意到了这个问题,打开某个相册,然后平移一下,取消手势? – Kukosk 2014-01-29 15:30:23

0

我发现对我来说更简单的方法。只是做

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
[self.delegate setNeedsStatusBarAppearanceUpdate]; 

和状态栏被隐藏(如果你想要它是可见的更改代码)。必须在从UIImagePickerController中选取图像后调用。

1

试试这个完美的工作在iOS 8

-(void)navigationController:(UINavigationController *)navigationController 
     willShowViewController:(UIViewController *)viewController 
        animated:(BOOL)animated 
{ 
    [[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack]; 
} 
相关问题