Uipopover框架在方向上重置而不隐藏或关闭?

Posted

技术标签:

【中文标题】Uipopover框架在方向上重置而不隐藏或关闭?【英文标题】:Uipopover frame reset on orientation without hiding or dismissing? 【发布时间】:2013-08-27 06:50:37 【问题描述】:

点击视频按钮时出现的弹出框:

[self.popOverController presentPopoverFromRect:[self.view convertRect:buttonFrame toView:self.view.window]
                                                inView:self.view.window
                              permittedArrowDirections:UIPopoverArrowDirectionUp
                                              animated:YES];

videoButton 是弹出弹出框的按钮。现在的问题是,当我旋转我的设备时,弹出框保持在它绘制的位置,而视图的其余部分会根据旋转进行调整。简而言之,当设备在绘制弹出框时旋转(从UIButton 弹出),弹出框不会与UIButton 一起移动。如果我关闭弹出框并再次从按钮中绘制它,它会在按钮上方正确绘制。只有在弹出弹出框旋转时才会出现问题。

关于方向,我想改变框架位置而不是关闭它并再次呈现它。我该怎么做?

【问题讨论】:

在不关闭它并再次呈现它的情况下实现它的唯一方法是为您的按钮设置自动调整大小的掩码。一定会成功的。 【参考方案1】:

你可以再次调用present popover方法来改变方向方法。

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

    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    [self.popOverController presentPopoverFromRect:[self.view convertRect:buttonFrame toView:self.view.window] inView:self.view.window permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

【讨论】:

我不想再次调用它,因为我正在通过此弹出窗口上传视频,当视频需要时间进行压缩时会产生问题,如果我再次创建弹出窗口,则旋转时不会出现问题关闭前一个弹出窗口,如果我关闭,则无法压缩视频。因此,我希望在压缩视频以上传到我的 journalviewController 的方向上使用相同的弹出框 我想我没有理解您的担忧,但是如果您对 Popover 的重新初始化感到困扰,那将不会发生,因为我们只是再次展示它。 在视频压缩时间,如果我们呈现新的popover而不关闭之前的popover,那么它会随机崩溃,因为一次又一次的呈现popover。所以,我只想更改弹出框,而不是呈现和关闭它。 崩溃报告说什么??如果它崩溃了,你应该找到崩溃的原因而不是解决方法。 它崩溃是因为每次在方向改变时都会出现弹出框,当我们一次又一次地改变它时,意味着每次新的弹出框呈现而不关闭以前的弹出框。如果它没有崩溃,那么在视频压缩之后,意味着最后一个呈现弹出框被关闭,并且当我改变方向之后,剩余的弹出框会一个一个出现

以上是关于Uipopover框架在方向上重置而不隐藏或关闭?的主要内容,如果未能解决你的问题,请参考以下文章

方向更改后iOS Maps UIPopover错位

键盘显示时 uipopover 隐藏

UIPopOver 和方向改变

当模态视图可见且 iPad 旋转时,UIPopover 的内容会更改为随机方向

手动设置 UIPopover 箭头方向和位置

iPad键盘分裂时调整UIPopover