代码以编程方式将方向转换为横向?

时间:2012-12-24 02:19:32

标签: ios cocoa-touch api uiinterfaceorientation

在FirstViewController中有一个按钮。按下后,有一个模态segue转到SecondViewController。 FirstViewController是Portrait,SecondViewController是Landscape。在storyboard文件中,我将SecondVC设置为Landscape,但iOS模拟器不会自动更改它的方向 有人可以帮我找到自动将SecondViewController从Portait变为Landscape的代码吗?

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 个答案:

答案 0 :(得分:4)

可悲的是,虽然你试图召唤UIDeviceOrientationIsLandscape(YES);是一次勇敢的尝试,但实际上并没有改变方向。该方法用于确认持有方向的变量是否为横向。

例如,UIInterfaceOrientationIsLandscape(toInterfaceOrientation)如果toInterfaceOrientation保持横向,则返回TRUE,否则返回FALSE。

UIViewController类参考中的Handling View Rotations概述了更改方向的正确技巧。具体来说,在iOS 6中,您应该:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

在iOS 5中,必要的方法是:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
        return YES;
    else
        return NO;
}