美文网首页
iOS宏定义

iOS宏定义

作者: 涐罙擁那嗰懂涐 | 来源:发表于2016-09-13 14:47 被阅读0次

    1 weakself和strongself

    #ifndef weakify

    #if DEBUG

    #ifhas_feature(objc_arc)

    #define weakify(object) autoreleasepool{} __weak __typeof(object) weak####object = object;

    #else

    #define weakify(object) autoreleasepool{} __block __typeof_(object) block####object = object;

    #endif

    #else

    #if __has_feature(objc_arc)

    #define weakify(object) try{}@finally{} {} __weak __typeof_(object) weak####object = object;

    #else

    #define weakify(object) try{}@finally{} {} __block __typeof_(object) block##_##object = object;

    #endif

    #endif

    #endif

    #ifndef strongify

    #if DEBUG

    #ifhas_feature(objc_arc)

    #define strongify(object) autoreleasepool{} __typeof(object) object = weak####object;

    #else

    #define strongify(object) autoreleasepool{} __typeof_(object) object = block####object;

    #endif

    #else

    #if __has_feature(objc_arc)

    #define strongify(object) try{}@finally{} __typeof_(object) object = weak####object;

    #else

    #define strongify(object) try{}@finally{} __typeof_(object) object = block##_##object;

    #endif

    #endif

    #endif

    2 获取设备大小

    #define NavigationBar_HEIGHT 44

    3 获取屏幕 宽度、高度

    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)

    #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

    4 打印日志

    #ifdef DEBUG

    define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt),PRETTY_FUNCTION,LINE, ##VA_ARGS);

    #else

    define DLog(...)

    #endif

    5 重写NSLog,Debug模式下打印日志和当前行数

    #if DEBUG

    #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n",FUNCTION,LINE, [NSString stringWithFormat:FORMAT, ##VA_ARGS] UTF8String]);

    #else

    #define NSLog(FORMAT, ...) nil

    #endif

    6 是否是ipad

    #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

    7 获取系统版本

    #define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]

    #define CurrentSystemVersion [UIDevice currentDevice] systemVersion]

    8 获取当前系统的语言

    #define CurrentLanguage ([NSLocale preferredLanguages] objectAtIndex:0])

    9 判断设备的操做系统是不是ios7

    #define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]

    10 判断是真机还是模拟器

    #if TARGET_OS_IPHONE

    //iPhone Device

    #endif

    #if TARGET_IPHONE_SIMULATOR

    //iPhone Simulator

    #endif

    11 颜色值转换

    // rgb颜色转换(16进制->10进制)

    #define UIColorFromRGB(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]

    //带有RGBA的颜色设置

    #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]

    // 获取RGB颜色

    #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]

    #define RGB(r,g,b) RGBA(r,g,b,1.0f)

    //背景色

    #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]

    //清除背景色

    #define CLEARCOLOR [UIColor clearColor]

    12 由角度获取弧度 有弧度获取角度

    #define degreesToRadian(x) (M_PI * (x) / 180.0)

    #define radianToDegrees(radian) (radian*180.0)/(M_PI)

    13 单例

    //单例化一个类

    #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

    \

    static classname *shared##classname = nil; \

    \

    (classname *)shared##classname \ { \@synchronized(self) \ { \ if (shared##classname == nil) \ { \ shared##classname = [self alloc] init]; \ } \ } \ \ return shared##classname; \ } \ \

    (id)allocWithZone:(NSZone *)zone \ { \@synchronized(self) \ { \ if (shared##classname == nil) \ { \ shared##classname = [super allocWithZone:zone]; \ return shared##classname; \ } \ } \ \ return nil; \ } \ \

    (id)copyWithZone:(NSZone *)zone \ { \ return self; \ } 14 沙盒目录文件 //获取temp #define kPathTemp NSTemporaryDirectory() //获取沙盒 Document #define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] //获取沙盒 Cache #define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] 15 设置 view 圆角和边框 #define LRViewBorderRadius(View, Radius, Width, Color)\

    \

    [View.layer setCornerRadius:(Radius)];\

    [View.layer setMasksToBounds:YES];\

    [View.layer setBorderWidth:(Width)];\

    [View.layer setBorderColor:[Color CGColor]]

    16 .判断当前的iPhone设备/系统版本

    //判断是否为iPhone

    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

    //判断是否为iPad

    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

    //判断是否为ipod

    #define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])

    // 判断是否为 iPhone 5SE

    #define iPhone5SE [[UIScreen mainScreen] bounds].size.width == 320.0f && [[UIScreen mainScreen] bounds].size.height == 568.0f

    // 判断是否为iPhone 6/6s

    #define iPhone6_6s [[UIScreen mainScreen] bounds].size.width == 375.0f && [[UIScreen mainScreen] bounds].size.height == 667.0f

    // 判断是否为iPhone 6Plus/6sPlus

    #define iPhone6Plus_6sPlus [[UIScreen mainScreen] bounds].size.width == 414.0f && [[UIScreen mainScreen] bounds].size.height == 736.0f

    //获取系统版本

    #define IOS_SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]

    //判断 iOS 8 或更高的系统版本

    #define IOS_VERSION_8_OR_LATER (([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0)? (YES):(NO))

    #ifdef ITTDEBUG

    #define ITTDPRINT(xx, ...)  NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

    #else

    #define ITTDPRINT(xx, ...)  ((void)0)

    #endif

    相关文章

      网友评论

          本文标题:iOS宏定义

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