Вид загрузки iPad и ориентация интерфейса

У меня проблема с моим приложением. У меня есть всплеск с UIImageView "Default-Landscape.png". Код:

- (void)showLoadingWithTitle:(NSString*)loadingTitle {
    if(![self.view viewWithTag:123456]) {
        UIImageView *overlayView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
        //overlayView.backgroundColor = [UIColor lightGrayColor];
        overlayView.tag = 123456;
        overlayView.autoresizingMask = UIViewAutoresizingFlexibleWidth+UIViewAutoresizingFlexibleHeight;
        overlayView.image = [UIImage imageNamed:@"Default-Landscape.png"];
    }
}

Все идет нормально. Проблема возникает, когда я поворачиваю iPad в портретное положение, я думаю, что Portait загружает альбомное изображение, так как оно выглядит не так, как должно, я не знаю, что мне делать... есть идеи?


person Marnerk    schedule 18.04.2012    source источник
comment
Может быть, я ошибаюсь, но ваш код ВСЕГДА загружает альбомный png! Я не вижу никакой проверки ориентации...   -  person il Malvagio Dottor Prosciutto    schedule 18.04.2012
comment
- (BOOL) следует использовать AutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation { return YES; }   -  person Marnerk    schedule 18.04.2012
comment
Посмотрите на последнюю строку [UIImage imageNamed:@"Default-Landscape.png"];. Вы всегда используете пейзажное изображение.   -  person edc1591    schedule 19.04.2012
comment
shouldAutorotateToInterfaceOrientation: это просто обратный вызов, который сообщает iOS, что ваше приложение обрабатывает всю ориентацию, но на самом деле оно не делает за вас никакой работы! вы должны загружать другое изображение в ответ на фактические события ориентации   -  person il Malvagio Dottor Prosciutto    schedule 19.04.2012
comment
У меня есть пейзаж и все еще не работает.   -  person Marnerk    schedule 19.04.2012


Ответы (1)


EDIT: На самом деле еще проще...

  - (void)showLoadingWithTitle:(NSString*)loadingTitle {
    if(![self.view viewWithTag:123456]) {
        UIImageView *overlayView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
        //overlayView.backgroundColor = [UIColor lightGrayColor];
        overlayView.tag = 123456;
        overlayView.autoresizingMask = UIViewAutoresizingFlexibleWidth+UIViewAutoresizingFlexibleHeight;
if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || 
            ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) 
         {
        overlayView.image = [UIImage imageNamed:@"Default-Landscape.png"];
         } else
{
        overlayView.image = [UIImage imageNamed:@"Default-Portrait.png"];

}
    }
}
person Mick MacCallum    schedule 18.04.2012
comment
Для этой цели лучше запросить ориентацию строки состояния, используя что-то вроде: if (UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) - person il Malvagio Dottor Prosciutto; 19.04.2012