// // RDSConstant.h // singleProduct // // Created by coderYK on 2018/4/26. // Copyright © 2018年 coderYK. All rights reserved. // #import //-------------------打印-------------------- #ifdef DEBUG #define NEED_OUTPUT_LOG 1 #else #define NEED_OUTPUT_LOG 0 #endif #if NEED_OUTPUT_LOG #define DDLog(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else #define DDLog(xx, ...) nil #endif // NSLog打印不全 加入后会导致控制台输出不显示时间 [[NSDate dateWithTimeIntervalSinceNow:0] timeIntervalSince1970]*1000 #ifdef DEBUG #define NSLog(...) printf("%f %s\n",[[NSDate date] timeIntervalSince1970],[[NSString stringWithFormat:__VA_ARGS__]UTF8String]); #else #define NSLog(FORMAT, ...) nil #endif //-------------------打印-------------------- #define kGetTimeNow [NSString stringWithFormat:@"%.0f", ([[NSDate dateWithTimeIntervalSinceNow:0] timeIntervalSince1970]*1000)] #define objectOrNull(obj) ((obj) ? (obj) : [NSNull null]) #define objectOrEmptyStr(obj) ((obj) ? (obj) : @"") //判断字符串是否为空 #define kNULLString(string) ((![string isKindOfClass:[NSString class]])||[string isEqualToString:@""] || (string == nil) || [string isEqualToString:@""] || [string isKindOfClass:[NSNull class]]||[[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) #define isNull(x) (!x || [x isKindOfClass:[NSNull class]]) #define toInt(x) (isNull(x) ? 0 : [x intValue]) #define isEmptyString(x) (isNull(x) || [x isEqual:@""] || [x isEqual:@"(null)"]) #define sleep(s); [NSThread sleepForTimeInterval:s]; #define Syn(x) @synthesize x = _##x #define BoldSystemFont(size) [UIFont boldSystemFontOfSize:size] #define systemFont(size) [UIFont systemFontOfSize:size] #define beginAutoPool NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; { #define endAutoPool } [pool release]; #define skipspace(c) while (isspace(*c)) ++c #define skipUntil(c,x) while (x != *c) ++c #define TheWindowHeight ([UIDevice isAfterOS7] ? [UIScreen mainScreen].bounds.size.height : ([UIScreen mainScreen].bounds.size.height - 20)) #define isIOS7 [[UIDevice currentDevice].systemVersion doubleValue]>=7.0?YES:NO #define isIOS8 [[UIDevice currentDevice].systemVersion doubleValue]>=8.0?YES:NO #define isIOS9 [[UIDevice currentDevice].systemVersion doubleValue]>=9.0?YES:NO #define isIOS10 [[UIDevice currentDevice].systemVersion doubleValue]>=10.0?YES:NO #define isIOS11 [[UIDevice currentDevice].systemVersion doubleValue]>=11.0?YES:NO #define kSYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue] #define kSTATUSBAR_HEIGHT [[UIApplication sharedApplication] statusBarFrame].size.height #define kNAVBAR_HEIGHT (44.f + ((kSYSTEM_VERSION >= 7) ? kSTATUSBAR_HEIGHT : 0)) #define FULL_WIDTH SCREEN_WIDTH #define FULL_HEIGHT (SCREEN_HEIGHT - ((kSYSTEM_VERSION >= 7) ? 0 : kSTATUSBAR_HEIGHT)) #define CONTENT_HEIGHT (FULL_HEIGHT - NAVBAR_HEIGHT) // 屏幕高度 #define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height // 屏幕宽度 #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define kSCALE_WIDTH_6 (SCREEN_WIDTH/375) #define kSCALE_HEIGHT_6 (SCREEN_HEIGHT/667) #define kSCALE_WIDTH_X (SCREEN_WIDTH/414) #define kSPACE_EDGE_RIGHT_LEFT (IPHONE4OR5 ? 10 : 20) #define IPAD9_7 SCREEN_WIDTH == 768 #define IPHONE4OR5 ( [ [ UIScreen mainScreen ] bounds ].size.width == 320 ) #define IPhoneX (SCREEN_HEIGHT == 812.0f || SCREEN_HEIGHT == 896.0f) #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) #define kStatusBarHeight (IPhoneX ? 44 : 20) // 状态栏高度 #define AdaptTabHeight (IPhoneX ? 34 : 0) // Tab bar 圆角部分高度 #define kNavHeight (IPhoneX ? 88 : 64) // 导航 #define kTabbarHeight (IPhoneX ? 83 : 49) // 分栏 #define kUserDefaults [NSUserDefaults standardUserDefaults] #define kNotificationCenter [NSNotificationCenter defaultCenter] #define kFileManager ([NSFileManager defaultManager]) #define kAppDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate]) //-------------- 单例----------------- #undef AS_SINGLETON #define AS_SINGLETON( __class ) \ + (__class *)sharedInstance; #undef DEF_SINGLETON #define DEF_SINGLETON( __class ) \ + (__class *)sharedInstance \ { \ static dispatch_once_t once; \ static __class * __singleton__; \ dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \ return __singleton__; \ } //-------------- 单例----------------- //图片 #define DD_MESSAGE_IMAGE_PREFIX @"&$#@~^@[{:" #define DD_MESSAGE_IMAGE_SUFFIX @":}]&$~@#@" // url phone email 正则 #define URL_REGULA @"((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}\\.)+(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnrwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eouw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]))|(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?)(\\/(?:(?:[a-zA-Z0-9\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)" #define PHONE_REGULA @"\\d{3}-\\d{8}|\\d{3}-\\d{7}|\\d{4}-\\d{8}|\\d{4}-\\d{7}|1+[358]+\\d{9}|\\d{8}|\\d{7}" #define EMAIL_REGULA @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}" #define LINK_SPLIT @"!@#$~link~#$@!" #define NICK_SPLIT @"!@#$~nick~#$@!" #define PHONE_SPLIT @"!@#$~phone~#$@!" #define EMAIL_SPLIT @"!@#$~email~#$@!" #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] #define RGB(r,g,b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0] #define RDSNavBarColor RGB(248,248,250) #define RDSViewBgColor RGB(248,248,250) #define RDSGreenColor RGB(20, 201, 201) // 绿色 #define RDSLightGreenColor RGB(240, 245, 246) // 浅绿色 #define RDSRedColor RGB(228,31,39) // 红色 #define RDSThemeColor RGB(6,40,75) // 深空蓝 #define RDSPinkColor RGB(204, 55, 241) // 粉红色 #define RDSBlueColor RGB(47, 149, 250) // 蓝色 #define RDSHeaderBgColor RGB(214, 214, 215) #define RDSGrayColor RGB(130, 148, 165) // 灰色 #define RDSLightGrayColor RGB(239, 239, 239) // 浅灰色 #define RDSBlackColor RGB(39, 46, 59) // 黑色 // 字体颜色 #define kTextColor RGB(85,85,85) #define kDarkTextColor RGBA(6, 40, 75, 1) //快速定义一个weakSelf 用于block #define RDS_WEAKSELF(weakSelf) __weak __typeof(&*self)weakSelf = self; #define BLOCK_SAFE_RUN(block, ...) block != nil ? block(__VA_ARGS__) : nil; #pragma mark - 全局常量参数 #pragma mark - 通知 extern NSString * const RDSDeviceCmdContentParserNotice; /// 用户信息更新通知 extern NSString * const RDSUpdateUserInfoNotice;