UIImagePickerController会将状态栏样式更改为黑色/不透明。 我希望保持状态栏样式为黑色/半透明。 我正在寻找一种方法来防止状态栏样式的更改。 或使其平滑过渡。目前,即使指定了-[presentModalViewController:picker animated:YES],显示UIImagePickerController仍会立即更改状态栏样式。
欢迎任何方法,包括黑客或私有方法。 这是一个AppStore应用程序,但我想尝试。
UIImagePickerController会将状态栏样式更改为黑色/不透明。 我希望保持状态栏样式为黑色/半透明。 我正在寻找一种方法来防止状态栏样式的更改。 或使其平滑过渡。目前,即使指定了-[presentModalViewController:picker animated:YES],显示UIImagePickerController仍会立即更改状态栏样式。
欢迎任何方法,包括黑客或私有方法。 这是一个AppStore应用程序,但我想尝试。
在显示照片库选择器时,我希望状态栏仍然保持黑色不透明(照片选择器会将其更改为黑色半透明),这对我解决了问题。
设置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
。
-(void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
[[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack];
}
我发现了对我来说更简单的方法。只需执行
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self.delegate setNeedsStatusBarAppearanceUpdate];
并且状态栏是隐藏的(如果你想让它可见,请更改代码)。必须在从UIImagePickerController选择图像后调用。
@implementation UIApplication (MyCategory)
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {}
@end