簡體   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