在我的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)];
答案 0 :(得分:2)
我所做的并非严格意义上的解决方案,而是一种解决方法。
我在提交UIPopoverController
时禁用了方向更改通知,并在我解除它时启用了它们,using help from this answer。
通过这种方式,应用程序可以顺利运行,因为我认为用户不会喜欢在视频录制过程中旋转应用程序。