Я хочу, чтобы всегда использовать один и тот же экземпляр UIImagePickerController во всем моем приложении, так как я не хочу выделять и уничтожать мои сборщик каждый раз, когда пользователь делает снимок. Приложение использует сборщик и UIImageView с именем pictureA, чтобы показать изображение choossen из альбома iPhone или снятое с камерой.Правильное использование UIImagePickerController для съемки с камерой или выбора их из библиотеки iphone
На старте я allock мой взгляд выбора контроллера, как это:
imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
[self addSubview:imagePickerController.view];
Когда я беру картину из палитры и поместите его в моей UIImageView:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// newImage is a UIImage do not try to use a UIImageView
UIImage *newImage = [info objectForKey:@"UIImagePickerControllerEditedImage"];
[pictureA removeFromSuperview];
CGRect myImageRect = CGRectMake(30.0f, 38.0f, 125.0f, 125.0f);
pictureA = [[UIImageView alloc] initWithFrame:myImageRect];
pictureA.contentMode= UIViewContentModeScaleAspectFit;
[pictureA setImage:newImage];
pictureA.opaque = YES;
[self addSubview:pictureA];
[newImage release];
[picker dismissModalViewControllerAnimated:YES];
[picker.view setHidden:YES];
}
Когда выбирает изображение из iphone-х библиотека:
- (void) chooseImageFromLibrary {
[imagePickerController.view setHidden:NO];
imagePickerController.allowsEditing = YES;
[imagePickerController viewWillAppear:YES];
[imagePickerController viewDidAppear:YES];
}
Отмена:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
[picker.view setHidden:YES];
}
- (void) takePicture {
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
[(MainScene*)[melonGame actualScene] setCameraDissabled:YES];
return;
}
[imagePickerController.view setHidden:NO];
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePickerController.allowsEditing = YES;
[imagePickerController takePicture];
[imagePickerController viewWillAppear:YES];
[imagePickerController viewDidAppear:YES];
}
Приложение будет работать должным образом, когда я сделаю первый снимок, но когда я попытаюсь сделать другое изображение или выбрать другое изображение из своей библиотеки, он выглядит точно так же, как в последний раз, когда я выбрал картинку (с изображением во всех экран и неактивное меню для выбора и отмены внизу). Мое приложение работает только правильно, если я удаляю контроллер из своего представления и выделяю его каждый раз, когда пользователь делает снимок. Есть ли способ «очистить» или «перезапустить» сборщик, не выпуская его и не удаляя из моего представления?
Я также не уверен, могу ли я указать экземпляр UIImageView (pictureA), где я храню изображение, полученное с помощью imagePickerController, и изменять его каждый раз, когда пользователь делает снимок или выбирает один из альбома, я подозреваю, что это некорректно, чтобы уничтожить его и перераспределить его каждый раз, когда пользователь делает снимок. Любые предложения?, Что я делаю неправильно в отношении управления памятью или использования UIImagePickerController и UIImageView?
спасибо!