IOS 拍照黑屏解决
之前好好的代码,现在拍照,等照片拍摄完毕,会出现黑屏(拍照结束了,看到的是黑屏状态。正常情况下是图片),但是还是可以获取并且保存照片到本地的。
结果发现是同事写的状态栏的statusBar造成的,去除就可以正常拍照了。这些也是受这篇文章的提点:
http://stackoverflow.com/questions/21538781/uiimagepickercontroller-camera-blank-snapshot-image
#pragma mark — Camera And Picture
– (void)loadCameraChooseImage
{
UIActionSheet *sheet;
// 判断是否支持相机
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@”取消” destructiveButtonTitle:nil otherButtonTitles:@”拍照”,@”从相册选择”, nil];
}
else
{
sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@”取消” destructiveButtonTitle:nil otherButtonTitles:@”拍照”,@”从相册选择”, nil];
}
sheet.tag = 255;
[sheet showInView:self.view];
}
– (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (actionSheet.tag == 255)
{
NSUInteger sourceType = 0;
// 判断是否支持相机
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
switch (buttonIndex)
{
case 0:
// 相机
sourceType = UIImagePickerControllerSourceTypeCamera;
break;
case 1:
// 相册
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
case 2:
// 取消
return;
}
}
else
{
if (buttonIndex == 0)
{
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
else
{
return;
}
}
if (sourceType == UIImagePickerControllerSourceTypePhotoLibrary)
{
[self.navigationController pushViewController:_vc animated:YES];
}
else if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
// 跳转到相机或相册页面
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = sourceType;
if (iPad)//ipad拍照走下面的方法
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// [self presentViewController:imagePickerController animated:NO completion:nil];
[self presentViewController:imagePickerController animated:YES completion:^{}];
}];
}
else //iphone拍照走下面的方法
{
[self presentViewController:imagePickerController animated:YES completion:^{}];
}
}
}
}
#pragma mark – image picker delegte
– (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{}];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
/* 此处info 有六个值
* UIImagePickerControllerMediaType; // an NSString UTTypeImage)
* UIImagePickerControllerOriginalImage; // a UIImage 原始图片
* UIImagePickerControllerEditedImage; // a UIImage 裁剪后图片
* UIImagePickerControllerCropRect; // an NSValue (CGRect)
* UIImagePickerControllerMediaURL; // an NSURL
* UIImagePickerControllerReferenceURL // an NSURL that references an asset in the AssetsLibrary framework
* UIImagePickerControllerMediaMetadata // an NSDictionary containing metadata from a captured photo
*/
if (_photoArray.count > 0)
{
[_photoArray removeLastObject];
}
[_photoCollectionView reloadData];
}
– (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{ [self dismissViewControllerAnimated:YES completion:^{}];<span style=”font-family: Arial, Helvetica, sans-serif;”>}</span>