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>
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值