iOS 4.2 Как отобразить другое изображение при изменении ориентации? - PullRequest
1 голос
/ 30 июля 2011

iOS4.2 Когда мое приложение запускается, я отображаю изображение, которое видно, пока не загрузится мое веб-представление.После загрузки веб-изображения это изображение становится скрытым.Как мне сделать следующее: Если портрет, то отобразить DefaultPortrait.png, если Пейзаж дисплей DefaultLandscape.png?

если устройство в вертикальной ориентации, отображается

self.view.backgroundColor = [UIColor blackColor];
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"Default2.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];

ИЛИ

, если устройство в горизонтальной ориентации, отображается

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 480f, 320.0f);
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"Default2L.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];

Ответы [ 3 ]

3 голосов
/ 30 июля 2011

Вы можете использовать didRotateFromInterfaceOrientation для реализации своего кода. Теперь, когда ориентация будет изменена с портретной, используйте код, который вы хотите отобразить, когда устройство находится в альбомном режиме, и наоборот. Надеюсь, это решит вашу проблему.

    - (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
    if ((fromInterfaceOrientation == UIInterfaceOrientationPortrait) || (fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)) {

        // your method for landscape..

    }
    if ((fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) || (fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)) {

        //your method for portrait
    }
}
0 голосов
/ 30 июля 2011

Если вы хотите отобразить одно и то же изображение в обоих режимах, сначала объявите переменную логического типа в файле делегата приложения и определите в файле делегата приложения .m.Если в портретном режиме переменная true, а при альбомной - false.Сейчас в

_(void)viewDidLoad{
              if (Boolean variable == TRUE ){
                                         //display portrait mode }
                 else 
                      //display landscape mode

}

0 голосов
/ 30 июля 2011

Вы можете использовать это в начале, чтобы получить текущую ориентацию:

   UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation] 

и затем используйте это:

 if ((currentOrientation == UIInterfaceOrientationPortrait) || (currentOrientation == UIInterfaceOrientationPortraitUpsideDown)) {
self.view.backgroundColor = [UIColor blackColor];
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"Default2.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];

    }
   else if ((currentOrientation == UIInterfaceOrientationLandscapeRight) || (currentOrientation == UIInterfaceOrientationLandscapeLeft)) {
self.view.backgroundColor = [UIColor blackColor];
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 480.0f);
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"Default2.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];
}
...