我在UIImagePickerController
委托中使用以下代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
[self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];
[self dismissModalViewControllerAnimated:YES];
}
如果图像来自用户的照片库,它可以很好地工作,但如果它来自相机,则按钮中不会显示任何图像。没有任何错误或崩溃,它只是不起作用(按钮背景保持不变)。当我在NSLog
上使用info
时,它会显示UIImagePickerControllerOriginalImage
中有一个图像对象,但它不会显示。我已经尝试过调整它,但这并没有改变任何东西。
有什么想法吗?
编辑:我可以通过在上述方法中添加以下内容来对其进行排序:
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
然后,我有这个方法:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
[self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];
}
那么,是否需要保存照片才能显示?除非它肯定保存在相册中,否则我不能显示UIImage吗?理想情况下,我宁愿不必这样做,但似乎这是我可能要去的路线。我也会尝试将其保存到磁盘(而不是照片库),也许这样可以。
答案 0 :(得分:2)
事实证明问题出在我打电话dismissModalViewControllerAnimated:
的地方。如果我将它移到方法的顶部,一切都按预期工作:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissModalViewControllerAnimated:YES];
UIImage *image = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
[self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];
}
答案 1 :(得分:0)
也许您应该在将图像添加为背景之前保留图像。