Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式识别iphone(3g、4s、5)版本_Iphone_Objective C - Fatal编程技术网

如何以编程方式识别iphone(3g、4s、5)版本

如何以编程方式识别iphone(3g、4s、5)版本,iphone,objective-c,Iphone,Objective C,可能重复: 我想通过编程来识别iphone的型号(3g、4s、5) 那么我如何才能找到它呢?您可以通过以下方式使用UIDevice(硬件)类别 它可以用作: [[UIDevice currentDevice] platformType] // ex: UIDevice4GiPhone [[UIDevice currentDevice] platformString] // ex: @"iPhone 4G" 您可以通过以下条件轻松检测iphone 3gs-4s、iphone 5和iPa

可能重复:

我想通过编程来识别iphone的型号(3g、4s、5)

那么我如何才能找到它呢?

您可以通过以下方式使用UIDevice(硬件)类别

它可以用作:

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone

[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"

您可以通过以下条件轻松检测iphone 3gs-4s、iphone 5和iPad:-

 if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone)
 {
     if ([[UIScreen mainScreen] bounds].size.height == 568)
     {

          //iphone 5
     }
     else
     {
         //iphone 3.5 inch screen iphone 3g,4s 
     }
 }
 else
 {
        //[ipad]
 }
请访问我的答案

您可以使用 您需要的是以下功能:

- (NSString *) platform;
- (NSString *) hwmodel;
- (NSUInteger) platformType;
- (NSString *) platformString;

从UIDevice Hardware.h

HI,请使用以下代码

[UIDevice currentDevice] platformType]   // returns UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // returns @"iPhone 4G"
或者请查一下ratina

+ (BOOL) isRetina
{
    if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
        return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;

    return NO;
}
或者检查ios版本

   + (BOOL) isIOS5
    {
        NSString *os5 = @"5.0";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

        //    currSysVer = @"5.0.1";
        if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedAscending) //lower than 4
        {
            return NO;
        }
        else if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above
        {        
            return YES;
        }
        else // IOS 5
        {
            return YES;
        }

        return NO;
    }

您可以为此使用以下代码:

NSString *device()
{
    struct utsname devInfo;
    uname(&devInfo);

    return [NSString stringWithCString:devInfo.machine encoding:NSUTF8StringEncoding];
}

确保导入
#导入

请使用以下代码

#import <sys/utsname.h>

NSString* machineName()
{
    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}
if([machineName() isEqualToString:@"iPhone1,2"])
{
    deviceType = @"iPhone 3G";
}
else if([machineName() isEqualToString:@"iPhone2,1"])
{
    deviceType = @"iPhone 3GS";
}
else if([machineName() isEqualToString:@"iPhone3,1"] || [machineName() isEqualToString:@"iPhone3,2"] || [machineName() isEqualToString:@"iPhone3,3"])
{
    deviceType = @"iPhone 4";
}
else if([machineName() isEqualToString:@"iPhone4,1"])
{
    deviceType = @"iPhone 4S";
}
else if([machineName() isEqualToString:@"iPhone5,1"])
{
    deviceType = @"iPhone 5";
}
else if([machineName() isEqualToString:@"iPod1,1"])
{
    deviceType = @"iPod Touch 1G";
}
else if([machineName() isEqualToString:@"iPod2,1"] || [machineName() isEqualToString:@"iPod2,2"])
{
    deviceType = @"iPod Touch 2G";
}
else if([machineName() isEqualToString:@"iPod3,1"])
{
    deviceType = @"iPod Touch 3G";
}
else if([machineName() isEqualToString:@"iPod4,1"])
{
    deviceType = @"iPod Touch 4G";
}
else if([machineName() isEqualToString:@"iPod5,1"])
{
    deviceType = @"iPod Touch 5G";
}

您是否尝试过此代码?当我使用此代码时,请给出警告“未找到实例方法+平台字符串”,您需要导入category.h文件。此链接可能会有所帮助。。对于
UIDevice
类,没有
platformString
platformType
方法。我认为这个答案应该更新,因为我们有iphone6和6+。