2009-07-06 14 views
9

私は、自動回転をサポートするカスタムUINavigationControllerを持っています。私はまた、ナビゲーションコントローラのスタックにスローする私の意見の1つにUIDatePickerを持っています。自動回転は、日付ピッカービューをポートレートで開始してから回転させると機能します。私は、日付ピッカーのビューを横に表示して開始しようとすると、ビューがすべて乱れてしまいます。回転をサポートしておらず、フレームにはピッカーの約半分しか視認できず中心から離れているように見えます。UIDavigationControllerのUIDatePickerをLandscapeにロードする

問題の場合に自動回転をサポートする自分の日付ピッカーを作成しようとしましたが、2つの異なるビューを作成して交換してみましたが、ビューフレームサイズをViewWillAppearメソッド。彼らの誰もまだ私のために働いているようです。

日付選択ツールをナビゲーションコントローラに正しく表示させる方法はありますか?私はおそらく単純なものを見落としています。答えは私の目の前にありますが、私はそれを見つけられません。

答えて

0

さて、私はそれを修正しました。私は、方向が何であったかを確認するためにチェックを行い、日付ピッカーを削除し、コードで日付ピッカーを作り直しました。それはうまくいきましたが、美しいものではありませんでした。

+1

ビューコントローラがペン先からロードされているときにデバイスがすでに横向きになっていると、正しく表示されないことがあります。だからコントロールを再現するための修正が意味をなさないが、私はより良い修正を見つけた、私の答えを参照してください。 – progrmr

0

日付ピッカーを自動回転させて表示します(コントローラのビューで、ウィンドウに直接表示されません)。私は同じ問題に遭遇した

設定self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin

13

。横向きになっているときにビューを読み込むと、UIPickerが正しく表示されません。私はthis page from Llamagraphicsから修正が見つかるまで、回避策を見つけようと数時間を費やしました。あなたがピッカーを持っているビューコントローラののviewDidLoadにこのコードを追加します。

for (UIView* subview in myPicker.subviews) { 
    subview.frame = myPicker.bounds; 
} 

詳細はwebpageをご覧ください。スチュアートありがとう!

+0

これは素晴らしいです! – morais

+0

ありがとう!私はこの問題を解決しようと数時間を費やしました! – Nathan

+0

鮮やかでシンプルなソリューション。おかげさまでこれは本当に悔しかったです! – MystikSpiral

0

ここは私にとってうまくいきました。私は、日付ピッカーを作成すると、私はそれはそれはポートレートモードでだと思います

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait animated: NO]; 
datePicker = [[UIDatePicker alloc] initWithFrame: CGRectZero]; 
[[UIApplication sharedApplication] setStatusBarOrientation: curOrientation animated: NO]; 

だから基本的に、私は向きを変え、日付ピッカーを作成し、それを前にしたものにすぐに戻って向きを変更します。ピッカーの幅(画面の幅)と高さ(216)を別の場所に設定しました。

私は別のページからこの手がかりを得ました。

0

iPadで日付ピッカーを(タイマーモードで)横にリサイズして表示するのと同じ問題がありました。私は、このバグの既知の解決策を得ることができませんでした。そのため、バックグラウンドでサイズ変更され、標準サイズ(320px)で2つの日付ピッカーを配置するという醜いハックでこれを修正しました。フォアグラウンドで...私は知っている、病気のように聞こえるが、それは正しく表示され、それが重要です。とにかくアップルの欠陥だよ)

1

以下のコードは、ポートレートモードと風景モードの両方で動作します。 -

_dateTableViewCell=[self.tableView dequeueReusableCellWithIdentifier:@"DatePickerCell"]; 
if (self.dateTableViewCell==nil) 
{ 
    CGRect rect; 
    self.dateTableViewCell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"DatePickerCell"]; 
    UIDatePicker *datePicker=[[UIDatePicker alloc]initWithFrame:frame]; 
    datePicker.datePickerMode=UIDatePickerModeDateAndTime; 
    datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    CGRect cellRect = self.dateTableViewCell.frame; 
    cellRect.size.height = 216; 
    self.dateTableViewCell.frame = cellRect; 
    CGRect startRect = self.dateTableViewCell.frame; 
    startRect.origin.x = 0.0; 
    datePicker.frame = startRect; 
    [self.dateTableViewCell.contentView addSubview:datePicker]; 
}