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: などです。アプリでこれらのメソッドを使用してサブビューのレイアウトを管理していないことを確認する必要があります。代わりに、View Controller の viewWillLayoutSubviews メソッドを使用し、ビューの境界矩形を使用してレイアウトを調整する必要があります。

それを機能させるには、iOS 5 固有のメソッドを実装する必要があると思います。

于 2013-01-07T15:17:50.487 に答える