1

これがバグなのか、何か間違っているのかはわかりませんが、デバイスを回転させずにポートレートモードでアプリケーションを起動し、このコードを実行すると

if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
    NSLog(@"Portrait");
} else {
    NSLog(@"Landscape");
}

Landscapeデバイスを回転させてもう一度確認すると正しい値が返されるので、最初に起動したときに返された向きが間違っているようです。これは既知の問題ですか?

編集:

AppDelegateでこのコードを実行してLandscapeも、Portraitモードで起動した場合でもコードが返されます。

if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
    NSLog(@"Portrait");
} else {
    NSLog(@"Landscape");
}
4

3 に答える 3

3

これは、最初の起動時に UIDeviceOrientationUnknown が返されるためです。縦でも横でもありません。ユーザーインターフェイスの向きを検出したい場合は、使用する必要があります

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
    NSLog(@"landscape");
}else{
    NSLog(@"portrait");
}
于 2012-09-20T06:34:01.953 に答える
0

Info.plist > サポートされているインターフェイスの向きで、アイテム「ポートレート (下部のホーム ボタン)」を他のアイテムの上にドラッグします。

于 2012-09-20T05:38:51.030 に答える
-1

これはポートレート モード専用のコードです。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
于 2012-09-20T05:47:28.023 に答える