2010-12-17 22 views
3

私はiPadアプリケーションを持っています。これはUITabBarControllerをルートコントローラとして持っています。いずれかのタブから、私はUIBarButtonItemを含むUIToolBarを持っています。クリックするとモーダルビューが起動します。iPad FormSheet/PageSheetモーダルビュー。回転したときに画面全体が塗りつぶされます。

モーダルビューは、最初に起動されたとき(風景と肖像の両方で)正確なサイズで表示されますが、デバイスを回転させると、モーダルビューが展開されて画面を埋めるようになりますポイント以上。

私はタブバーからモーダルビューを起動していますが、ビューのModalPresentationStyleを表示するように設定しました。

これは、FormSheetに設定したのか、PageSheetに設定しても、ModalViewに影響します。

誰もが同様の動作を経験していますか?もしそうなら、どのように解決しましたか?

感謝

EDIT

は私ももうモーダルスタイルページ/ FormSheetを使用した場合4.2以降モーダルビューの背後にあるビューが出て淡色表示されていないことに気づいた - 私が提示していますビューは間違っているか、これは4.2の標準ですか?

EDIT 2

コード:次のように私のデフォルトで UIViewController私は単純にモーダルビューを提示:

void HandleNewMsgButtonTouch(object sender, EventArgs e) 
{ 
    PresentModalViewController(new ComposeMsgView(), true); 
} 

をモーダルビュー自体では、私はLoadViewオーバーライドで指定しました:

public override void LoadView() 
{ 
    base.LoadView(); 
    ... 
    // initialser code related to the view 
    ... 
    View.AutoresizingMask = UIViewAutoresizing.None; 
    ModalPresentationStyle = UIModalPresentationStyle.PageSheet; 
    ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve; 
} 

私はShouldAutoRotateToInterfaceOrientationをalwにオーバーライドしましたaysも真実を返します。

Formsheet/Pagesheetを使用するかどうかに関わらず、最初に起動したときに両方が適切な幅で表示されます(横向きか縦長かに関わらず - PageSheetが縦長ビューを満たしていることを認識しています)。しかし回転すると、画面(私がFullScreenでModalViewを提示したかのように)。

答えて

4

を助け、これを試してみてください。

void HandleNewMsgButtonTouch(object sender, EventArgs e) 
{ 
UIViewController oController = new ComposeMsgView(); 
oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; PresentModalViewController(oController, true); 
} 

loadViewメソッドは()プロパティを設定するには遅すぎです。

前のコンテンツ: いくつかのコードを投稿してください。ビューは間違いなくぼやけています。 ポートレートモードでは、「PageSheet」がフルスクリーンに変換されるため、間違ったコントローラーでプレゼンテーションスタイルを設定しているとします。

表示スタイルは、表示されているコントローラではなく、モーダルビューで表示するコントローラで設定する必要があります。したがって、表示するコントローラーが "oToShow"で、表示しているコントローラーが "oCurrent"の場合は、 "oToShow"のスタイルを設定する必要があります。 FormSheetに設定してください。FormSheetは常に上に表示され、フルスクリーンにはなりません。

ルネ

+0

コード例の最新の編集をご覧ください - 私の知る限り、ビューを正しく提示しました(私が提示しているビューコントローラでプレゼンテーションスタイルを設定する)。 – Luke

+0

あなたは試してみました: 無効HandleNewMsgButtonTouch(オブジェクト送信者、EventArgsの電子) { のUIViewController Oコントローラ=新しいComposeMsgViewを(); oController.ModalPresentationStyle = UIModalPresentationStyle.PageSheet; PresentModalViewController(oController、true); } – Krumelur

+0

私はそれを試してみましたが、それは魅力的でした。あなたがそれを答えさせたら、私は正しい印を付けます。どうもありがとう! – Luke

0
View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; 
+0

これはうまくいきませんでした - でもよかったです! – Luke

1

あなたは

UIModalPresentationFullScreenのように、異なるスタイルを使用することによってそれを回避することができますをこれはデフォルトのスタイルで、その名の通りのように正確にフルスクリーンを提示するモーダルビューを引き起こしiPhone

UIModalPresentationPageSheet:モダールビューはフルスクリーン高さを占めますが、幅はポートレートモードでは画面の幅に設定されます。これは、デバイスがポートレートモードにあるときに、それでもフルスクリーンを占有することを意味します。ただし、ランドスケープモードでは、基になるマスタービューの一部は引き続き表示されますが、ユーザーが表示されていないマスタービューコントローラーと対話できないため、淡色表示されます。

UIModalPresentationFormSheet:モーダルビューの幅と高さの両方が画面サイズより小さく設定されています。モーダルビューは画面の中央に配置され、マスタービューコントローラのカバーされていない領域は淡色表示され、ユーザーの操作を妨げます。モーダル表示がキーボードを使用する場合、モーダル表示は上方に移動して余裕を持たせる。

UIModalPresentationCurrentContext:モーダルビューは、親マスタービューコントローラと同じスタイルで表示されます。

も、PageFormsheetのデフォルトサイズで常に表示されるため、サイズと位置を調整することを忘れないでください。

希望はこれが アレックスのコメントで述べたように

+0

私は既に、ModalPresentationStyleをFormSheetまたはPageSheetに設定しているということを明確にしておくべきでしょう。最初に起動したときに正しいサイズが表示され、回転したときに画面がいっぱいになります。 – Luke

+0

あなたはmodalviewを作成して提示するために使用しているコードを投稿できますか?私たちがこれを理解できるかどうかを確認してください:) – dalexsoto

+0

最新の編集をご覧ください。私はモーダルビューを表示するために使用した基本コードを追加しました – Luke

関連する問題