iPhone 3.5英寸屏幕 - 4英寸屏幕:

She*_*tah 8 iphone objective-c ios

我知道你可以使用if语句选择ipad或iphone UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad.但我想知道你是否可以为iPhone 3.5英寸屏幕和iPhone 4英寸屏幕做同样的事情.我有一款最初设计用于iPhone 4英寸屏幕的游戏,但是自动布局已用于修复两个设备之间的错误,我需要改变的一件事就是当

if (ball.center.y > 600) {
    RandomPosition = arc4random() %248;
    RandomPosition = RandomPosition + 36;
    ball.center = CGPointMake(RandomPosition, -22);
}
Run Code Online (Sandbox Code Playgroud)

因为它最初是在4英寸屏幕上设计的,所以游戏设置为当它大于600像素时将球重置到屏幕顶部,这正好在iphone 4英寸屏幕下方.它仍能正常工作,3.5英寸屏幕底部和位置重置之间只有一点延迟.无论如何我可以设置一个if语句UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom(iphone4???)来设置一个新的ball.center.y> 300或者什么?

Aks*_*her 17

您可以尝试以下代码.在Constant.h中添加此代码

#define IS_IPAD (( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) ? YES : NO)
#define IS_IPHONE_5 (([UIScreen mainScreen].scale == 2.f && [UIScreen mainScreen].bounds.size.height == 568)?YES:NO)
#define IS_RETINA_DISPLAY_DEVICE (([UIScreen mainScreen].scale == 2.f)?YES:NO)
Run Code Online (Sandbox Code Playgroud)

现在要检查设备大小,请在视图中添加以下代码

if (IS_IPAD)
{
       //do stuff for iPad
}
else
{
     if(IS_IPHONE_5)
     {
        //do stuff for 4 inch iPhone screen
     }
     else
     {
        //do stuff for 3.5 inch iPhone screen
     }

}
Run Code Online (Sandbox Code Playgroud)


Ama*_*wal 6

您可以通过以下声明检查3.5英寸和4英寸

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
 if ([[UIScreen mainScreen] bounds].size.height>480.0f)
 {
       NSLog(@"App is running on iPhone with screen 4 inch");
 }
 else
 {
       NSLog(@"App is running on iPhone with screen 3.5 inch");
 }
}
Run Code Online (Sandbox Code Playgroud)


T. *_*sen 5

根据其他答案,如果您计划进行大量检查,可能需要为它创建一个宏:

#define isLargerPhone() (([UIScreen mainScreen].bounds.size.height > 480) && [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
Run Code Online (Sandbox Code Playgroud)

把它放在MyMacros.h你可以导入Prefix.pch文件的(或类似的)中,然后当你需要执行检查时,你可以简单地做:

if ( isLargePhone()){
   // do whatever...
}
Run Code Online (Sandbox Code Playgroud)