0

在我的应用程序中,我向我的用户展示了一个底部带有 UIDatePicker 的模式,以便他们可以选择一个日期。我的模态必须在纵向和横向工作。此外,我的 DAtePicker 横向必须比纵向小,否则它几乎占据整个屏幕。当屏幕旋转时,我正在使用以下代码。

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
    datePicker.frame = CGRectMake(datePicker.frame.origin.x, myView.frame.size.width - 216.0, datePicker.frame.size.width, 216);
}
else {
    datePicker.frame = CGRectMake(datePicker.frame.origin.x, myView.frame.size.height - 160.0, datePicker.frame.size.width, 160);
}    

它在 iOS6 上运行良好:DatePicker 始终是我想要的位置。但在 iOS5 中,相同的 DatePicker 在纵向模式下位于屏幕中间,而在横向模式下位于屏幕外。

您知道适用于 iOS 5 和 iOS 6 的解决方案吗?

4

1 回答 1

1

iOS 6 中的自动旋转机制发生了变化。从iOS 6.0 发行说明

willRotateToInterfaceOrientation:duration:、willAnimateRotationToInterfaceOrientation:duration: 和 didRotateFromInterfaceOrientation: 方法不再在任何对其自身进行全屏呈现的视图控制器上调用——例如,presentViewController:animated:completion:。您应该确保您的应用程序没有使用这些方法来管理任何子视图的布局。相反,他们应该使用视图控制器的 viewWillLayoutSubviews 方法并使用视图的边界矩形调整布局。

我认为您应该实现 iOS 5 特定的方法以使其工作。

于 2013-01-07T15:17:50.487 回答