之前好好的代码,现在拍照,等照片拍摄完毕,会出现黑屏(拍照结束了,看到的是黑屏状态。正常情况下是图片),但是还是可以获取并且保存照片到本地的。

结果发现是同事写的状态栏的statusBar造成的,去除就可以正常拍照了。这些也是受这篇文章的提点:

http://stackoverflow.com/questions/21538781/uiimagepickercontroller-camera-blank-snapshot-image

%title插图%num

#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>