繁体   English   中英

UIImageView不显示来自UIImagePickerController的图像

[英]UIImageView does not show Image from UIImagePickerController

我试图用我的应用拍照,然后在.xib中预定义的UIImageView中显示它。 我有一个IBOutlet UIImageView * _foto,它链接到.xib中的UIImageView

当我执行以下操作时,拍照后图片不会显示在UIImageView中:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
    {

        _foto.image = image;
        //Also tried set image, and resizing the image first

        [self dismissModalViewControllerAnimated:YES];

    }

现在,当我添加代码以使用从选择器返回的图像创建新的图像视图,并将其作为子视图添加到这样的视图中时,会发生一些奇怪的事情:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{


    UIImageView *iv = [ [UIImageView alloc] initWithImage:image];

    [self.view addSubview:iv];

    [iv release];

    _foto.image = image;

    [self dismissModalViewControllerAnimated:YES];
}

现在,图像既显示在视图左上角的新创建的图像视图中,也可以显示在我的_foto UIImageView中。 这让我感到非常困惑,而且我不知道发生了什么,我所知道的是这不是我所期望的行为。 有没有人有任何线索,希望对这个问题有一个适当的解决方案?

ArturOzierański的回答部分正确。

如果您使用viewDidLayoutSubviews()配置布局,则在选择器消失时会调用此方法,因此,如果您在viewDidLayoutSubviews()中设置默认图像,则将重置为默认图像。

在viewDidLoad中配置默认​​图像。

UIImagePickerController在拾取图像时会占用大量设备内存。 - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo我注意到内存警告级别为1和2多次。它可能会导致强制卸载并重新加载视图,启动再次使用视图控制器的viewDidLoad方法。 如果您的_foto对象是IBOutlet,它将从内存中删除,并使用所有属性的起始值(也包括图像)再次加载。 另外,如果您在viewDidLoad中将图片设置为nil,则可能是原因。

将一些NSLog放入viewDidLoad中,以检查是否重新启动。 您也可以尝试将捕获的图像放入库中-如果库中存在图像,则问题可能出在视图卸载中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM