Создание формата изображения с неизвестным типом - это ошибка Objective-C Xcode 8

Выбирая изображение из подборщика изображений в iOS 10 Objective-C и Xcode 8. Я получаю сообщение об ошибке -

Создание формата изображения с неизвестным типом - это ошибка

.

Это было нормально для предыдущей версии.

Вот мой код:

UIImagePickerController* imgPicker=[[UIImagePickerController alloc] init];
imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imgPicker.delegate = self;
[self presentViewController:imgPicker animated:YES completion:nil];

и метод делегата для получения изображения.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
       [picker dismissViewControllerAnimated:YES completion:NULL];
       UIImage *myImage = [info objectForKey:UIImagePickerControllerOriginalImage];
}

Я также пробовал другую функцию делегата.

 -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
}

но ошибка не будет.

Я не уверен, что это ошибка Xcode 8?
Если кто-нибудь столкнулся с проблемой и решился, пожалуйста, помогите исправить ее.

Ответы

Ответ 1

Это ошибка. Это просто ложное предупреждение. Ничего плохого в работе приложения не происходит, поэтому игнорируйте предупреждение.

Ответ 2

Я просматриваю документ Apple и использую этот

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];

в методе didFinishPickingMediaWithInfo.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {  

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];  
imageViewPreview.image = chosenImage;  

[picker dismissViewControllerAnimated:YES completion:NULL];     

}

надеюсь, что эта помощь!

Ответ 3

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
  UIImage *tempImage = [info objectForKey:UIImagePickerControllerEditedImage];
  UIGraphicsBeginImageContext(tempImage.size);
  [tempImage drawInRect:CGRectMake(0, 0, tempImage.size.width, tempImage.size.height)];
  UIImage *image = [UIImage imageWithCGImage:[UIGraphicsGetImageFromCurrentImageContext() CGImage]];

  [self.myimageview setImage:image];
  UIGraphicsEndImageContext();
  [picker dismissViewControllerAnimated:YES completion:nil];
}

Ответ 4

Обновите метод UIImagePickerControllerDelegate до нового метода

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

ОТ ПРЕДЫДУЩЕГО МЕТОДА:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

Это решило проблему для меня. Версия IDE: Xcode8.2.1

Ответ 5

Добавьте это.

imgPicker.allowsEditing = YES;

Ответ 6

Я решил эту проблему, добавив следующую инициализацию параметра BitmapInfo, который использовался в переменной CGContextRef context:

CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;

вместо CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);

P.S:

Итак, теперь мой CGContextRef context выглядит следующим образом

CGContextRef context = CGBitmapContextCreate(NULL,
        imageSize.width,
        imageSize.height,
        CGImageGetBitsPerComponent(imageRef),
        0,
        colorSpace,
        bitmapInfo);
CGColorSpaceRelease(colorSpace);