0

在我的iPad应用程序中,我正在录制视频(UIImagePickerControllerUIPopoverController中)。无法设置设备轮换上的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

@downvoter如果你的大脑太小而无法理解某些代码,则不需要投票。 – Sufian 2014-06-18 05:46:05

回答

2

我所做的并不是严格意义上的解决方案,但是解决方法。

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

这种方式的应用程序工作顺利,因为我认为用户不会喜欢应用程序在视频录制过程中旋转。