UIImage不会从相机中显示,只能从照片库中显示

时间:2011-02-24 21:22:07

标签: iphone objective-c ios

我在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吗?理想情况下,我宁愿不必这样做,但似乎这是我可能要去的路线。我也会尝试将其保存到磁盘(而不是照片库),也许这样可以。

2 个答案:

答案 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)

也许您应该在将图像添加为背景之前保留图像。