【问题标题】:close UIPopover on rotation with a fadeout animation使用淡出动画在旋转时关闭 UIPopover
【发布时间】:2011-08-17 23:09:12
【问题描述】:

Apple Pages 和 Numbers 应用程序具有弹出框(用于“工具”等),当您旋转设备时会以可爱的淡出效果关闭。我正在尝试重新创建它,但我的弹出框似乎总是立即关闭,因此旋转的动画看起来并不那么流畅。我目前正在使用:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{    
    [toolsPopoverController dismissPopoverAnimated:YES];
}

有谁知道实现 Pages/Numbers 中相同效果的最佳方法?

谢谢!

【问题讨论】:

    标签: objective-c cocoa-touch ipad uikit


    【解决方案1】:

    基于 UIPopoverController 的文档(已添加重点):

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

    看起来,通过在 willAnimateRotationToInterfaceOrientation: 方法中调用 [toolsPopoverControllerdismissPopoverAnimated:YES],您可以在旋转过渡期间隐藏弹出框时使用动画解除。

    如果您改为在 didRotateFromInterfaceOrientation: 方法中调用 dismissPopoverAnimated:YES 方法,则弹出框在新位置的默认行为应在调用关闭动画之前呈现。

    如果此时默认动画仍然不是您想要的,我将创建一个自定义动画块并明确管理淡出或重新调整大小以满足您的需求。

    【讨论】:

      【解决方案2】:

      这对我有用,方法是从 willRotateToInterfaceOrientation:duration: 调用 dismissPopoverAnimated:。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-29
        • 2018-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多