纯代码适配优化方案之一(内联函数的使用)
解说:什么是内联函数?
内联函数就是为了消除函数调用的时间开销,站在代码的角度看,他有函数的结构,在编译后却不再具备函数的性质。参考
本文是参照着 iPhone6 的UI 设计原稿进行计算比例的适配。将计算适配的时间大大的缩短,大大的节省了代码适配的代码量。
(1)、先在 Appdelegate.h 文件中声明:
@property(nonatomic,assign)CGFloat autoSizeScaleX;
@property(nonatomic,assign)CGFloat autoSizeScaleY;
(2)、在 Appdelegate.m 文件中进行初始化:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.autoSizeScaleX = [UIScreen mainScreen].bounds.size.width/375;
self.autoSizeScaleY = [UIScreen mainScreen].bounds.size.height/667;
return YES;
}
(3)、我们把内联函数写入到一个 viewController 中,通常该 viewController 是叫做一个 XXX_ViewController 的父类,这样的话,你在其它的页面直接调用父类的方法,就很简单了。
//创建内联函数 (在程序编译的时候执行,编译前具有函数的结构,但是在编译后不再有函数的性质,能够很好的消除对函数的调用时间的开销)
CG_INLINE CGRect CGRectMake1(CGFloat x,CGFloat y,CGFloat width,CGFloat height){
//创建 Appdelegate 对象,不会在程序运行的时候,不会产生对象(不存在内存循环引用的问题)
//获取AppDelegate
//#define MyAppDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)
CGFloat scale_x = MyAppDelegate.autoSizeScaleX;
CGFloat scale_y = MyAppDelegate.autoSizeScaleY;
//计算返回
return CGRectMake(x*scale_x, y * scale_y, width * scale_x, height * scale_y);
}