У меня есть UIButton
, на который пользователь нажимает, чтобы вызвать UIImagePickerController
.После обработки он возвращает отредактированный UIImage
обработчику делегата, который затем должен заполнить UIButton
новым изображением.
На практике, однако, что происходит, если пользователь выбираетИзображение из их библиотеки, это отлично работает.Но если они делают снимок с помощью камеры и редактируют его, изображение не достигает значения UIButton
.Однако, если я помещаю одно и то же изображение в UIImageView
для тестовых целей, оно обнаруживается.
Более того, в Симуляторе это работает нормально, но не работает на устройстве.Это какая-то проблема с памятью?Вот мой код:
- (IBAction)takePictureButtonTapped
{
UIActionSheet *popupQuery = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Take a Photo", @"Upload from Library", nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[popupQuery showInView:self.view];
[popupQuery release];
}
- (void)actionSheet:(UIActionSheet *)actionSheet
clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"actionSheet:clickedButtonAtIndex:%d", buttonIndex);
if(buttonIndex == 2)
{
// cancel
[imagePickerController release];
}
else
{
imagePickerController = [[[UIImagePickerController alloc] init] autorelease];
imagePickerController.delegate = self;
imagePickerController.allowsEditing = YES;
if (buttonIndex == 0)
{
// Take a photo
// Set up the image picker controller and add it to the view
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else if (buttonIndex == 1)
{
// Upload from Library
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary] == NO)
imagePickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
[self presentModalViewController:imagePickerController animated:YES];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)img
editingInfo:(NSDictionary *)editInfo
{
NSLog(@"imagePickerController::didFinishPickingImage:%@", img);
itemImage = img;
[itemImage retain];
[imageButton setBackgroundImage:itemImage forState:UIControlStateNormal];
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
}
Я пробовал setImage
, setBackgroundImage
, для ВСЕХ состояний, и ни один из них не работает.Тем не менее, если я помещу то же изображение в UIImageView
, это нормально.
Есть идеи?