<error>:CGImageCreateWithImageProvider:图像大小无效:150 x 150. __connection_block_invoke_2中的错误:连接中断

时间:2015-10-17 03:08:22

标签: ios xcode macos

当我在设备(8.0.2)(而不是模拟器)上运行我的应用程序时,同时存在两个错误。

一个是

<Error>: CGImageCreateWithImageProvider: invalid image size: 150 x 150.

另一个是

error in __connection_block_invoke_2: Connection interrupted

以下是代码:

- (IBAction)chooseImage:(id)sender {

    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"choose picture"
                                                       delegate:self
                                              cancelButtonTitle:@"cancel"
                                         destructiveButtonTitle:nil
                                              otherButtonTitles:@"take photos", @"from photo album", nil];
    }
    else
    {
        self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"choose picture"
                                                       delegate:self
                                              cancelButtonTitle:@"cancel"
                                         destructiveButtonTitle:nil
                                              otherButtonTitles:@"from photo album", nil];
    }

    self.actionSheet.tag = 1000;
    [self.actionSheet showInView:self.view];
}


-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
 if (actionSheet.tag == 1000)
{
    NSUInteger sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    if([UIImagePickerController    isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        switch (buttonIndex)
        {
            case 0:
                sourceType = UIImagePickerControllerSourceTypeCamera;
                break;
            case 1:
                sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                break;
            case 2:
                return;
        }
    }
    else
    {
        if (buttonIndex == 2)
        {
            return;
        }
        else
        {
            sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        }
    }


    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.delegate = self;
    imagePickerController.allowsEditing = YES;
    imagePickerController.sourceType = sourceType;

    [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:UIImagePickerControllerEditedImage];
    [self.chooseImage setImage:image forState:UIControlStateNormal];
    //self.productImage.image = image;
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:^{}];
}

1 个答案:

答案 0 :(得分:0)

这是iOS 10中的一个错误。

  1. 方法- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info更改为- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
  2. 以这种方式添加GCD:

     [picker dismissViewControllerAnimated:YES completion:^{}];
     dispatch_async(dispatch_get_main_queue(), ^{
          UIImage *image = [info   objectForKey:UIImagePickerControllerEditedImage];
          [self.chooseImage setImage:image forState:UIControlStateNormal];
          //self.productImage.image = image;
    });
    }