Ответ 1
Это ошибка. Это просто ложное предупреждение. Ничего плохого в работе приложения не происходит, поэтому игнорируйте предупреждение.
Выбирая изображение из подборщика изображений в 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?
Если кто-нибудь столкнулся с проблемой и решился, пожалуйста, помогите исправить ее.
Это ошибка. Это просто ложное предупреждение. Ничего плохого в работе приложения не происходит, поэтому игнорируйте предупреждение.
Я просматриваю документ 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];
}
надеюсь, что эта помощь!
- (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];
}
Обновите метод UIImagePickerControllerDelegate до нового метода
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
ОТ ПРЕДЫДУЩЕГО МЕТОДА:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
Это решило проблему для меня. Версия IDE: Xcode8.2.1
Добавьте это.
imgPicker.allowsEditing = YES;
Я решил эту проблему, добавив следующую инициализацию параметра 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);