带有旋转的自定义 UIViewController 过渡

Posted

技术标签:

【中文标题】带有旋转的自定义 UIViewController 过渡【英文标题】:Custom UIViewController transition with rotation 【发布时间】:2011-05-07 19:17:29 【问题描述】:

我有几个 UIViewController 子类。一个显示网格,另一个本质上是网格上图块的“详细视图”。用户点击一个磁贴,详细视图从网格展开以填满屏幕。

我已经设法让视图正确地制作动画,并且可以完美地显示每个视图的内容。当设备旋转时,我的问题就出现了。我已将详细视图显示为 gridview 的子视图,因此当我旋转设备时,网格视图控制器会获取旋转调用,而不是详细视图。

由于这是一个自定义动画,我无法使用标准的弹出和推送视图控制器方法。有没有我必须调用的方法来让这个视图控制器负责处理旋转直到它被解除?

谢谢

【问题讨论】:

【参考方案1】:

如果我理解正确,您旋转网格视图控制器并做出响应,但“详细视图”视图控制器没有正确更改?

如果是这种情况,我可以想到两种可能的解决方案(目前我自己也在使用)。一种解决方案是为通知注册“详细视图”。每当旋转网格视图控制器时,发送通知,“详细视图”应该按照您的需要响应。

另一种解决方案只是在加载“详细视图”时进行简单检查。

if (self.view.bounds.size.height < self.view.bounds.size.width) 
    // apply the code you wish to size it for landscape mode;

当然,这仅在屏幕旋转时“详细视图”当前不可见时才有效,因此发送通知可能是涵盖所有可能性的更好选择。

【讨论】:

【参考方案2】:

您可以在网格视图控制器中设置自定义委托,并在设置后将详细视图控制器注册为该委托。然后在网格视图控制器中实现willRotateToInterfaceOrientation:duration:didRotateFromInterfaceOrientation:,它们首先在委托(详细视图控制器)中调用相应的方法,然后在super 中调用。

【讨论】:

以上是关于带有旋转的自定义 UIViewController 过渡的主要内容,如果未能解决你的问题,请参考以下文章

带有旋转,放大,缩小和移动在android中的自定义textview?

一个 UIViewController 中的自定义单元格 tableview 和默认 UITableView

如何在带有标题视图和 UITableview 的自定义视图中正确设置 UISearchbar 的动画?

如何在iOS swift中实现带有月份、日期和时间的自定义选择器?

从 UIViewController 类中隐藏自定义视图 UIButton

使用自定义转换旋转模态 UIViewController