如何在iOS中检查iPhone设备版本?

如何在iOS中检查iPhone设备版本?,ios,iphone-5,Ios,Iphone 5,嗨,我想检查iOS中的iPhone设备版本 我的意思是,目前运行的设备是iPhone4或iPhone5 我需要检查一下设备,是不是iPhone 5 因为我的应用程序中有一些问题,需要知道或不知道iPhone5 那么我如何才能添加此代码: if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){ if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)

嗨,我想检查iOS中的iPhone设备版本

我的意思是,目前运行的设备是iPhone4或iPhone5

我需要检查一下设备,是不是iPhone 5

因为我的应用程序中有一些问题,需要知道或不知道iPhone5

那么我如何才能添加此代码:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
                resolution_number = 1;
            }
            if(result.height == 1136) {
                NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

将此宏添加到代码中:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5 )
那你什么时候需要就检查一下

if (IS_IPHONE_5) {
    //Code for iPhone5
}else{
    //Code for earlier version
}
事实上,我找到了一个能起作用的定义

#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double) 568) < DBL_EPSILON)
#定义为"IPHONE"5(晶圆((双)[[UIScreen mainScreen]边界].size.height-(双)568)
根据此问题的答案,您可以确定使用的是哪种型号 据此:

结果可以是其中一个值:iPodtouch、iPhone、iPad、iPhone模拟器、iPad模拟器

对于特定型号,您使用的版本可以通过在
UIDevice.h
类上创建一个类别来确定,如下所示:

UIDevice+Utilities.h

#import <UIKit/UIKit.h>

@interface UIDevice (Utilities)

- (CGFloat)deviceModelVersion;

@end
可能的结果可能是1.0,1.1,…,2.0,2.1,…,3.0,3.1,…,4.0,4.1,…,5.0,5.1

要确定它是否是iPhone5,您需要

deviceModel : "iPhone" 

deviceModelVersion:>=5.0和<6.0

回答得很好。这使得检查范围非常容易,或者具有大于/小于逻辑,类似于使用SYSTEM_VERSION_Better_than(..)可以执行的操作。爱死它了!
#import "UIDevice+Utilities.h"
#include <sys/types.h>
#include <sys/sysctl.h>

@implementation UIDevice (Utilities)

- (CGFloat)deviceModelVersion
{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);

    if ([platform rangeOfString:@"iPhone"].location != NSNotFound)
    {
        return [[[platform stringByReplacingOccurrencesOfString:@"iPhone" withString:@""] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
    }
    else if ([platform rangeOfString:@"iPad"].location != NSNotFound)
    {
        return [[[platform stringByReplacingOccurrencesOfString:@"iPad" withString:@""] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
    }
    else if ([platform rangeOfString:@"iPod"].location != NSNotFound)
    {
        return [[[platform stringByReplacingOccurrencesOfString:@"iPod" withString:@""] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
    }
    else if ([platform rangeOfString:@"i386"].location != NSNotFound || [platform rangeOfString:@"x86_64"].location != NSNotFound)
    {
        return -1.0; //Currently it is not possible (or maybe it is, but I do not know)
                     //which type of simulator device model version your app is running
                     //so I am returning -1.0 device model version for all simulators types
    }

    return 0.0;
}

@end
CGFloat deviceModelVersion = [UIDevice currentDevice].deviceModelVersion;
deviceModel : "iPhone" 
deviceModelVersion : >=5.0 and < 6.0
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_4 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 480.0f)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f)
#define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0f)
#define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreen mainScreen] nativeScale] == 3.0f)
#define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0f)
#define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0f)