无法在设备轮换更改时设置UIPopoverController的大小

时间:2013-02-28 05:05:30

标签: size orientation uiimagepickercontroller uipopovercontroller

在我的iPad应用中,我正在录制视频(UIImagePickerController中的UIPopoverController)。

问题在于,当我更改设备的方向时,UIPopoverController的大小减小到320x480(对于肖像)和480x320(对于横向)。令人惊讶的是,完全相同的尺寸(600x880)在我创建它时工​​作得很好,但是当我旋转它时却没有。

以下是我的初始化方式:

self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
popover.delegate = self;
if ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortrait || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationPortraitUpsideDown) {
    [self.popover presentPopoverFromRect:CGRectMake(109, 590, 550,500) inView:self.view permittedArrowDirections:0 animated:YES];//recordProtocolBtn.frame
    [self.popover setPopoverContentSize:CGSizeMake(600, 880)];
}
else {
    [self.popover presentPopoverFromRect:CGRectMake(750, 110, 550, 600) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
    [self.popover setPopoverContentSize:CGSizeMake(600, 600)];
}

旋转到肖像:

[self.popover dismissPopoverAnimated:NO];
[self.popover presentPopoverFromRect:CGRectMake(109, 590, 550,500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
[self.popover setPopoverContentSize:CGSizeMake(600, 880)];

旋转到风景:

[self.popover dismissPopoverAnimated:NO];
[self.popover presentPopoverFromRect:CGRectMake(750, 110, 550, 600) inView:self.view permittedArrowDirections:0 animated:YES];
[self.popover setPopoverContentSize:CGSizeMake(600, 600)];

1 个答案:

答案 0 :(得分:2)

我所做的并非严格意义上的解决方案,而是一种解决方法。

我在提交UIPopoverController时禁用了方向更改通知,并在我解除它时启用了它们,using help from this answer

通过这种方式,应用程序可以顺利运行,因为我认为用户不会喜欢在视频录制过程中旋转应用程序。