如何通过编程将屏幕方向切换为横屏?

3
在FirstViewController中有一个按钮。在按下按钮后,会出现模态过渡到SecondViewController。FirstViewController是纵向的,而SecondViewController是横向的。在storyboard文件中,我将SecondVC设置为横向,但iOS模拟器不会自动更改其方向。
有人可以帮我找到自动将SecondViewController从纵向变为横向的代码吗?
SecondVC中的viewDidLoad语句:
-(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;
}

任何帮助都将不胜感激。
1个回答

4
很遗憾,您尝试调用 UIDeviceOrientationIsLandscape(YES); 是一种勇敢的尝试,但这并不能改变方向。该方法用于确认保存方向的变量是否为横向。
例如,如果 toInterfaceOrientation 保存着横向方向,则 UIInterfaceOrientationIsLandscape(toInterfaceOrientation) 将返回 TRUE,否则返回 FALSE。
更改方向的正确技术在 iOS 视图控制器类参考文献的处理视图旋转中有详细阐述。特别地,在 iOS 6 中,您应该:
- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

在iOS 5中,必需使用以下方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
        return YES;
    else
        return NO;
}

顺便提一下,在iOS6之前,有时强制改变方向可能会出现问题。请参见http://stackoverflow.com/questions/11366929/force-rotate-view-controller/11368949#11368949以获取解决方法。 - Rob
1
谢谢!iOS 6的那个可以用。将尝试iOS 5。您知道如何检测用户的设备是否运行iOS 6吗? - DHShah01

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接