ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED

由于app的最新设计字体是ios9之后的平方字体,但app最低支持ios7,so...想在常量配置文件类里统一适配下字体,如下:

//适配字体,ios9及以上系统使用新字体——平方字体
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0

#define kFontSize15 [UIFont fontWithName:@"PingFangSC-Light" size:15.0]

#else

#define kFontSize15 [UIFont systemFontOfSize:15.0]

#endif

在ios8的测试环境下,打印 kFontSize15 为 null,由此可见,上面的宏编译条件判断条件不对,__IPHONE_OS_VERSION_MAX_ALLOWED 针对的是编译器,在不同版本的编译器xcode里,宏__IPHONE_OS_VERSION_MAX_ALLOWED 对应不同的版本,xcode8.3里是这样的:

#define __IPHONE_OS_VERSION_MAX_ALLOWED     __IPHONE_10_3

所以,#if后的判断条件不对,而这样的判断适用于那些第三方服务开发者,他们需兼容高低xcode版本保证最新的api跑在低版本的xcode上不会编译错误。同样

#ifdef __IPHONE_9_0 与上面一样,只保证你的代码在低版本编译的时候不出错。

最后,适配写成这样:

#define SYSTEM_VERSION ([[UIDevice currentDevice] systemVersion])
#define IOS9_OR_LATER (SYSTEM_VERSION.floatValue >= 9.0)
#define kFontSize15 IOS9_OR_LATER ? [UIFont fontWithName:@"PingFangSC-Light" size:15.0]:[UIFont systemFontOfSize:15.0]
时间: 2024-10-11 13:17:03

ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED的相关文章

不同iOS版本做代码适配__IPHONE_OS_VERSION_MAX_ALLOWED 和 __IPHONE_8_0等专业术语

目前开发只想最低版本支持iOS8了,iOS8以前的就不管了,然后现在iOS9和iOS10出来以后,有些新的API,也有些弃用的API,为了兼容,有时候代码里面需要编写判断不同iOS版本,或者只允许指定的iOS版本才可以编译或者执行. 需要用到以下方式,以下方式只针对OC(Swift的写法暂时还不清楚,等需要的时候在补充): 示例: //ios8.0以后用此方法替代willRotateToInterfaceOrientation:duration:这个方法 #if __IPHONE_OS_VERS

iPhone 屏幕适配判断 和 iOS系统版本判断

? 1 2 3 4 5 6 7 8 9 if([[[UIDevicecurrentDevice]systemVersion]floatValue]>=7.0) {     // iOS7.0及以上版本系统适配 } if([UIScreen mainScreen].bounds.size.height == 568) {     // iPhone 屏幕适配 } 可以写成宏定义放在pch文件中, ? 1 2 3 4 // 判断是否为iPhone5 #define iPhone5 ([UIScree

iOS 的 APP 在系统中如何适配不同的屏幕的尺寸

2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS也保持不变. 那时编写iOS的App(应用程序),只支持绝对定位.比如一个按钮(x, y, width, height) = (20, 30, 40, 50),就表示它的宽度是40像素,高度是50像素,放在(20, 30)像素的位置. iPhone 4 2010年,iPhone 4发布,率先采用Retina显示屏,在屏幕的物理尺寸不变的情况下,像素成倍增

iOS系统版本判断方法

在iOS系统中提供了系统版本的判断函数,因此我们可以很容易得到他的当前系统版本: [[UIDevice currentDevice] systemName];//系统名字[[UIDevice currentDevice] systemVersion];//系统版本号[[UIDevice currentDevice] uniqueIdentifier];//[[UIDevice currentDevice] model];  //设备型号 这些方法都能够帮助你快速得到你所想要的关于系统硬件和软件的

m版页面判断安卓与ios系统

安卓系统和ios系统,在做app里面嵌入m版时,有时候会发现,ios上面的那个电池状态栏不占位置,但是安卓的状态栏占位,所以需要区分系统样式单独处理一下! var sUserAgent=navigator.userAgent.toLowerCase(); if(sUserAgent.match(/iphone os 8/i) == "iphone os 8"){      }else if(sUserAgent.match(/android/i) == "android&qu

IOS版本和IPHONE5适配总结

今天花了一天的时间对IOS6和IPHONE5进行适配 [由于自己用的机器是IPHONE5,所以没出什么问题,但是在IPHONE4上就出问题了,都是IOS7版本,还有一台IPOD是IOS6版本,也出问题- 哎,一开始没注意适配,现在得花这精力去修改-  特总结一下,防止以后犯错误,提高工作效率,加油!] 由于习惯问题,都在视图控制器下的viewDidLoad去创建自定义的UI元素,因为IOS版本问题,所以self.view.frame也会不同,如果要实现相同的UI布局,用代码进行测试,发现以下4种

iOS 10 的各种适配问题

一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了.) QQ20160913-8.png-96.9kB 下面我来说说可能会出现的问题: 1.Xcode未设置开发者账号情况下的截图 QQ20160913-0.png-38.5kB 解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可. 2

苹果iOS系统下检查第三方APP是否安装及跳转启动

\ 在iOS系统,使用Url Scheme框架在APP间互相跳转和传递数据,本文只介绍如果检测和跳转. Url Scheme框架 如果你想知道ios设备中是否安装QQ这个软件,我们可以通过一个简单方法判断到: if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) { NSLog(@"install--"); } else { NSLog(@"n

iOS系统框架概述

ios系统矿建概述 iOS操作系统是苹果为公司移动设备提供的操作系统,为方便应用开发者采用了先进的设计模式.采用了经典的MVC设计模式和框架模式.本篇文章我们主要关注iOS系统提供的框架,对MVC设计模式不做过多的描述. 我们通常称呼iOS的框架为Cocoa Touch框架,Cocoa Touch是一个框架的集合,里面包含了众多的子框架.每一个子框架都是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源,共享资源库定义应用程序可以调用的函数和方法.框架