【问题标题】:Can't get image from UIImagePickerController无法从 UIImagePickerController 获取图像
【发布时间】:2012-06-12 21:08:56
【问题描述】:

我检查了几个教程,据我所知我的代码是正确的,但最后我没有得到图像。我没有收到任何错误,但我尝试设置的屏幕上的图像仍然是空白的。

这是我的头文件

@interface homeViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

@property (weak, nonatomic) IBOutlet UIImageView *avatarImage;
@property (weak, nonatomic) IBOutlet UIButton *photoButton;

@property (nonatomic, retain) UIImagePickerController *imgPicker;

- (IBAction)setPhoto;

@end

还有相关的方法

- (IBAction)setPhoto 
{
    self.imgPicker = [[UIImagePickerController alloc] init];
    self.imgPicker.sourceType=UIImagePickerControllerSourceTypeCamera;
    self.imgPicker.delegate=self;
    self.imgPicker.allowsEditing = YES;
    self.imgPicker.showsCameraControls=YES;

    [self presentModalViewController:self.imgPicker animated:YES];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [picker dismissModalViewControllerAnimated:YES]; 
}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

    self.avatarImage = [[UIImageView alloc] init];
    self.avatarImage.image = image;
    [self dismissModalViewControllerAnimated:YES];
}

当我在这里放置断点时:[self dismissModalViewControllerAnimated:YES]; 我看到图像变量有一个值,但是 self.avatarImage 有一个 0x00000000

【问题讨论】:

标签: ios ios5 uiimagepickercontroller


【解决方案1】:

您使用了错误的委托方法。使用

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

您使用的委托方法在 iOS 3.0 中已弃用。

【讨论】:

  • 我将委托方法更改为您显示的方法并编辑了我的问题,但最后我仍然没有得到图像。
  • 只是为了检查一下,您是否为您的应用启用了定位服务?
  • 我不确定,我该如何检查?
  • 委托方法是否被调用?并且位置不是问题,只有在您使用较低级别的技术(即 ALAssetLibrary)时才会出现问题。
  • 我再次用我的代码更新了问题,委托被调用,我有一个图像变量的值,但 UIImageView avatarImage 的值为 0x00000000。
【解决方案2】:

由于您指定了allowsEditing = NO,因此您需要使用UIImagePickerControllerOriginalImage 信息键。

注意:如果没有进行编辑,“EditedImage”可能默认为“OriginalImage”。在这种情况下,您的“图像”变量将是有效的,并且 self.avatarView 中 UIImageView 的显示将是罪魁祸首。

【讨论】:

  • 两种方式我都试过了,两种方式都没有显示图像。
  • “图像”中没有显示图像或 NIL 值?添加'NSAssert(图像,@“无图像”);'在分配给“图像”之后。
  • 我已经更新它以显示当前代码。 UIImageView 似乎为空,但我得到的图像似乎很好。我正在初始化 UIImageView,所以不确定它为什么不工作。
  • 您没有将 UIImageView 添加到屏幕上。你不应该在那里初始化它,你应该在 viewDidLoad 之类的地方初始化它(并将其添加为某个视图的子视图),然后在委托方法中访问它。
  • 你的 UI(Storyboard,NIB)不是已经分配了 avatarImage,使用默认值初始化,并定位在其父视图中吗?它应该是。然后只需 self.avatarImage.image = image with redisplay 将显示所选图像。
【解决方案3】:

线条

[picker dismissModalViewControllerAnimated:YES];
[picker release];

在使用信息字典之前必须出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2019-03-20
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多