自动旋转时出现 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:设备旋转时出现“通过属性检测到循环”错误