ios - 我希望我的应用程序能够识别 iPhone 型号,因为我没有使用自动布局

标签 ios iphone

我按以下方式编写代码

#define isiPhone6 ( [[UIScreen mainScreen] bounds].size.height == 667)?TRUE:FALSE
#define isiPhone5  ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE

UIStoryboard *mainStoryboard = nil;


printf("\nDetected Resolution : %d x %d\n\n",(int)[[UIScreen mainScreen] nativeBounds].size.width,(int)[[UIScreen mainScreen] nativeBounds].size.height);


if (isiPhone5)
{
    mainStoryboard = [UIStoryboard storyboardWithName:@"MainIphone5" bundle:nil];;
    // this is iphone 4 inch
}

else  if (isiPhone6)
{
    mainStoryboard = [UIStoryboard storyboardWithName:@"MainIphone6" bundle:nil];;
    // this is iphone 4 inch
}

else
{
    mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    //Iphone  3.5 inch
}

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [mainStoryboard instantiateInitialViewController];
[self.window makeKeyAndVisible];

但是 的循环iPhone6 不工作,循环工作 3.5 和 4 英寸。这里的循环是跳到 iPhone5、iPhone4 但不是 6。

最佳答案

看到这个类

https://github.com/froztbytes/UIDeviceHardware

或创建此类

 #import <Foundation/Foundation.h>

 @interface UIDeviceHardware : NSObject
     + (NSString *) platform;
     + (NSString *) platformString;
 @end



    #import "UIDeviceHardware.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>

    @implementation UIDeviceHardware

    + (NSString *) platform{
        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);
        return platform;
    }

    + (NSString *) platformString{
        NSString *platform = [self platform];
        if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
        if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
        if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
        if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4 (GSM)";
        if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 (CDMA)";
        if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
        if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
        if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (CDMA)";
        if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5C";
        if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5C";
        if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5S";
        if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5S";
        if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
        if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";

        if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
        if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
        if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
        if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
        if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";

        if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
        if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
        if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
        if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
        if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
        if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini (GSM)";
        if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (CDMA)";
        if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
        if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (CDMA)";
        if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (GSM)";
        if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
        if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4 (GSM)";
        if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (CDMA)";

        if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
        if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (GSM)";
        if ([platform isEqualToString:@"iPad4,3"])      return @"iPad Air (CDMA)";
        if ([platform isEqualToString:@"iPad5,3"])      return @"iPad Air 2 (WiFi)";
        if ([platform isEqualToString:@"iPad5,4"])      return @"iPad Air 2 (CDMA)";

        if ([platform isEqualToString:@"iPad4,4"])      return @"iPad Mini Retina (WiFi)";
        if ([platform isEqualToString:@"iPad4,5"])      return @"iPad Mini Retina (CDMA)";
        if ([platform isEqualToString:@"iPad4,7"])      return @"iPad Mini 3 (WiFi)";
        if ([platform isEqualToString:@"iPad4,8"])      return @"iPad Mini 3 (CDMA)";
        if ([platform isEqualToString:@"iPad4,9"])      return @"iPad Mini 3 (CDMA)";


        if ([platform isEqualToString:@"i386"])         return [UIDevice currentDevice].model;
        if ([platform isEqualToString:@"x86_64"])       return [UIDevice currentDevice].model;

        return platform;
    }

    @end

关于ios - 我希望我的应用程序能够识别 iPhone 型号,因为我没有使用自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883908/

相关文章:

iphone - 我们应该使用哪些 iOS 设备来进行合理的功能和性能测试?

ios - 在 Swift 3 iPhone 应用程序中使用套接字

iphone - iPhone 应用程序可以在后台运行多长时间?

Objective-c 问题通过循环遍历数组来求和

ios - 多个简单UIView的内存管理

ios - NSURLConnection 下载大型 zip 文件

ios - 推送到 UINavigationController 时 UIViewControllers 出现问题 - iOS 7.1

android - 在多个平台上使用 Localytics - 单独的应用程序 key ?

IOS:如何在 Swift 中增加 AVAudioPlayer 的低音和高音?

ios - iOS中10位电话号码的正则表达式