UIInterfaceOrientationIsLandscape не срабатывает при повороте представления - PullRequest
2 голосов
/ 23 марта 2011

Я пытаюсь заставить мое приложение работать как в горизонтальной, так и в альбомной ориентации. У меня установлены правильные методы во всех моих контроллерах вида, и этот код срабатывает при повороте симулятора ipad, но всегда вызывает портрет. Пейзаж IF пункт никогда не срабатывает. Что я могу делать не так?

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation {
NSLog(@"******* ROTATING ******");
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {

        NSLog(@"ROTATING View Landscape ******");

    } else    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {

        NSLog(@"ROTATING View Portrait ******");

    }
} 

}

Ответы [ 4 ]

5 голосов
/ 24 марта 2011

Устройство и ориентация интерфейса кажутся разными вещами.Я нашел на сайте Apple способ сделать это с помощью UIDeviceOrientation.С помощью этого теста я получаю правильные триггеры, когда поворачиваю симулятор и мое устройство ipad.

4 голосов
/ 23 марта 2011

Я обнаружил, что наиболее надежным способом определения текущей ориентации устройства iPhone / iPad является использование свойства statusBarOrientation, например:

UIInterfaceOrientation currentOrientation = 
    [UIApplication sharedApplication].statusBarOrientation;

Если вы используете это вместо self.interfaceOrientation, работает ли ваш код?

0 голосов
/ 14 апреля 2015

Вот мой код в swift для i:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {

    let  deviceOrientation:UIDeviceOrientation = UIDevice.currentDevice().orientation

    if (UIDeviceOrientationIsPortrait(deviceOrientation)){
        let value = UIInterfaceOrientation.LandscapeLeft.rawValue
        UIDevice.currentDevice().setValue(value, forKey: "orientation")
    }
}

viewWillTransitionToSize: withTransitionCoordinator: метод выше, чтобы выяснить, поворачиваете ли вы в книжную или альбомную ориентацию.

мой код в основном меняет ориентацию обратно в ландшафтный режим при обнаружении портретного режима.

0 голосов
/ 23 августа 2013

Использование:

+(bool)isLandscape
{
    return
        !UIDeviceOrientationIsPortrait( [UIDevice currentDevice].orientation ) ||
        !UIInterfaceOrientationIsPortrait( [UIDevice currentDevice].orientation );
}
...