美文网首页
iOS常用宏

iOS常用宏

作者: 下雨之後 | 来源:发表于2016-10-13 10:15 被阅读13次
    // 屏幕宽高
    #define kScreenW    [UIScreen mainScreen].bounds.size.width
    #define kScreenH    [UIScreen mainScreen].bounds.size.height
    // 状态栏高
    #define kStatusH    [UIApplication sharedApplication].statusBarFrame.size.height
    // 导航栏高
    #define kNavigationBarH self.navigationController.navigationBar.frame.size.height
    // tabbar高
    #define kTabBarH    self.tabBarController.tabBar.frame.size.height
    // 获得RGB颜色
    #define kColorRGB(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
    // 获得RGB颜色自定义透明度
    #define kColorRGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]
    // 颜色值宏函数
    #define kColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
    // 颜色值自定义透明度
    #define kColorFromRGBA(rgbValue, a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:a]
    // 判断是否为iPhone4
    #define kIPhone4 ([UIScreen mainScreen].bounds.size.height == 480)
    // 判断是否为iPhone5
    #define kIPhone5 ([UIScreen mainScreen].bounds.size.height == 568)
    // 判断是否为iPhone6
    #define kIPhone6 ([UIScreen mainScreen].bounds.size.height == 667)
    // 判断是否为IPhone6Plus
    #define kIPhone6Plus ([UIScreen mainScreen].bounds.size.height == 736)
    // 判断是哪个版本
    #define kIOS(version) ([[UIDevice currentDevice].systemVersion doubleValue] >= version)
    #define kIOS8 kIOS(8.0)
    #define kIOS9 kIOS(9.0)
    #define kIOS10 kIOS(10.0)
    // appdelegate
    #define kAppDelegate (AppDelegate *)[UIApplication sharedApplication].delegate
    // 自定义Log
    #ifdef DEBUG  // 调试阶段
    #define MYLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
    #else // 发布阶段
    #define MYLog(...)
    #endif
    // 获取系统版本号
    #define kSystemVersion [[[UIDevice currentDevice] systemVersion] floatValue]
    
    单例宏
    // 1. 解决.h文件
    #define singletonInterface(className)          + (instancetype)shared##className;
    
    // 2. 解决.m文件
    // 判断 是否是 ARC
    #if __has_feature(objc_arc)
    #define singletonImplementation(className) \
    static id instance; \
    + (instancetype)allocWithZone:(struct _NSZone *)zone { \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
    instance = [super allocWithZone:zone]; \
    }); \
    return instance; \
    } \
    + (instancetype)shared##className { \
        static dispatch_once_t onceToken; \
        dispatch_once(&onceToken, ^{ \
            instance = [[self alloc] init]; \
        }); \
        return instance; \
    } \
    - (id)copyWithZone:(NSZone *)zone { \
        return instance; \
    }
    #else
    // MRC 部分
    #define singletonImplementation(className) \
    static id instance; \
    + (instancetype)allocWithZone:(struct _NSZone *)zone { \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
    instance = [super allocWithZone:zone]; \
    }); \
    return instance; \
    } \
    + (instancetype)shared##className { \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
    instance = [[self alloc] init]; \
    }); \
    return instance; \
    } \
    - (id)copyWithZone:(NSZone *)zone { \
    return instance; \
    } \
    - (oneway void)release {} \
    - (instancetype)retain {return instance;} \
    - (instancetype)autorelease {return instance;} \
    - (NSUInteger)retainCount {return ULONG_MAX;}
    
    #endif
    
    // 提示,最后一行不要使用 \
    

    相关文章

      网友评论

          本文标题:iOS常用宏

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