2011-07-19 11 views
0

私は、テキストフィールド、ボタン、イメージなどいくつかのcontorllersを含むビューコントローラを含むUIScrollViewを持っています。 .. ポートレートモードで表示されているときは、スクロールビューがないようにしたい(その中にはもちろん、スクロールやバウンスなどが無効で、コンテンツサイズはアプリケーションフレームのサイズです)、カスタムビューはちょうど正常に表示されていますが、ランドスケープに切り替えるときは、きちんとしたユーザーインターフェイスを避けるためにスクロールビューを使用できるようにします。xibファイルのビューを超えてビューをスクロールビューに合わせる+オリエンテーション用の別のxib - iO

1)私はへの道を見つけるカント:

は、私はポートレート/風景モードのための特定のXIBファイルを使用していないため、ローカリゼーションの理由により、異なったコードを使用してオブジェクトを配置したい 私は3つの問題、これを行うに遭遇しましたコントローラをロードして回転させるときに別のxibを適用する(私は円滑な移行もしたいが、今は重要ではないが)。

2)私はそれ以上のものを設定する方法が見つからないアプリケーションフレームはxibファイルにあります(スクロールビュー内に直接ボタンなどがありませんが、スクロールビュー内にあるカスタムビュー内にはありません)。したがって、目に見えない部分には何も配置できません表示するためにスクロールする必要がある部分)

3)インターフェイスのために必要なxibファイルを使ってスクロールビューのコンテンツサイズを指定する方法が見つかりませんローカリゼーションのためにできるだけ柔軟にすること。

これらのニーズを実装/解決する方法はありますか?

ありがとうございます!私はあなたがしないだろうと述べた最初の事やって助言する

答えて

0

を私はポートレート/ランドスケープモードのために特定のXIBファイルを使用したくない 場所のオブジェクトが異なっコード

を使用して

は、私は別の方向に異なるXIBを使用しようとしている時間の良い量を費やす必要がありますが、ここで契約です:あなたは風景に回転したときに、あなたヘクタール、あなたがポートレートでのUITextFieldを持っている場合)

1ポートレートモードのテキストが風景などで同じであることを確認してください。あなたはすべてのオブジェクトのためにそれをしなければなりません。

2)あなたがポイント1を見ていないとしても、私は決して2つのxibsソリューションをうまく実装できませんでした。私はあなたがそれを行うことができないと言っているわけではありません、私は私の経験から、私はそれを達成できないと言っています。だから、

、あなたは少なくとも1つのXIBソリューションをやって、私は少しを説明できると思われる場合:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)orientation{ 

} 

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    NSLog(@"My view will rotate"); 
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
     [self viewsPositionPortrait]; 
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)){ 
     [self viewsPositionLandScape]; 
    } 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    NSLog(@"Register should rotate"); 
    return YES; 
} 

-(void)viewsPositionPortrait{ 

//肖像回転 oneOfMyviews.frame = CGRectMakeのためのあなたの「oneOfmyViews」のためのフレームを作成します。 (...、....、...、...); }

-(void)buttonsPositionLandScape{ 

//風景回転 oneOfMyviews.frame = CGRectMake(...、...、...のためのあなたの "oneOfmyViews" のためのフレームを作成し、...);

} 

viewPositionメソッドで、ビューのフレームを定義できます。あなたは何を勝つ?

1)コードを消去してください。

2)美しいトランジション。

3)スクロールビューのコンテンツサイズを簡単に指定します。

あなたのUIViews => CustomViewController => UIScrollViewの回転に問題がありますか。 次のようなことができます:

1)CustomViewController内のUIViewのカスタムビュー(上記のメソッド)で全く同じことを行います。あなたは次の操作を行うことができますCustomViewControllersを持つビューで

2):

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    //(everything that i posted above) 
    [myCustomViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
} 

この方法で、あなたのcustomViewControllerの回転の内側UIViewsを行います。最後のヒント:自動サイズ変更 - サブビューを無効にしてUIViewからすべての自動サイズを取り出します(フレームを個別に定義するため)。

+0

これは非常に役に立ちましたが、私はこの現在のアプリで2つのxibファイルで終了しました。私の問題は、ローカライズするのが非常に難しく、xibをローカライズするのがはるかに簡単だということでした。私はそれが不自然な回転を引き起こすのではないかと心配しましたが、まったく同じように見えます。 – Niv

関連する問題