3

我有一个UIActionSheet它有选项从相机或照片库中选择图像。为此,我花了imagePickerViewController。对于相机来说它工作得很好。但不适用于照片库。显示UIImagePickerViewController uiimagepickercontrollersourcetypephotolibrary从UIActionSheet在IPad

-(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太小?有没有其他的方式来显示UIImagePickerViewControlleruiimagepickercontrollersourcetypephotolibrary

+0

根据你的需要更改presentPopoverFromRect尺寸 – Hiren 2012-04-02 07:14:40

回答

3

试试这个例子

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

试试这个:

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

适用于iPhone,不适用于iPad。也对不起,downvote不是我想要做的.. – TwiterZX 2013-01-03 11:11:51

1

我认为你通过在矩形要小一些,而不是整个视图的大小:

CGRect popFrom = CGRectMake (CGPointMake(50,50),10,10); 
[self.popoverController presentPopoverFromRect:popFrom 
                  inView:self.view 
             permittedArrowDirections:UIPopoverArrowDirectionAny 
                 animated:YES]; 
+0

CGRectMake接受4个参数。但是,这有帮助。 – Nitish 2012-04-02 07:30:17

+0

哈哈,深夜的错误,谢谢你指出了......我修好了,很高兴我有一些帮助:) – tams 2012-04-02 13:56:28

1

尝试不设置为UIImagePickerViewController在popover中呈现 - 我认为它是ta肯照顾自动!此外,presentPopoverFromRect:中的CGRect似乎不正确,因为您正在传递view的框架,该框架转换为大致指向屏幕中心的弹出框。您可能想将其设置为出现UIActionSheet的按钮框架!