1

1 つの ViewController に 2 つの UIToolbar があります。

回転時に位置を変更する必要があります。

コンセントを2つ追加

@property (nonatomic, retain) IBOutlet UIToolbar *toolbar1;
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar2;

それらを IB に接続します。viewcontroller.mi でこのコードを使用します。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
        toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        toolbar1.frame = CGRectMake(0, 0, 1024, 44);
        toolbar2.frame = CGRectMake(0, 374, 1024, 44);
    }
    else
    {
        toolbar1.frame = CGRectMake(0, 0, 768, 44);
        toolbar2.frame = CGRectMake(0, 502, 768, 44);
    }
}

問題は - 何も変わらない!

どうすれば修正できますか?

PS webviewsでは動作します

ここに画像の説明を入力

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

2

ViewController.xib で Autolayout のチェックを外してください。そうすれば、このコードは常に機能します。高さを変更して別の方法で表示し、すべての設定をコメントアウトします。

- (void)viewDidLayoutSubviews{
    if  (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
        toolbar1.frame = CGRectMake(0, 0, 1024, 20);
        toolbar2.frame = CGRectMake(0, 374, 1024, 20);
    } else {
        toolbar1.frame = CGRectMake(0, 0, 768, 44);
        toolbar2.frame = CGRectMake(0, 502, 768, 44);
    }
}
于 2013-06-12T23:41:44.140 に答える
1

私はあなたのコードを見て、何が問題なのかを知っています。Nib の要素をコードの IBOutlets に接続するのを忘れました。

ここに画像の説明を入力

アウトレットを接続すると、例が機能します。私はそれをテストしました。

お役に立てれば!

ここに画像の説明を入力

于 2013-06-13T00:09:48.767 に答える