应用程序在改变时忽略了我的方向

App is ignoring my orientation when it changed

我有问题。我在这里解决了这个问题 ()

但现在我的应用忽略了我的 orientation。如果我输入了登录数据并加载了新网站,但 orientation 不一样,应用程序将忽略新的 orientation.

dispatch_async(dispatch_get_main_queue(), ^{
    NSNumber *value = [NSNumber alloc];
    NSLog(@"Inside!");
    NSLog(@"Orientation: %@", [self orientNr]);
    if( [[self orientNr] isEqualToNumber:@1] ) value = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
    else if( [[self orientNr] isEqualToNumber:@2] ) value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    else if( [[self orientNr] isEqualToNumber:@3] ) value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
});

该应用程序正在进入此块,因为我在控制台上收到了两个日志。 orientation 是正确的,但不会执行。

为什么应用忽略了我的 orientation?如果我重新启动应用程序,它总是纵向的,尽管它应该是横向的。

编辑:

在我的文件中 plist.info 我配置了支持的界面方向

编辑 2:

我的代码看起来像

[3]

我已经在一个新项目中测试了你的代码并且它有效。 如果您正确配置了 "Supported Interface orientations" 条目,请检查您的 info.plist:


还有另一种强制旋转的方法:

#import <objc/message.h>

然后当你想强制 landscapeLeft 方向使用这个:

 ((void (*)(UIDevice *, SEL, int))objc_msgSend)([UIDevice currentDevice],@selector(setOrientation:),UIInterfaceOrientationLandscapeLeft);