Код, чтобы включить альбомную ориентацию программно?


В FirstViewController есть кнопка. После того, как он нажат, есть модальный сегмент, который идет к SecondViewController. FirstViewController-книжный, а SecondViewController-альбомный. В файле раскадровки я установил SecondVC в альбомную ориентацию, но симулятор iOS не будет автоматически менять ее ориентацию.
Кто-нибудь может помочь мне найти код, который автоматически переводит SecondViewController из Portait в Landscape?

viewDidLoad утверждение в SecondVC:

-(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 3

1 ответ:

К сожалению, хотя ваша попытка позвонить UIDeviceOrientationIsLandscape(YES); была доблестной попыткой, это на самом деле не меняет ориентации. Этот метод используется для подтверждения того, является ли переменная, содержащая ориентацию, ландшафтной или нет.

Например, UIInterfaceOrientationIsLandscape(toInterfaceOrientation) вернет TRUE, если toInterfaceOrientation имеет ландшафтную ориентацию, и FALSE, если нет.

Правильный метод изменения ориентации описан в разделеобработка поворотов вида в Справочнике по классу 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;
}