从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的错误吗?
如果有人遇到问题并解决了,请帮助修复它。
答案 0 :(得分:34)
这是一个错误。这只是一个虚假的警告。应用程序的工作没有坏事,所以忽略警告。
答案 1 :(得分:4)
我浏览苹果文档并使用此
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
didFinishPickingMediaWithInfo 方法。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
imageViewPreview.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
希望这有帮助!
答案 2 :(得分:1)
- (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];
}
答案 3 :(得分:-1)
将UIImagePickerControllerDelegate方法更新为新方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
来自以前的方法:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
这解决了我的问题。 IDE版本:Xcode8.2.1
答案 4 :(得分:-2)
添加此内容。
imgPicker.allowsEditing = YES;
答案 5 :(得分:-4)
我通过在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);