Отображение UIImagePickerViewController для uiimagepickercontrollersourcetypephotolibrary из UIActionSheet в IPad - PullRequest
3 голосов
/ 02 апреля 2012

У меня есть UIActionSheet, в котором есть возможность выбрать изображение из камеры или библиотеки фотографий.Для этого я взял imagePickerViewController .Для камеры это работает абсолютно нормально.Но не для библиотеки фотографий.

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 0) 
    {

        imgController = [[UIImagePickerController alloc] init];
        imgController.allowsEditing = YES;
        imgController.sourceType =  UIImagePickerControllerSourceTypeCamera;   
        imgController.delegate=self;
        [self presentModalViewController:imgController animated:YES];

    } 
    else if (buttonIndex == 1) 
    {

        if ([self.popoverController isPopoverVisible]) {
            [self.popoverController dismissPopoverAnimated:YES];
            [popoverController release];
        } else {
            if ([UIImagePickerController isSourceTypeAvailable:
                 UIImagePickerControllerSourceTypeSavedPhotosAlbum])
            {
                UIImagePickerController *imagePicker =
                [[UIImagePickerController alloc] init];
                imagePicker.delegate = self;
                imagePicker.sourceType =
                UIImagePickerControllerSourceTypePhotoLibrary;
                imagePicker.allowsEditing = NO;

                self.popoverController = [[UIPopoverController alloc]
                                          initWithContentViewController:imagePicker];

                self.popoverController.delegate = self;

                [self.popoverController setPopoverContentSize:CGSizeMake(500, 500)];

                [self.popoverController presentPopoverFromRect:self.view.frame 
                                                          inView:self.view
                                        permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                        animated:YES];


                [imagePicker release];
            }
        }


    } 

}  

При касании опции библиотеки фотографий маленький popupViewController создается в верхней части обзора, но он очень мал.Почему popupViewController слишком мал?Есть ли другой способ отображения UIImagePickerViewController для uiimagepickercontrollersourcetypephotolibrary?

Ответы [ 4 ]

3 голосов
/ 02 апреля 2012

Попробуйте этот пример

   CGRect popoverRect = [self.view convertRect:[self.view frame] 
                                       fromView:[self.view superview]];

    popoverRect.size.width = MIN(popoverRect.size.width, 80) ; 
    popoverRect.origin.x  = popoverRect.origin.x+150; 

    [self.popoverController 
     presentPopoverFromRect:popoverRect 
     inView:self.view 
     permittedArrowDirections:UIPopoverArrowDirectionLeft
     animated:YES];
1 голос
/ 02 апреля 2012

Попробуйте, не устанавливая PopoverContentSize для UIImagePickerViewController, представленного в поповере - я думаю, что об этом позаботятся автоматически!Кроме того, CGRect в presentPopoverFromRect: кажется неправильным, когда вы передаете кадр view, который переводится в поповер, указывающий примерно на центр экрана.Возможно, вы захотите установить это в кадр кнопки, которая представила UIActionSheet!

1 голос
/ 02 апреля 2012

Я думаю, что прямоугольник, который вы проходите, должен быть меньше, а не размер всего представления:

CGRect popFrom = CGRectMake (CGPointMake(50,50),10,10);
[self.popoverController presentPopoverFromRect:popFrom 
                                                          inView:self.view
                                        permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                        animated:YES];
0 голосов
/ 02 апреля 2012

Попробуйте это:

 imagePickerController = [[UIImagePickerController alloc] init];
 imagePickerController.delegate = self;
 imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
 [self presentModalViewController:imagePickerController animated:YES];   
...