3

在 FirstViewController 中有一个按钮。按下后,有一个模态转场转到 SecondViewController。FirstViewController 是纵向的,而 SecondViewController 是横向的。在故事板文件中,我将 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 回答