我是iOS开发的新手.我试图隐藏状态栏UIImagePickerController.每当我点击"拍照"时,都会出现状态栏.它没有隐藏.我希望状态栏只能隐藏在UIImagePickerController.
这是我的代码,
- (IBAction)takePhoto:(UIButton *)sender
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self statusBar:YES];
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imageView.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:NULL];
}
-(void)statusBar:(BOOL)status
{
[[UIApplication sharedApplication] setStatusBarHidden:status];
}
Run Code Online (Sandbox Code Playgroud)
如何隐藏状态栏UIImagePickerController?
在我UIViewController,我有:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.view sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)
然而,观点看起来像这样:

我确定这段代码会运行.我从一个加载视图xib.我没有对状态栏做任何其他事情,比如改变它的风格.可能有什么不对?
即使我在我的app委托中设置`application.statusBarHidden = YES',我也看到:

我在使用allowEditing = YES的UIImagePickerController时遇到问题.我无法从底部裁剪图像,但在移动裁剪矩形时,我还有一个额外的空白空间.
也在方法中.
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
Run Code Online (Sandbox Code Playgroud)
我记录信息,它给了我错误的CropRect(这不是正方形!)
UIImagePickerControllerCropRect = "NSRect: {{0, 357}, {666, 646}}";
UIImagePickerControllerEditedImage = "<UIImage: 0x7f9b8aa47b30> size {640, 618} orientation 0 scale 1.000000";
UIImagePickerControllerMediaType = "public.image";
UIImagePickerControllerOriginalImage = "<UIImage: 0x7f9b8868e5a0> size {1500, 1001} orientation 0 scale 1.000000";
Run Code Online (Sandbox Code Playgroud)
有没有人有这个错误,你如何解决它?
见下图


当我呈现ImagePickerController时,statusBar文本颜色仍为黑色,如何制作这样的?
我的iPad应用程序打开带有"页面"演示风格的模态视图控制器.如您所知,"页面"演示文稿样式不包括呈现视图控制器以指示页面显示的状态栏.


从模态视图控制器,应用程序打开UIImagePickerController以制作照片.UIImagePickerController拥有'全屏'演示风格.解散图像选择器呈现模态视图控制器变为20px更高并重叠初始视图控制器的状态栏.
我试图UIImagePickerController用简单的替换,UINavigationController它也打破了我的模态视图控制器.
屏幕截图:


他们只有恢复'Page'视图控制器大小的方法是viewController.view.superview.superview.superview.superview在返回'Page'视图控制器后改变帧的高度.但这真的很奇怪.
在解除嵌套模态视图控制器后,是否有另一种方法来修复"页面"模态视图控制器演示?
更新: 我使用这些奇怪的代码来解决我的问题:
#define STATUS_BAR_HEIGHT 20
#define IPAD_PORTRAIT_HEIGHT 1004
#define IPAD_LANDSCAPE_HEIGHT 748
UIView *superview = nil;
// In case of this view controller included in navigationController we have to use superview of navigation's controller view
if (self.navigationController)
superview = self.navigationController.view.superview;
else
superview = self.view.superview;
CGRect r = superview.frame;
// Sometimes we have to fix height + origin, sometimes only height (becase view has bottom magnifying) …Run Code Online (Sandbox Code Playgroud) 我们使用蓝色导航栏颜色和白色文字颜色:

但是,当我创建UIImagePickerController它时,更改状态栏的颜色:

有没有解决方法?
目标截图想要

首先,我已经阅读了这些链接
所有链接都使用这些API UIApplication
- setStatusBarStyle:animated:
- setStatusBarHidden:withAnimation:
Run Code Online (Sandbox Code Playgroud)
但是,这些API在iOS 9中已弃用.
那么,如何在iOS 9中获得lightContent statusBar?
ios ×7
statusbar ×4
ios7 ×3
objective-c ×3
ios8 ×1
ios9 ×1
ipad ×1
iphone ×1
storyboard ×1
uistoryboard ×1