常用宏

作者: karthrine | 来源:发表于2016-09-13 15:21 被阅读151次

    • 最近忙着写项目,就整理了一下 项目中经常用到的宏
    • 字体根据机型自适应.检查系统版本
    • 机型适配,比例,强弱引用,日志,图片等
    • 如果你还有一些好用的宏,可以互相交流一下
    /*
     *调试日志开关
     */
    #define __APPSTORE___           0
    
    #if __APPSTORE___
    #define NSLog(format, ...)
    #else
    #define NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
    
    #endif
    
    /**
     *  导航控制器高度
     */
    #define NavcHeight 64.0
    /**
     *  tarbar的高度
     */
    #define TarBarHeight  49.0
    
    /**
     *  字体适配宏
     */
    //不同屏幕尺寸字体适配
    
    #define CHINESE_FONT_NAME  @"Heiti SC"
    #define CHINESE_SYSTEM(x) [UIFont fontWithName:CHINESE_FONT_NAME size:x]
    #define kScreenWidthRatio  (iphoneWidth / 414.0)
    #define kScreenHeightRatio (iphoneHeigh / 736.0)
    #define AdaptedWidth(x)  ceilf((x) * kScreenWidthRatio)
    #define AdaptedHeight(x) ceilf((x) * kScreenHeightRatio)
    #define AdaptedFontSize(R)     CHINESE_SYSTEM(AdaptedWidth(R))
    
    /**
     *  弱引用
     */
    #define _WeakSelf     __weak typeof(self) weakSelf = self
    #define WeakObj(o) autoreleasepool{} __weak typeof(o) o##Weak = o;
    
    //NSUserDefaults 实例化
    #define USER_DEFAULT [NSUserDefaults standardUserDefaults]
    
    //G-C-D
    #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
    #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
    
    //获取图片资源
    #define GetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]
    #define GetUlr(url)  [NSURL URLWithString:url]
    #define SetImaged(url)    sd_setImageWithURL:GetUlr(url)
    //读取本地图片 性能比[UIImage imageNamed: 性能强很多]
    //例如 imageView.image =  LOADIMAGE(@"文件名",@"png");
    #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]
    //定义UIImage对象
    #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
    
    //由角度获取弧度 有弧度获取角度
    #define degreesToRadian(x) (M_PI * (x) / 180.0)
    #define radianToDegrees(radian) (radian*180.0)/(M_PI)
    
    //设置手机屏幕,判断机型
    #define iphoneWidth   [UIScreen mainScreen].bounds.size.width
    #define iphoneHeigh   [UIScreen mainScreen].bounds.size.height
    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    #define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)
    
    #define SCREEN_MAX_LENGTH (MAX(iphoneWidth, iphoneHeigh))
    #define SCREEN_MIN_LENGTH (MIN(iphoneWidth, iphoneHeigh))
    
    #define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)
    #define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
    #define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
    #define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)
    
    // 检查系统版本
    #define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
    
    #define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
    
    #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    
    #define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
    
    #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
    
    // 缩放比
    #define kScale iphoneWidth / 375
    
    #define hScale iphoneHeigh / 667
    
    //使用ARC和不使用ARC
    #if __has_feature(objc_arc)
    //compiling with ARC
    #else
    // compiling without ARC
    #endif
    

    相关文章

      网友评论

        本文标题:常用宏

        本文链接:https://www.haomeiwen.com/subject/nfvmettx.html