Objective c 如何在iPad上更改UIImagePickerController的大小和宽度?

Objective c 如何在iPad上更改UIImagePickerController的大小和宽度?,objective-c,ios,ipad,uiimagepickercontroller,uipopovercontroller,Objective C,Ios,Ipad,Uiimagepickercontroller,Uipopovercontroller,如何在iPad上更改UIImagePickerController的大小和宽度?我可以改变高度,所以它是700,但不能改变宽度,它仍然是320。 我的密码 这个简化的代码对我来说很好: UIImagePickerController* imagePicker=[[UIImagePickerController alloc]init]; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

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


这个简化的代码对我来说很好:

    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)];

我也有同样的问题,我用UINavigationControllerDelegate解决了,因为照片库的UIImagePickerView内容是一个导航控制器。当您选择一行时,它会更改ViewController,并且弹出框的大小也会更改。 因此,在您的willShowViewController委托中,只需输入:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    viewController.contentSizeForViewInPopover = CGSizeMake(800, 800);
}
这将阻止popover的大小调整。

iOS 9及更高版本

另一种方法是使用ContainerViewController并将UImagePickerViewController添加到ContainerViewController。UINavigationControllerDelegate方法中的重写大小有其局限性。不可能在600磅以下的高度下降

    _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];
    }

为什么你要从两个不同的矩形展示两次popover?此外,无需设置imagePicker的框架,因为它是popover的内容视图控制器,其大小将在设置popover contentSize时设置。问题似乎是,只要选择一行,大小就会变回320。就好像imagePicker是为iPhone设计的。@Srikanth,你应该编辑你的问题来添加这个事实-这与你发布的问题不同。嗨。我用你的代码解决了调整大小的问题。解决了的。但现在当我尝试选择图像时,它的标签位置放错了位置。当我在右边的一个图像上单击tab时,下一个图像被录制并选中。请帮忙。。
    _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];
    }