标签:run 高度 x86 family cap lang highlight 电量 att
一、目录结构:
获取屏幕宽度与高度
获取设备版本号
获取iPhone名称
获取app版本号
获取电池电量
获取当前系统名称
获取当前系统版本号
获取通用的唯一识别码UUID
获取当前设备IP
获取总内存大小
获取当前可用内存
获取精准电池电量
获取电池当前的状态(共有4种状态)
获取设备当前的语言
二、具体内容
1. 获取屏幕宽度与高度
| 1 2 3 4 5 6 7 8 | /// 屏幕宽度+ (CGFloat)getDeviceScreenWidth {    return[UIScreen mainScreen].bounds.size.width;}/// 屏幕高度+ (CGFloat)getDeviceScreenHeight {    return[UIScreen mainScreen].bounds.size.height;} | 
[UIScreen mainScreen].bounds.size.width用的很普遍,一般来说定义成宏更好,然后根据屏幕宽高进行尺寸的适配。
2. 获取设备版本号
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | + (NSString *)getDeviceName {    // 需要#import "sys/utsname.h"    struct utsname systemInfo;    uname(&systemInfo);    NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];    if([deviceString isEqualToString:@"iPhone3,1"])    return@"iPhone 4";    if([deviceString isEqualToString:@"iPhone3,2"])    return@"iPhone 4";    if([deviceString isEqualToString:@"iPhone3,3"])    return@"iPhone 4";    if([deviceString isEqualToString:@"iPhone4,1"])    return@"iPhone 4S";    if([deviceString isEqualToString:@"iPhone5,1"])    return@"iPhone 5";    if([deviceString isEqualToString:@"iPhone5,2"])    return@"iPhone 5 (GSM+CDMA)";    if([deviceString isEqualToString:@"iPhone5,3"])    return@"iPhone 5c (GSM)";    if([deviceString isEqualToString:@"iPhone5,4"])    return@"iPhone 5c (GSM+CDMA)";    if([deviceString isEqualToString:@"iPhone6,1"])    return@"iPhone 5s (GSM)";    if([deviceString isEqualToString:@"iPhone6,2"])    return@"iPhone 5s (GSM+CDMA)";    if([deviceString isEqualToString:@"iPhone7,1"])    return@"iPhone 6 Plus";    if([deviceString isEqualToString:@"iPhone7,2"])    return@"iPhone 6";    if([deviceString isEqualToString:@"iPhone8,1"])    return@"iPhone 6s";    if([deviceString isEqualToString:@"iPhone8,2"])    return@"iPhone 6s Plus";    if([deviceString isEqualToString:@"iPhone8,4"])    return@"iPhone SE";    if([deviceString isEqualToString:@"iPod1,1"])      return@"iPod Touch 1G";    if([deviceString isEqualToString:@"iPod2,1"])      return@"iPod Touch 2G";    if([deviceString isEqualToString:@"iPod3,1"])      return@"iPod Touch 3G";    if([deviceString isEqualToString:@"iPod4,1"])      return@"iPod Touch 4G";    if([deviceString isEqualToString:@"iPod5,1"])      return@"iPod Touch (5 Gen)";    if([deviceString isEqualToString:@"iPad1,1"])      return@"iPad";    if([deviceString isEqualToString:@"iPad1,2"])      return@"iPad 3G";    if([deviceString isEqualToString:@"iPad2,1"])      return@"iPad 2 (WiFi)";    if([deviceString isEqualToString:@"iPad2,2"])      return@"iPad 2";    if([deviceString isEqualToString:@"iPad2,3"])      return@"iPad 2 (CDMA)";    if([deviceString isEqualToString:@"iPad2,4"])      return@"iPad 2";    if([deviceString isEqualToString:@"iPad2,5"])      return@"iPad Mini (WiFi)";    if([deviceString isEqualToString:@"iPad2,6"])      return@"iPad Mini";    if([deviceString isEqualToString:@"iPad2,7"])      return@"iPad Mini (GSM+CDMA)";    if([deviceString isEqualToString:@"iPad3,1"])      return@"iPad 3 (WiFi)";    if([deviceString isEqualToString:@"iPad3,2"])      return@"iPad 3 (GSM+CDMA)";    if([deviceString isEqualToString:@"iPad3,3"])      return@"iPad 3";    if([deviceString isEqualToString:@"iPad3,4"])      return@"iPad 4 (WiFi)";    if([deviceString isEqualToString:@"iPad3,5"])      return@"iPad 4";    if([deviceString isEqualToString:@"iPad3,6"])      return@"iPad 4 (GSM+CDMA)";    if([deviceString isEqualToString:@"iPad4,1"])      return@"iPad Air (WiFi)";    if([deviceString isEqualToString:@"iPad4,2"])      return@"iPad Air (Cellular)";    if([deviceString isEqualToString:@"iPad4,4"])      return@"iPad Mini 2 (WiFi)";    if([deviceString isEqualToString:@"iPad4,5"])      return@"iPad Mini 2 (Cellular)";    if([deviceString isEqualToString:@"iPad4,6"])      return@"iPad Mini 2";    if([deviceString isEqualToString:@"iPad4,7"])      return@"iPad Mini 3";    if([deviceString isEqualToString:@"iPad4,8"])      return@"iPad Mini 3";    if([deviceString isEqualToString:@"iPad4,9"])      return@"iPad Mini 3";    if([deviceString isEqualToString:@"iPad5,1"])      return@"iPad Mini 4 (WiFi)";    if([deviceString isEqualToString:@"iPad5,2"])      return@"iPad Mini 4 (LTE)";    if([deviceString isEqualToString:@"iPad5,3"])      return@"iPad Air 2";    if([deviceString isEqualToString:@"iPad5,4"])      return@"iPad Air 2";    if([deviceString isEqualToString:@"iPad6,3"])      return@"iPad Pro 9.7";    if([deviceString isEqualToString:@"iPad6,4"])      return@"iPad Pro 9.7";    if([deviceString isEqualToString:@"iPad6,7"])      return@"iPad Pro 12.9";    if([deviceString isEqualToString:@"iPad6,8"])      return@"iPad Pro 12.9";    if([deviceString isEqualToString:@"i386"])         return@"Simulator";    if([deviceString isEqualToString:@"x86_64"])       return@"Simulator";    returndeviceString;} | 
3. 获取iPhone名称
| 1 2 3 4 | /// 获取iPhone名称+ (NSString *)getiPhoneName {    return[UIDevice currentDevice].name;} | 
获取的是你 iPhone 的名字。
4. 获取app版本号
| 1 2 3 4 | /// 获取app版本号+ (NSString *)getAPPVerion {    return[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];} | 
5. 获取电池电量
| 1 2 3 4 | /// 获取电池电量+ (CGFloat)getBatteryLevel {    return[UIDevice currentDevice].batteryLevel;} | 
这个方法获取电池电量不是很精确,下边会介绍一个获取精确电池电量的。
6. 获取当前系统名称
| 1 2 3 4 | /// 当前系统名称+ (NSString *)getSystemName {    return[UIDevice currentDevice].systemName;} | 
7. 获取当前系统版本号
| 1 2 3 4 | /// 当前系统版本号+ (NSString *)getSystemVersion {    return[UIDevice currentDevice].systemVersion;} | 
8. 获取通用的唯一识别码UUID
| 1 2 3 4 | /// 通用唯一识别码UUID+ (NSString *)getUUID {    return[[UIDevice currentDevice] identifierForVendor].UUIDString;} | 
9. 获取当前设备IP
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // 获取当前设备IP+ (NSString *)getDeviceIPAdress {    NSString *address = @"an error occurred when obtaining ip address";    struct ifaddrs *interfaces = NULL;    struct ifaddrs *temp_addr = NULL;    int success = 0;    success = getifaddrs(&interfaces);    if(success == 0) { // 0 表示获取成功        temp_addr = interfaces;        while(temp_addr != NULL) {            if( temp_addr->ifa_addr->sa_family == AF_INET) {                // Check if interface is en0 which is the wifi connection on the iPhone                if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {                    // Get NSString from C String                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];                }            }            temp_addr = temp_addr->ifa_next;        }    }    freeifaddrs(interfaces);    returnaddress;} | 
10. 获取总内存大小
| 1 2 3 4 | /// 获取总内存大小+ (long long)getTotalMemorySize {    return[NSProcessInfo processInfo].physicalMemory;} | 
11. 获取当前可用内存
| 1 2 3 4 5 6 7 8 9 10 11 | /// 获取当前可用内存+ (long long)getAvailableMemorySize {    vm_statistics_data_t vmStats;    mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;    kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);    if(kernReturn != KERN_SUCCESS)    {        returnNSNotFound;    }    return((vm_page_size * vmStats.free_count + vm_page_size * vmStats.inactive_count));} | 
12. 获取精准电池电量
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /// 获取精准电池电量+ (CGFloat)getCurrentBatteryLevel {    UIApplication *app = [UIApplication sharedApplication];    if(app.applicationState == UIApplicationStateActive||app.applicationState==UIApplicationStateInactive) {        Ivar ivar=  class_getInstanceVariable([app class],"_statusBar");        id status  = object_getIvar(app, ivar);        for(id aview in[status subviews]) {            int batteryLevel = 0;            for(id bview in[aview subviews]) {                if([NSStringFromClass([bview class]) caseInsensitiveCompare:@"UIStatusBarBatteryItemView"] == NSOrderedSame&&[[[UIDevice currentDevice] systemVersion] floatValue] >=6.0) {                    Ivar ivar=  class_getInstanceVariable([bview class],"_capacity");                    if(ivar) {                        batteryLevel = ((int (*)(id, Ivar))object_getIvar)(bview, ivar);                        if(batteryLevel > 0 && batteryLevel <= 100) {                            returnbatteryLevel;                        } else{                            return0;                        }                    }                }            }        }    }    return0;} | 
上面这个方法是通过 runtime 获取电池电量控件类私有变量的值,较为精确。
13. 获取电池当前的状态(共有4种状态)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /// 获取电池当前的状态,共有4种状态+ (NSString *) getBatteryState {    UIDevice *device = [UIDevice currentDevice];    if(device.batteryState == UIDeviceBatteryStateUnknown) {        return@"UnKnow";    } elseif(device.batteryState == UIDeviceBatteryStateUnplugged){        return@"Unplugged";    } elseif(device.batteryState == UIDeviceBatteryStateCharging){        return@"Charging";    } elseif(device.batteryState == UIDeviceBatteryStateFull){        return@"Full";    }    returnnil;} | 
14. 获取设备当前的语言
| 1 2 3 4 5 | /// 获取当前语言+ (NSString *)getDeviceLanguage {    NSArray *languageArray = [NSLocale preferredLanguages];    return[languageArray objectAtIndex:0];} | 
标签:run 高度 x86 family cap lang highlight 电量 att
原文地址:http://www.cnblogs.com/lurenq/p/7449194.html