Отображение UIImagePickerViewController для uiimagepickercontrollersourcetypephotolibrary из UIActionSheet в IPad

У меня есть 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?


person Nitish    schedule 02.04.2012    source источник
comment
измените размер presentPopoverFromRect по своему усмотрению   -  person Hiren    schedule 02.04.2012


Ответы (4)


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

   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];
person Hiren    schedule 02.04.2012

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

person tipycalFlow    schedule 02.04.2012

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

CGRect popFrom = CGRectMake (CGPointMake(50,50),10,10);
[self.popoverController presentPopoverFromRect:popFrom 
                                                          inView:self.view
                                        permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                        animated:YES];
person tams    schedule 02.04.2012
comment
Ха-ха, поздняя ночная ошибка, спасибо, что указали на нее ... Я исправил это, рад, что мне немного помогли :) - person tams; 02.04.2012

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

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