弹出旋转

时间:2011-08-09 02:31:25

标签: popover ipad

我创建了一个iPad应用程序,它可以在横向和纵向中正常工作。除非将应用程序旋转到横向,否则弹出框的位置不正确。有没有办法像伪代码一样添加if语句:

if in portrait CGRect
    use size S1 location L1
else if in landscape CGRect
    use size S2 location L2

我的代码:

UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:TweetFeed];
[popover setDelegate:self];
[popover presentPopoverFromRect:CGRectMake(401, 401, 220, 300) inView:self.view  permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
[popover setPopoverContentSize:CGSizeMake(320, 150)];

1 个答案:

答案 0 :(得分:0)

Apple的UIPopoverController文档解决了这个问题:

  

如果用户在弹出窗口可见时旋转设备,则弹出控制器会隐藏弹出窗口,然后在旋转结束时再次显示弹出窗口。弹出控制器会尝试为您适当地定位弹出窗口,但在某些情况下您可能必须再次显示它或完全隐藏它。例如,当从条形按钮项目显示时,弹出控制器自动调整弹出框的位置(并且可能是大小)以考虑条形按钮项目的位置的改变。但是,如果在旋转期间删除了条形按钮项,或者在视图中显示了目标矩形的弹出框,则弹出控制器不会尝试重新定位弹出框。在这些情况下,您必须手动隐藏弹出框或从适当的新位置再次显示弹出框。您可以在用于显示弹出窗口的视图控制器的didRotateFromInterfaceOrientation:方法中执行此操作。