UIImagePicker Вид камеры не полноэкранный Ipad2 - PullRequest
0 голосов
/ 29 февраля 2012

Проблема выглядит так, будто она как-то сосредоточена вокруг события popover. Ex. Я нажимаю «Камера». Она запускает камеру модально до абсолютной верхней части экрана. Если я нажимаю «Отмена» и повторяю…, все выглядит отлично. Теперь, если я выберу просмотр всплывающей камеры Roll .. при следующем запуске Camera она будет примерно в 20 пикселях от верхней части экрана, а навигационная панель кнопок будет видна только наполовину. (имейте в виду, что стандартный экран имеет стандартную верхнюю панель, но модальная камера занимает полный экран 1024x768).

мой код:

- (IBAction) getPhoto: (id)sender
{
    if ([self.popoverController isPopoverVisible]) {
        [self.popoverController dismissPopoverAnimated:YES];
    }

    else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {

        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
        imagePicker.allowsEditing = YES;
        [self presentModalViewController:imagePicker animated:YES];    
    }
}

- (IBAction) useCameraRoll: (id)sender
{
    if ([self.popoverController isPopoverVisible]) {
        [self.popoverController dismissPopoverAnimated:YES];

    } 
    else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        imagePicker.sourceType =UIImagePickerControllerSourceTypePhotoLibrary;
        self.popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
        popoverController.delegate = self;
        [self.popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    }

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker dismissModalViewControllerAnimated:YES];
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [self.popoverController dismissPopoverAnimated:true];
    UIImage *savedimage = [editingInfo objectForKey:UIImagePickerControllerOriginalImage];
    imageView.image = savedimage;
    UIImageWriteToSavedPhotosAlbum (savedimage, self, nil, nil);
}

1 Ответ

0 голосов
/ 29 февраля 2012

Я полагаю, что когда вы представляете UIImagePickerController в всплывающем окне, всплывающее окно удерживает представление и вызывает некоторые проблемы. Попытка освободить представление из всплывающего окна, либо уничтожив всплывающее окно (и, следовательно, его подпредставления), либо установив для содержимого всплывающего окна значение nil. Ex.

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage (UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [self.popoverController setContentViewController:nil]; 
    [self.popoverController dismissPopoverAnimated:true];
    UIImage *savedimage = [editingInfo objectForKey:UIImagePickerControllerOriginalImage];
    imageView.image = savedimage;
    UIImageWriteToSavedPhotosAlbum (savedimage, self, nil, nil);
}
...