常用宏

作者: 卟吃兎孒的罗卜 | 来源:发表于2017-01-30 22:14 被阅读0次

    一、iOS 中常用的宏

    设置Dlog可以打印出类名,方法名,行数.

    #ifdef DEBUG

    #define DLog(fmt, ...) NSLog((@"%s [Line %d] "fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

    #else

    #define DLog(...)

    #endif

    尺寸宏

    // 宽和高基本都是用的#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height// navigationBar 默认的高度#define NAVIGATIONBAR_HEIGHT64// tabBar 默认的高度#define UITABBAR_HEIGHT49

    颜色宏

    // RGB颜色转换(16进制->10进制)#define UICOLOR_HEX(hexString) [UIColor colorWithRed:((float)((rgbValue &0xFF0000) >>16))/255.0green:((float)((rgbValue &0xFF00) >>8))/255.0blue:((float)(rgbValue &0xFF))/255.0alpha:1.0]// 带有RGBA的颜色设置#define UICOLOR_RGB(R, G, B, A) [UIColor colorWithRed:R/255.0green:G/255.0blue:B/255.0alpha:A]// 随机颜色#define UICOLOR_RANDOM  [UIColor colorWithRed:(arc4random()%255)/255.0green:(arc4random()%255)/255.0blue:(arc4random()%255)/255.0alpha:1.0]

    打印宏

    // 直接替换#ifdefDEBUG#defineNSLog(...) NSLog(__VA_ARGS__)#definedebugMethod() NSLog(@"%s", __func__)#else#defineNSLog(...)#definedebugMethod()#endif

    真机还是模拟器

    #ifTARGET_OS_IPHONE//iPhone Device#endif#ifTARGET_IPHONE_SIMULATOR//iPhone Simulator#endif

    系统宏

    //获取系统版本#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]// 大于 iOS 8 的系统#define ABOVE_IOS8 (([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0) ? YES : NO)// 直接判断机型#define IS_IPHONE_4 (fabs((double)[[UIScreen mainScreen]bounds].size.height- (double)480) < DBL_EPSILON)#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen]bounds].size.height- (double)568) < DBL_EPSILON)#define IS_IPHONE_6 (fabs((double)[[UIScreen mainScreen]bounds].size.height- (double)667) < DBL_EPSILON)#define IS_IPHONE_6_PLUS (fabs((double)[[UIScreen mainScreen]bounds].size.height- (double)736) < DBL_EPSILON)

    目录宏

    // Directory 目录#definePATH_DIRECTORY [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]// Cache 目录#definePATH_CACHE [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]// 数据库 目录#definePATH_DATABASE_CACHE [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0]

    区分不同版本的文字宽度处理

    #if__IPHONE_OS_VERSION_MIN_REQUIRED >=70000#defineMB_TEXTSIZE(text, font) [text length] >0? [text \sizeWithAttributes:@{NSFontAttributeName:font}] : CGSizeZero;#else#defineMB_TEXTSIZE(text, font) [text length] >0? [text sizeWithFont:font] : CGSizeZero;#endif#if__IPHONE_OS_VERSION_MIN_REQUIRED >=70000#defineMB_MULTILINE_TEXTSIZE(text, font, maxSize, mode) [text length] >0? [text \boundingRectWithSize:maxSize options:(NSStringDrawingUsesLineFragmentOrigin) \        attributes:@{NSFontAttributeName:font} context:nil].size : CGSizeZero;#else#defineMB_MULTILINE_TEXTSIZE(text, font, maxSize, mode) [text length] >0? [text \sizeWithFont:fontconstrainedToSize:maxSize lineBreakMode:mode] : CGSizeZero;#endif

    二、自带的宏

    //获取两者之间小的#define MIN(A,B)    ((A) < (B) ? (A) : (B))//获取两者之间大的#define MAX(A,B)    ((A) > (B) ? (A) : (B))//绝对值#define ABS(A)    ((A) < 0 ? (-(A)) : (A))

    //CGFLOAT_MAX 无穷大//CGFLOAT_MIN 无穷接近0#ifdefined(__LP64__) && __LP64__#defineCGFLOAT_TYPE double#defineCGFLOAT_IS_DOUBLE 1#defineCGFLOAT_MIN DBL_MIN#defineCGFLOAT_MAX DBL_MAX#else#defineCGFLOAT_TYPE float#defineCGFLOAT_IS_DOUBLE 0#defineCGFLOAT_MIN FLT_MIN#defineCGFLOAT_MAX FLT_MAX#endif

    // 这三个倒是用的不多#defineNSIntegerMax    LONG_MAX#defineNSIntegerMin    LONG_MIN#defineNSUIntegerMax  ULONG_MAX

    //  UIKIT_EXTERN     extern

    #ifdef__cplusplus

    #defineUIKIT_EXTERN        extern"C"__attribute__((visibility ("default")))

    #else

    #defineUIKIT_EXTERN            extern __attribute__((visibility ("default")))

    #endif

    相关文章

      网友评论

          本文标题:常用宏

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