我知道如果您打算在横向模式下制作spritekit游戏,则需要在视图控制器的viewWillLayoutSubviews方法中设置坐标系,而不是viewDidLoad,以便正确设置坐标系。< / p>
我已经完成了这项工作,在XCode 5中它在模拟器和设备中都能正常显示。但是当我升级到6时,它会在模拟器上显示我的高度和宽度,但仍能在设备上正确显示。
这是我在viewWillLayoutSubviews中的代码:
- (void) viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
SKView * skView = (SKView *)self.view;
if (!skView.scene)
{
//screenHeight and Width still have to be reversed to work on actual device. On simulator however they must not be reversed.
//screenWidth = (int)((CGRect)[[UIScreen mainScreen] bounds]).size.width;
//screenHeight = (int)((CGRect)[[UIScreen mainScreen] bounds]).size.height;
screenHeight = (int)((CGRect)[[UIScreen mainScreen] bounds]).size.width;
screenWidth = (int)((CGRect)[[UIScreen mainScreen] bounds]).size.height;
[self presentNewScene:startScene];
}
}
screenHeight和screenWidth是我用来基于游戏中所有其他坐标的两个核心变量。注释部分将在模拟器上以横向模式正确显示,但在设备上反转。未注释的部分在模拟器上反转显示,但在设备上正确显示。
我假设实际设备的显示是重要的。但令我困扰的是,我无法在模拟器上进行测试,除非我为评论提供了未注释的部分。还有其他人遇到过这种情况吗?我正在采取哪种正确的方式来解决这个问题,还是有一种不同的方式我应该处理它,因为它是XCode 6?
答案 0 :(得分:1)
我认为这是一个iOS问题,原因是:我使用的是模拟器和iOS 8 +的iPad,并且“宽度==宽度和高度==高度”,它们显示确切的事物(图像完美居中)。
但如果我在iOS 7上使用iPhone,则会显示错误的位置。
如果我恢复尺寸,我会得到相反的结果。
因此对于iOS 8. +“width == width”, 对于iOS 7.0(未在7.1上测试)“width == height”