3

如何更改UIImagePickerController的尺寸宽度iPad?我可以改变高度,所以它是700,但不能改变宽度,它仍然是320. 我的代码。如何在iPad上更改UIImagePickerController的大小宽度?

UIImagePickerController* imagePicker=[[UIImagePickerController alloc]init]; 
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePicker.delegate=self; 
CGRect myRect = CGRectMake(imagePicker.view.frame.origin.x, imagePicker.view.frame.origin.y, 720, 700); 
imagePicker.view.frame = myRect; 
self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
myRect = CGRectMake(100, 880, 900, 900); 
CGRect re2 = CGRectMake(0,0,800,800); 
[self.popover setPopoverContentSize:re2.size]; 
[self.popover presentPopoverFromRect:[self.view bounds] inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
[self.popover presentPopoverFromRect:myRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];  
[self.popover setPopoverContentSize:re2.size]; 
+0

为什么要从两个不同的rects提交两次popover?另外,不需要设置imagePicker的框架,因为它是弹出窗口的内容视图控制器,并且在设置弹出窗口contentSize时将设置其大小。 – rdelmar

回答

3

这种简化的代码工作对我罚款:

UIImagePickerController* imagePicker=[[UIImagePickerController alloc]init]; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
    [self.popover presentPopoverFromRect:CGRectMake(100, 880, 1, 1) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    [self.popover setPopoverContentSize:CGSizeMake(700, 700)]; 
+0

问题似乎是,只要选择一行,大小就会变回320.这就好像imagePicker已经为iPhone设计。 – Srikanth

+0

@Srikanth,你应该编辑你的问题来增加这个事实 - 这与你发布的问题不同。 – rdelmar

10

我有你同样的问题,我解决了与UINavigationControllerDelegate,因为UIImagePickerView内容的PhotoLibrary是navigatorController。当你选择一行时,它会改变ViewController,弹窗的大小也会改变。 所以,在你willShowViewController代表只是把:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    viewController.contentSizeForViewInPopover = CGSizeMake(800, 800); 
} 

这将防止酥料饼的大小调整。

+0

非常感谢。 –

+0

嗨。我使用你的代码来解决调整大小的问题。解决了。但是现在,当我尝试选择图像时,它的标签位置错位。当我在其右侧的一个图像上标签时,下一张图像被录制和选择。请帮忙.. – Durgaprasad

0

iOS 9及以上版本。

另一种方法是使用ContainerViewController并将UImagePickerViewController添加到ContainerViewController。在UINavigationControllerDelegate方法中覆盖大小有其限制。 (不可能在600pt以下的高度下降)

_imagePicker      = [[UIImagePickerController alloc] init]; 
    _imagePicker.delegate    = self; 
    _imagePicker.sourceType   = UIImagePickerControllerSourceTypeCamera; 
    _imagePicker.preferredContentSize = CGSizeMake(320, 480); 

    UIViewController *containerViewController = [[UIViewController alloc] init]; 
    containerViewController.preferredContentSize = _imagePicker.preferredContentSize; 
    [containerViewController addChildViewController:_imagePicker]; 
    [containerViewController.view addSubview:_imagePicker.view]; 
    [_imagePicker didMoveToParentViewController:containerViewController]; 

    if (!_imagePickerPopover) { 
     //customize PopoverController, use your own 
     _imagePickerPopover = [[PopoverController alloc] init:cnt]; 
    } 
相关问题