Я не знаю, происходит ли это из-за симуляторов или нового XCode, но я читал, что для этого есть решение. Решение заключается в использовании viewWillLayoutSubviews для создания сцены вместо viewDidLoad.
Итак, я попробовал это, но это не работает. В ландшафтном режиме для iPad всегда возвращаются размеры 768x1024 вместо 1024x768. Ранее, в XCode 5, viewWillLayoutSubviews делал свое дело. Но теперь в XCode 6 я не могу добиться такого поведения. У меня такая проблема на симуляторах 7.1. Симуляторы 8.0 работают нормально и правильно показывают размеры.
Вот мой GameSceneViewController.
@implementation GameViewController
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
skView.showsDrawCount = YES;
skView.showsPhysics = NO;
if(!skView.scene){
// Create and configure the scene.
GameScene * scene = [GameScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
}
- (BOOL)shouldAutorotate{return YES;}
- (NSUInteger)supportedInterfaceOrientations{return UIInterfaceOrientationMaskLandscape;}
- (void)didReceiveMemoryWarning{[super didReceiveMemoryWarning];}
- (BOOL)prefersStatusBarHidden {return YES;}
@end
В файле info.plist для поддерживаемых ориентаций интерфейса есть два элемента: UIInterfaceOrientationLandscapeRight
и UIInterfaceOrientationLandscapeLeft
.
Как я могу получить правильные размеры ширины и высоты в ландшафтном режиме iPad?