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)
您可以通过以下声明检查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)
根据其他答案,如果您计划进行大量检查,可能需要为它创建一个宏:
#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)
| 归档时间: |
|
| 查看次数: |
4881 次 |
| 最近记录: |