Ориентация устройства при запуске - PullRequest
0 голосов
/ 29 сентября 2011

Я прочитал ВСЕ сообщения на эту тему, но все еще не могу понять это.

Я добавляю ВК в окно в applicationDidFinishLaunching.VC содержит UIImageView.

Я хочу установить изображение UIImageView на основе ориентации устройства, но statusBarOrientation, deviceOrientation, interfaceOrientation, все, что я проверяю, возвращает портрет.

Должно быть что-то простое, что мне не хватает.

Ваша помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 29 сентября 2011

Включили ли вы другие ориентации в вашем Info.plist? Для этого в редакторе проекта Xcode 4 есть графический редактор.

0 голосов
/ 30 сентября 2011

Ну, похоже, было несколько проблем.1) Симулятор не всегда генерирует данные ориентации (или изменения ориентации), как ожидалось.Кроме того, 2) непосредственно при запуске устройство может (или не может) отправить информацию statusBarOrientation вовремя, чтобы прочитать это.Итак, я сделал это прямо в методе didFinishLaunching в делегате приложения.

// add the splash IV to the window per the current orientation, then animate it away
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait){
self.theSplashIV.image = [UIImage imageNamed:@"Default-Portrait~ipad.png"];
    self.theSplashIV.frame = CGRectMake(0, 20, 768, 1004);
}
else if([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown){
    self.theSplashIV.image = [UIImage imageNamed:@"Default-Portrait~ipad.png"];
    self.theSplashIV.transform = CGAffineTransformMakeRotation(M_PI);
    self.theSplashIV.frame = CGRectMake(0, 0, 768, 1004);
}
else if([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft){
    self.theSplashIV.image = [UIImage imageNamed:@"Default-Landscape~ipad.png"];
    self.theSplashIV.transform = CGAffineTransformMakeRotation(M_PI / 2);
    self.theSplashIV.frame = CGRectMake(0, 0, 748, 1024);
}
else if([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight){
    self.theSplashIV.image = [UIImage imageNamed:@"Default-Landscape~ipad.png"];
    self.theSplashIV.transform = CGAffineTransformMakeRotation(M_PI / -2);
    self.theSplashIV.frame = CGRectMake(20, 0, 748, 1024);
}
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

А потом я с задержкой анимировал всплеск IV.Не очень элегантно, но работает.

0 голосов
/ 29 сентября 2011

Иногда (не уверен, что это в каждом случае, или просто симулятор), приложение запускается в одной ориентации, а затем сразу поворачивается в другую ориентацию, чтобы соответствовать ориентации устройства.

Я бы предложил реализовать -[UIViewController willRotateToInterfaceOrientation:duration:] для установки вашего изображения, которое должно вызываться сразу после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...