我正在使用 Cocos2D 开发一个 iOS 应用程序,我遇到了一个非常奇怪的问题,如下所示。
一开始只有完整版,在iPad2和3上一切正常。现在,我打算创建一个精简版,所以我在Apple网站上注册了一个新证书。使用 lite 证书,Xcode 中生成的 lite build 在 iPad2 上可以正常工作,但在 iPad3 上的显示变成了屏幕的一半。好像是新证书的问题,能帮我解答一下吗?提前致谢。
我正在使用 Cocos2D 开发一个 iOS 应用程序,我遇到了一个非常奇怪的问题,如下所示。
一开始只有完整版,在iPad2和3上一切正常。现在,我打算创建一个精简版,所以我在Apple网站上注册了一个新证书。使用 lite 证书,Xcode 中生成的 lite build 在 iPad2 上可以正常工作,但在 iPad3 上的显示变成了屏幕的一半。好像是新证书的问题,能帮我解答一下吗?提前致谢。
这不是你的证书。您需要允许在 iPad3 上进行缩放,因为它具有视网膜显示屏。
您还需要提供适当大小的新纹理/图像以利用视网膜显示。您可以使用现有的非视网膜艺术品,它可能看起来还不错。但它看起来并不完美。
我没用过cocos2d。您是否也在使用 GlKit,因为 GLkView 希望您允许在屏幕上进行缩放。
例如,如果您只想升级您已经创建的内容,您可以查找设置视口的位置:
int scale = 1; // default is 1 - non-retina. It's adjusted below according to the scale on the device
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] == 2.0) {
scale = [[UIScreen mainScreen] scale];
}
// Set the viewport
glViewport(0, 0, backingWidth*scale, backingHeight*scale);
我不会这样做,或者我不会只这样做,因为它并不能真正正确地解决您的问题。我也很惊讶 cocos2d 还没有内置的方法来处理这个问题。
另外,您呈现的视图是 EAGLView : UIView 使用 CAEAGLLayer 呈现您的 OPENGL 还是 GLKView。如果您从后者更改它,这也将摆脱问题,就像粘贴的代码将摆脱它一样。两者都不是处理它的最佳方式。但这是对您问题的简单回答,也许其他人会关心写一个更详细的回复。
解决问题时可以考虑两件事:
在适当的时候检查您的代码中是否启用了视网膜:
[[CCDirector sharedDirector] enableRetinaDisplay: YES];
希望有帮助!如前所述 - 这绝对不是证书问题!(算你走运 ;) )