UIPopOverController 旋转时丢失内容

Posted

技术标签:

【中文标题】UIPopOverController 旋转时丢失内容【英文标题】:UIPopOverController losing content when rotating 【发布时间】:2011-01-20 14:28:31 【问题描述】:

我的 UIPopOverController 有时会丢失其内容,在旋转时(不可重现),或者如果我从横向的 tableview 打开一些内容,将设备旋转到纵向,然后以纵向打开相同的内容。

Popovercontroller 已显示,但看不到任何内容,即它是黑色的......有没有人偶然发现这个或类似的东西?

【问题讨论】:

目前还没有,但是您可以在旋转和显示后转储视图控制器的视图框架吗?也许有一些限制/没有正确设置。 【参考方案1】:

在发生旋转后使用 UIPopoverController 时我遇到了类似的问题(UIPopoverController 的大小发生了奇怪的变化,它重新定位到屏幕中的奇怪位置等)。

对我有用的技巧是在应用程序中重载 UIViewController 的 didRotateFromOrientation:(UIInterfaceOrientation) 方法。因此,在显示 UIPopoverController 时重载应用的 UIViewController 类中的方法,并从那里再次调用 UIPopoverController 的 presentPopoverFromRect: 方法:

-(void) didRotateFromOrientation:(UIInterfaceOrientation)uiOrientation 
    if (popoverController.popoverVisible) 
        // Define rect to be the UI component's rect where you want to tie the popoverController
        CGRect rect = CGRectMake(...);
        // This method will reposition the popover correctly
        [popoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO];  
    

请注意,如果您使用 UIPopoverController 的 presentPopoverFromBarButtonItem: 方法将 UIPopoverController 绑定到 UIBarButtonItem,则系统应在旋转后自动处理正确定位弹出框。

【讨论】:

很好的解决方法...为了获得更好的结果,请在再次显示 popoverController 之前设置 popoverContentSize 和 contentViewController!!

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

在设备旋转时重新定位 UIPopoverController

旋转时,从 UITableViewCell 显示的 UIPopoverController 放置不正确

当 iPad 旋转时,UIPopovercontroller 不会保持在其位置

可以手动旋转 UIPopoverController 的视图吗?

在 UIPopoverController 中丢失手势识别器

实现 UISplitViewController 主从应用程序 - UIPopOverController 在旋转之前为空。