2012-03-02 11 views
1

私はmonoTouch-iPadアプリケーションを構築していますが、開始インターフェイスの向きがわかりません。UIViewをプログラム的に正しい向きで表示するためのベストプラクティス

1つの問題は、アプリ起動時にUIDevice.CurrentDevice.Orientationは常にUnknownを返します。あなたのアプリがどの方向を向いているかはどうやって決められますか?私が今見つけたすべてのプロパティは、ポートレートモード、不明、ポートレートモードのフレームサイズを返すだけです(ランドスケープモードであっても)。

UIViewControllerのWillRotateメソッドで2つのUIView(ランドスケープ用、1つはポートレート用)を作成し、これを変更しました。しかし、私のコード:

は、少なくともシミュレータでは、画面を回転させると「ちらつき」が発生します。

ビューをレイアウトするためのベストプラクティスはありますか?そして、私はShouldAutorotateToInterfaceOrientationについて知っていますが、私は多くのオーナーが描いたものをやっているので、これは私のためには機能しません。自動化されたときに壊れてしまいます(see my other question)。

私は今、コードですべてをやっているので、Interface-Builderを使用しないと本当に解決していただきたいと思います。

UPDATE:短期Descripton私が達成したいもの: APPSTART - >正しいFramsize(1024,748または768,1004)を知っている - >私のカスタムビューを追加する正しいフレームサイズで

アップデート2:シンプルで基本的なコードスニペット

public override void ViewDidLoad() 
    { 
     base.ViewDidLoad();    
     Console.WriteLine (this.InterfaceOrientation); 
    } 

肖像画を返します。たとえシミュレータがランドスケープモードであっても。ちょうど私が本当にView.AutoresizingMaskまたはオーバーライドLayoutSubviewsを使用することをお勧めしますInterfaceOrientation

public override void ViewDidLoad() 
{ 
    if (this.InterfaceOrientation == UIInterfaceOrientation.Portrait 
     || this.InterfaceOrientation == UIInterfaceOrientation.PortraitUpsideDown) 
    { 
     // portrait 
    } 
    else 
    { 
     // landsacpe 
    } 
} 

をチェックすることができ、あなたのUIViewControllerは、両方が本当にスムーズにすべてを遷移する内

答えて

2

UPDATE:AutoresizingMask使用

public override void ViewDidLoad() 
{ 
    UIView view = new CustomView(View.Bounds); 
    view.AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth; 
    View.AddSubview(view); 
} 

U PDATE:オーバーライドLayoutSubviews

LayoutSubviewsはサイズが

申し訳ありませんが、 `Portrait`は、シミュレータはランドスケープモードであっても返しthis.InterfaceOrientation`アプリスタート`で
public class CustomView : UIView 
{ 
    public override void LayoutSubviews() 
    { 
     //layout your view with your own logic using the new values of Bounds.Width and Bounds.Height 
    } 
} 
+0

を変更するたびに呼び出されます。 – basti

+0

ownerdrawnビューでAutoresizingMaskを正しく使用するにはどうすればよいですか?そして、LayoutSubviewsをオーバーライドすることのメリットは何ですか? – basti

+0

私はAutoresizing Masksで私が望むものを働かせることはできませんが、LayoutSubviewsでどのように作業すればよいですか?変換を使用するか、全体のビューを置換するか? – basti

関連する問題