UIImageView не показывает изображение из UIImagePickerController - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь сделать снимок с моим приложением и затем показать его в UIImageView, который предопределен в моем .xib.У меня есть IBOutlet UIImageView * _foto, который связан с UIImageView в .xib

Когда я делаю следующее, изображение не отображается в 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.Это сильно смущает меня, и я понятия не имею, что происходит, все, что я знаю, это то, что я не ожидал такого поведения.У кого-нибудь есть какие-либо подсказки и, надеюсь, правильное решение этой проблемы?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2016

Ответ Артура Озеранского частично верен.

Если вы используете viewDidLayoutSubviews () для настройки макета, он вызывается при исчезновении средства выбора, поэтому, если вы устанавливаете изображение по умолчанию в viewDidLayoutSubviews (), вы возвращаетесь к изображению по умолчанию.

Настройка изображения по умолчанию в viewDidLoad.

0 голосов
/ 25 октября 2011

UIImagePickerController захватывает много памяти устройства при выборе изображения.Во время - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo я много раз замечал предупреждения памяти уровня 1 и 2. Это может вызвать принудительную выгрузку и перезагрузку вашего представления, снова запустить метод viewDidLoad вашего контроллера представления.Если ваш объект _foto представляет собой IBOutlet, он будет удален из памяти и загружен заново с начальными значениями всех свойств (изображение тоже).Также, если вы установите для image значение nil в viewDidLoad, это может быть причиной.

Поместите NSLog в viewDidLoad, чтобы проверить, перезапускается ли он.Также вы можете попытаться поместить захваченное изображение в библиотеку - если изображение существует в библиотеке, возможно, проблема в выгрузке.

...