自动旋转时出现 UIPopOverController 问题

Posted

技术标签:

【中文标题】自动旋转时出现 UIPopOverController 问题【英文标题】:UIPopOverController issues while autorotation 【发布时间】:2011-09-22 09:46:29 【问题描述】:

我正在使用 PresentPopOverFromRect: 方法展示一个 UIPopovercontroller。在纵向。当我自动旋转到横向时,UIPopoverController 没有出现在正确的位置。如何在自动旋转设备时定位 UIPopoverController。

【问题讨论】:

显示调用 presentPopoverFromRect 的代码。是否所有视图控制器在 shouldAutorotateToInterfaceOrientation 中都返回 YES? 【参考方案1】:

你需要重写这个函数:

- (void)willAnimateRotationToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

您可以根据当前方向更改 UIPopovercontroller 的尺寸和位置。这个函数很方便,因为它在屏幕被重绘之前和用户界面开始旋转之前被调用。

您应该查看tutorial 以了解您应该如何处理不同 iPad 方向的布局。

【讨论】:

【参考方案2】:

是的,正如tiguero 所说,在您的自定义 UIViewController 中,您可以覆盖该方法:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
    [self.popOverViewController dismissPopoverAnimated:NO];
    CGRect yourNewRect = CGRectMake(0.0, 0.0, 20, 20);
    [self.popOverViewController presentPopoverFromRect:yourNewRect inView:yourView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

你可以试试!

【讨论】:

以上是关于自动旋转时出现 UIPopOverController 问题的主要内容,如果未能解决你的问题,请参考以下文章

MPMoviePlayerViewController 不会自动旋转

旋转内部有动画的对话框时出现问题

SwiftUI navigationBarItems:设备旋转时出现“通过属性检测到循环”错误

尝试在 3D 空间中旋转 2D 形状时出现问题

在 iOS 7 中显示 UIAlertView 时出现旋转问题

iOS 3DAnimations:旋转多个叠加视图时出现问题