3

FirstViewController にはボタンがあります。押された後、SecondViewController に移動するモーダル セグエがあります。FirstViewController は Portrait で、SecondViewController は Landscape です。ストーリーボード ファイルで、SecondVC を Landscape に設定しましたが、iOS シミュレーターは向きを自動的に変更しません。
SecondViewController を Portait から Landscape に自動的に切り替えるコードを見つけるのを手伝ってくれる人はいますか?

viewDidLoadSecondVC のステートメント:

-(void)viewDidAppear:(BOOL)animated  {
    UIDeviceOrientationIsLandscape(YES);
    sleep(2);
    santaImageTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
                                                       target:self
                                                     selector:@selector(santaChangeImage)
                                                     userInfo:NULL
                                                      repeats:YES];
    [santaImageTimer fire];
    image1 = YES;
}

どんな助けでも感謝します。

4

1 に答える 1

4

悲しいことに、あなたの電話UIDeviceOrientationIsLandscape(YES);の試みは勇敢な試みでしたが、実際には向きが変わりません. そのメソッドは、向きを保持する変数が横向きかどうかを確認するために使用されます。

たとえば、が横向きUIInterfaceOrientationIsLandscape(toInterfaceOrientation)の場合は TRUE を返し、そうでない場合は FALSE を返します。toInterfaceOrientation

方向を変更するための正しいテクニックは、UIViewController クラス リファレンスのビューの回転の処理で概説されています。具体的には、iOS 6 では次のことを行う必要があります。

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

iOS 5 では、必要なメソッドは次のとおりです。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
        return YES;
    else
        return NO;
}
于 2012-12-24T03:13:30.627 に答える