有没有一种方法可以防止UIImagePickerController改变状态栏样式?

15

UIImagePickerController会将状态栏样式更改为黑色/不透明。 我希望保持状态栏样式为黑色/半透明。 我正在寻找一种方法来防止状态栏样式的更改。 或使其平滑过渡。目前,即使指定了-[presentModalViewController:picker animated:YES],显示UIImagePickerController仍会立即更改状态栏样式。

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

4个回答

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


这是正确的答案,尽管您会看到从黑色半透明到您选择的颜色有轻微的“跳跃”。 - Rui Peres
你是否注意到在使用UIImagePickerControllerSourceTypePhotoLibrary时,打开某个相册,稍微向后滑动并取消手势时出现的问题? - Kukosk

1
尝试在iOS 8上运行此代码,它可以完美工作。
-(void)navigationController:(UINavigationController *)navigationController
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated
{
    [[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack];
}

0

我发现了对我来说更简单的方法。只需执行

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

并且状态栏是隐藏的(如果你想让它可见,请更改代码)。必须在从UIImagePickerController选择图像后调用。


0
如果您想完全禁用更改状态栏样式,可以添加一个UIApplication类别来阻止它。
@implementation UIApplication (MyCategory)
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {}
@end

如果这个方法可行,但你想有选择地禁用更改,请尝试子类化UIApplication,这样你就可以在想要通过更改时调用super。

哦,它不起作用。我也尝试了子类化UIApplication,但它也不起作用。也许UIImagePickerController正在使用某些私有方法。 - eonil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接