1

横向きモードと縦向きモードでフィールドの異なる位置に Interface Builder を使用できますか? (全然違うので、レイアウトプロパティだけでは使えません)?

または、コードが唯一の方法ですか?

ありがとう

4

4 に答える 4

0

インターフェイス ビルダーで 2 つの UIView を保持できます。ユーザーがデバイスを回転させると、向きに基づいて一方を非表示にし、もう一方を表示できます。次のコード行を試していただけますか?

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if(([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeLeft) || ([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeRight)){
        self.viewLandscape.hidden = NO;
        self.viewPortrait.hidden = YES;
    }
    else {
        self.viewLandscape.hidden = YES;
        self.viewPortrait.hidden = NO;
    }
}
于 2012-12-18T13:47:59.003 に答える
0

ポートレートモードとランドスケープモードで共有されるフィールドが同じ場合、コードを使用すると思います。各モードで異なるオブジェクトを使用する場合は、良い考えではありません。

于 2012-12-18T13:44:49.560 に答える
0

メソッドを使用できますwillRotateToInterfaceOrientation。デバイスの向きを変更すると、..

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
  return YES;
}

-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
 {
    if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) 
    {

      [label setFrame:CGRectMake(20, 52, 728, 617)];

    }
     else

    {

    [label setFrame:CGRectMake(20, 52, 728, 617)];

    }

 }
于 2012-12-18T13:46:23.410 に答える
0

使用できるアプローチを次に示します。最善のアプローチは上にあり
ます 1.ビューを調整するには、自動レイアウトを使用することをお勧めします。
2.自動レイアウト + コード
3.コードのみ。
4. xib に対して 2 つのビューを作成できます。1 つは横向き、もう 1 つは縦向きです。向きに応じて表示と非表示を切り替えます。ただし、これでは、すべての縦向きビューを横向きビュー (テキストなどのプロパティ) と同期する必要があり、その逆も同様です。これは維持するのは簡単ですが、各ビューのプロパティを同期するために頭を悩ませる必要があります。

于 2012-12-18T13:52:40.217 に答える