我目前使用代码来改变我的cocos2d图层菜单背景的图片,以便它适合屏幕的边界......
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 480)
{
//iPhone Classic (3gs)
NSLog(@"Currently running iPhone Classic Code Block----------");
background.scale = 0.5; // May need changing once using retina mode!!!
}
else if(result.height == 568)
{
// iPhone 5
NSLog(@"Currently running iPhone 5 Code Block---------");
background.scale = 0.6; // May need changing once using retina mode!!!
}
}
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 1024)
{
//iPad Classic
NSLog(@"Currently running iPad Classic Code Block--------");
background.scale = 1.2;
}
}
然而,这很有效,我似乎无法区分iPad视网膜或原始...
他们都报告他们的高度为1024,但是当并排跑时,背景明显是另一半的一半。如果我增加background.scale
它将适合那个,但后来两个大的另一个......
我该如何纠正这个?感谢...
答案 0 :(得分:1)
要区分视网膜和非视网膜,您应该使用屏幕的缩放属性。
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) {
// It's retina!
}
由于此属性是在iOS的更高版本中添加的,因此您应该询问该属性是否存在(因此respondsToSelector
)
答案 1 :(得分:1)
以下是检测视网膜和标准显示的简单代码:
if([UIScreen mainScreen].scale>1.0)
{
nslog(@"Retina");
}else
{
nslog(@"NONRetina");
}