自定义UIViewController转换与旋转

时间:2011-05-07 19:17:29

标签: objective-c ios rotation

我有几个UIViewController子类。一个显示网格,另一个显示网格上的图块的“详细视图”。用户点击一个图块,细节视图从网格中展开以填充屏幕。

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

由于这是一个自定义动画,我无法使用标准的pop和push视图控制器方法。是否有一种方法需要调用才能使该视图控制器负责处理旋转直到它被解除?

由于

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

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