0

NSLog問題は、アプリケーションを最初に実行したときに、アプリケーションの内部にログが表示されないことです。しかし、向きを横向きに変更するまでにテキストが表示されます。ちなみに、アプリケーションのデフォルトのビューは縦です。

viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
}

しかし、私が自分でこれを行うとviewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIInterfaceOrientation toInterfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
    NSTimeInterval duration = 0.0;

    [self willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

滞りなくログを表示します。

問題は、ログを表示する正しい方法を行っているかどうかです。

じぶんのwillAnimateRotationToInterfaceOrientation:toInterfaceOrientation:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    CGFloat height = CGRectGetHeight([[UIScreen mainScreen] bounds]);
    CGFloat width = CGRectGetWidth([[UIScreen mainScreen] bounds]);

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        switch (toInterfaceOrientation) {
            case UIInterfaceOrientationPortrait:
                NSLog(@"iPhone/Portrait");
                break;

            case UIInterfaceOrientationLandscapeLeft:
                NSLog(@"iPhone/Landscape/Left");
                break;

            case UIInterfaceOrientationLandscapeRight:
                NSLog(@"iPhone/Landscape/Right");
                break;

            default:
                break;
        }
    }

    else {
        switch (toInterfaceOrientation) {
            case UIInterfaceOrientationPortrait:
                NSLog(@"iPad/Portrait");
                break;

            case UIInterfaceOrientationPortraitUpsideDown:
                NSLog(@"iPad/Upside Down");
                break;

            case UIInterfaceOrientationLandscapeLeft:
                NSLog(@"iPad/Landscape/Left");
                break;

            case UIInterfaceOrientationLandscapeRight:
                NSLog(@"iPad/Landscape/Right");
                break;

            default:
                break;
        }
    }
}
4

1 に答える 1

0

Scott Roth からの答えはトリックを行いました: popViewControllerAnimated で willAnimateRotationToInterfaceOrientation が呼び出されない

追加したupdateLayoutForNewOrientation:

- (void)updateLayoutForNewOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    CGFloat height = CGRectGetHeight([[UIScreen mainScreen] bounds]);
    CGFloat width = CGRectGetWidth([[UIScreen mainScreen] bounds]);

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
            NSLog(@"Portrait");
        }

        else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
            NSLog(@"Landscape");
        }
    }

    else {
        if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
            NSLog(@"Portrait");
        }

        else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
            NSLog(@"Landscape");
        }
    }
}

に変更willAnimateRotationToInterfaceOrientation:しました

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [self updateLayoutForNewOrientation:toInterfaceOrientation];
}

そして追加さ[self updateLayoutForNewOrientation:[self interfaceOrientation]];れたviewDidLoad:

于 2013-02-27T05:15:09.460 に答える