• 代码中判断设备iOS系统版本号从而使用不同方法处理来适配的四种方法

    在iOS开发过程中,如果要使用到一些跟特定系统版本特性有关的功能,或者要适配低版本系统的用户,还有一些方法是新版本系统才有的,有一些方法在新版本中已经弃用了,这都需要对不同系统版本的设备进行分别的处理,而这有个前提就是判断系统的版本号。

    判断系统版本号有多种方法,这里都列出来供大家和自己在开发中需要时进行选择使用。

    方法一:直接获取系统版本

    iOS提供了直接获取系统版本号的方法:

    NSString *version = [UIDevice currentDevice].systemVersion;
    if (version.doubleValue >= 9.0) {
        // 针对 9.0 以上的iOS系统进行处理
    } else {
        // 针对 9.0 以下的iOS系统进行处理
    }

    这种方法应该说也是最常见和常用的方法了。

    方法二:通过Foundation框架版本号

    iOS系统升级时Foundation框架也会升级版本号,我们可以通过获取Foundation的版本号来判断对应的iOS版本,这个iOS也提供了很直观的宏来进行判断:

    #if TARGET_OS_IPHONE
    #define NSFoundationVersionNumber_iPhoneOS_2_0  678.24
    #define NSFoundationVersionNumber_iPhoneOS_2_1  678.26
    #define NSFoundationVersionNumber_iPhoneOS_2_2  678.29
    #define NSFoundationVersionNumber_iPhoneOS_3_0  678.47
    #define NSFoundationVersionNumber_iPhoneOS_3_1  678.51
    #define NSFoundationVersionNumber_iPhoneOS_3_2  678.60
    #define NSFoundationVersionNumber_iOS_4_0  751.32
    #define NSFoundationVersionNumber_iOS_4_1  751.37
    #define NSFoundationVersionNumber_iOS_4_2  751.49
    #define NSFoundationVersionNumber_iOS_4_3  751.49
    #define NSFoundationVersionNumber_iOS_5_0  881.00
    #define NSFoundationVersionNumber_iOS_5_1  890.10
    #define NSFoundationVersionNumber_iOS_6_0  992.00
    #define NSFoundationVersionNumber_iOS_6_1  993.00
    #define NSFoundationVersionNumber_iOS_7_0 1047.20
    #define NSFoundationVersionNumber_iOS_7_1 1047.25
    #define NSFoundationVersionNumber_iOS_8_0 1140.11
    #define NSFoundationVersionNumber_iOS_8_1 1141.1
    #define NSFoundationVersionNumber_iOS_8_2 1142.14
    #define NSFoundationVersionNumber_iOS_8_3 1144.17
    #define NSFoundationVersionNumber_iOS_8_4 1144.17
    #define NSFoundationVersionNumber_iOS_8_x_Max 1199
    #define NSFoundationVersionNumber_iOS_9_0 1240.1
    #define NSFoundationVersionNumber_iOS_9_1 1241.14
    #define NSFoundationVersionNumber_iOS_9_2 1242.12
    #define NSFoundationVersionNumber_iOS_9_3 1242.12
    #define NSFoundationVersionNumber_iOS_9_4 1280.25
    #define NSFoundationVersionNumber_iOS_9_x_Max 1299
    #endif

    可以看到,最上面判断了这是iPhone的系统,相应的还有Mac的系统。这些都是NSFoundationVersionNumber这个宏定义的值,我们可以判断它来获取当前设备的系统版本,用法如下:

    if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
        // iOS 9.0 以上系统的处理
    } else {
        // iOS 9.0 以下系统的处理
    }

    方法三:根据特有的类判断

    我们之前说有些类和方法是新版本才有的,要使用的时候要判断一下版本号,但也可以反过来利用这一点,判断有没有这个类从而得知当前的版本号范围。

    比如说 UIAlertController 这个类,是iOS 8之后才出现的,用来取代 UIAlertView 和 UIActionsheet 的,如果当前系统没有这个类,说明是低于iOS 8的,可以这么判断:

    if (NSClassFromString(@"UIAlertController")) { // 存在这个类
        // iOS 8.0 以上系统的处理
    } else {
        // iOS 8.0 以下系统的处理
    }

    方法四:根据特有的方法进行判断

    类似于根据特有的类来判断,有些方法也是某个系统版本之后才出现的,根据有无这个方法即可得知当前版本号的范围,比如 boundingRectWithSize:options:attributes:context: 这个方法是 iOS 7.0 之后才有的,可以这样判断:

    if ([@"" respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) { // 存在这个方法
        // iOS 7.0 以上系统的处理
    } else {
        // iOS 7.0 以下系统的处理
    }

    其实根据类和方法来判断直接就可以决定使用什么类和方法了,也算是跳过了先判断系统然后选择方法这一步,严格来说已经不算是为了判断系统版本了。


    版权所有:http://blog.csdn.net/cloudox_

    展开全文
  • double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。  if(version>=5.0f){  [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: @"navigationB
    double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。

        if(version>=5.0f){
            [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed: @"navigationBar.jpg"] forBarMetrics:UIBarMetricsDefault];
        }
    展开全文
  • JS判断IOS系统版本

    2014-11-18 11:22:06
    var ver = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); ver = parseInt(ver[1], 10); if(ver) { alert("需要IOS7及以上才可安装"); return; }
    var ver = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    	 ver = parseInt(ver[1], 10);
    	if(ver<7)
    	{
    		alert("需要IOS7及以上才可安装");
    		return;
    	}

    展开全文
  • <body><script type="text/javascript"> var str= navigator.userAgent.toLowerCase(); var ver=str.match(/cpu iphone os (.*?) like mac os/); if(!ver){
    <html>
        <meta charset="UTF-8"/>
    <body>
    
    <script type="text/javascript">
        var str= navigator.userAgent.toLowerCase(); 
        var ver=str.match(/cpu iphone os (.*?) like mac os/);
        if(!ver){
            alert("请在Ios系统中打开");
        }else{
            alert("你当前的Ios系统版本为:"+ver[1].replace(/_/g,"."));
        }
    </script>
    
    </body>
    </html>

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

    展开全文
  •  获得Ios系统版本号的函数,比如  4.0  函数定义:  + (float)getIOSVersion;  函数实现: + (float)getIOSVersion { return [[[UIDevice currentDevice] systemVersion] floatValue]; }

                                                             如何获得 ios的系统版本号

           获得Ios系统版本号的函数,比如 

    4.0  


       函数定义:

       

    + (float)getIOSVersion;

       函数实现:

    + (float)getIOSVersion
    {
        return [[[UIDevice currentDevice] systemVersion] floatValue];
    }


    展开全文
  • if #available(iOS 10.0, *) { }else { } 当然了,#available()不仅可以判断iOS,还可以判断if #available(tvOS 1.0, *) { } if #available(watchOS 1.0, *) { }
  • iOS 判断系统版本

    2018-02-12 17:12:18
    由于各种原因,程序需要兼容iOS以前的版本,那么设置一个较低的部署目标和基于特定iOS版本的代码分支,就显得很有必要了。 举个例子: 以前我们判断iOS版本会如下写: if ([[[UIDevice currentDevice].system...
  • Unity 只带获取系统版本号接口:Application.version(),在PC和Android上都可以正常获取版本号,而在IOS上只能获取到Build号,所以需要通过Object获取 // app版本 NSString *ver = [[[NSBundle mainBundle] ...
  • // 获取App版本号 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *appVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];// 系统版本 ...
  • <script type="text/javascript"> var ua = navigator.userAgent.toLowerCase(); if(ua.indexOf("like mac os x") > 0){ var reg = /os [\d._]*/gi ; var verinfo = ua...
  • IOS 判断IOS系统版本

    2013-12-27 18:08:08
    #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentD
  • js判断是否为手机系统是安卓还是苹果,是否为微信浏览器 //系统判断 if(ua.match(/iPhone/i)=="iphone") {//iphone if(ua.match(/MicroMessenger/i)=="micromessenger") { //是微信}else{ ...
  • 获取iOS设备的型号 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 3
  • ios 获取系统版本号

    2013-05-23 16:18:46
    [[UIDevice currentDevice].systemVersion floatValue] >= 6.0
  • 先来两段代码:片段1: #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 //you can use iOS 5 APIs here because the SDK supports them //but the code may still crash if run on an iOS 4 device #else //this c
  • 怎么判断ios 版本

    2012-02-25 08:53:38
    前几天工程项目要用到判断ios版本,最后研究了一下,分享一下:   -(void)getIOSVersion { // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 //此方法和编译器相关 // quanju.iOSVersion=1; // #...
  • 获取iOS系统版本号

    2012-11-25 20:00:44
    UIDevice *de = [UIDevice currentDevice]; NSString *version = [de systemVersion]; float v = [version floatValue]; v即是系统版本号
  • 在预编译阶段判断ios版本  #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0 // This code will compile on versions >= ios5.0 #else // This code will compile on versions #endif
  • 常用的iOS 宏定义,系统版本号,设备型号,自定义NSLog,物理屏幕宽高
  • 要求最低的系统版本 __IPHONE_OS_VERSION_MAX_ALLOWED 允许最高的系统版本 大多数的文档都没有正确的解释这两个宏定义如何使用 首先明确一个概念,Deploy Target是指编译使用的SDK,BaseSDK是...
1 2 3 4 5 ... 20
收藏数 48,036
精华内容 19,214