// // ACMacros.h // #ifndef ACMacros_h #define ACMacros_h #define WEAK_SELF @weakify(self); #define STRONG_SELF @strongify(self); #define ZFWeakSelf __weak typeof(self) weakSelf = self //** 沙盒路径 *********************************************************************************** #define PATH_OF_APP_HOME NSHomeDirectory() #define PATH_OF_TEMP NSTemporaryDirectory() #define PATH_OF_DOCUMENT [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] /* ****************************************************************************************************************** */ /** DEBUG LOG **/ /** DEBUG RELEASE **/ #if DEBUG #define MCRelease(x) [x release] #else #define MCRelease(x) [x release], x = nil #endif /** NIL RELEASE **/ #define NILRelease(x) [x release], x = nil /* ****************************************************************************************************************** */ #pragma mark - Frame (宏 x, y, width, height) // App Frame #define Application_Frame [[UIScreen mainScreen] bounds] // 屏幕宽高 #define kWidth CGRectGetWidth([[UIScreen mainScreen] bounds]) #define kHeight CGRectGetHeight([[UIScreen mainScreen] bounds]) // App Frame Height&Width #define App_Frame_Height ([UIScreen mainScreen].bounds.size.height) #define App_Frame_Width ([UIScreen mainScreen].bounds.size.width) // 基准屏幕宽度 #define kRefereWidth 375.0 // 以屏幕宽度为固定比例关系,来计算对应的值。假设:基准屏幕宽度375,floatV=10;当前屏幕宽度为750时,那么返回的值为20 //#define AdaptW(floatValue) (floatValue*[[UIScreen mainScreen] bounds].size.width/kRefereWidth) #define AdaptW(floatValue) (floatValue*kRefereWidth/kRefereWidth) //WQY #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) #define HexColor(hexColor) [UIColor colorWithMacHexString:hexColor] //WQY #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) // MainScreen Height&Width #define Main_Screen_Height [[UIScreen mainScreen] bounds].size.height #define Main_Screen_Width [[UIScreen mainScreen] bounds].size.width /** 状态栏(事件)高度 */ #define Statushight [[UIApplication sharedApplication] statusBarFrame].size.height /** 导航栏高度 一般为44 */ #define Navhight self.navigationController.navigationBar.frame.size.height // View 坐标(x,y)和宽高(width,height) #define X(v) (v).frame.origin.x #define Y(v) (v).frame.origin.y #define WIDTH(v) (v).frame.size.width #define HEIGHT(v) (v).frame.size.height #define MinX(v) CGRectGetMinX((v).frame) #define MinY(v) CGRectGetMinY((v).frame) #define MidX(v) CGRectGetMidX((v).frame) #define MidY(v) CGRectGetMidY((v).frame) #define MaxX(v) CGRectGetMaxX((v).frame) #define MaxY(v) CGRectGetMaxY((v).frame) #define RECT_CHANGE_x(v,x) CGRectMake(x, Y(v), WIDTH(v), HEIGHT(v)) #define RECT_CHANGE_y(v,y) CGRectMake(X(v), y, WIDTH(v), HEIGHT(v)) #define RECT_CHANGE_point(v,x,y) CGRectMake(x, y, WIDTH(v), HEIGHT(v)) #define RECT_CHANGE_width(v,w) CGRectMake(X(v), Y(v), w, HEIGHT(v)) #define RECT_CHANGE_height(v,h) CGRectMake(X(v), Y(v), WIDTH(v), h) #define RECT_CHANGE_size(v,w,h) CGRectMake(X(v), Y(v), w, h) /* ****************************************************************************************************************** */ #pragma mark - Funtion Method (宏 方法) /*单例宏实现*/ #define SingleInstance(Obj, Method) \ + (instancetype)Method { \ static dispatch_once_t onceToken; \ static Obj *shareObject = nil; \ dispatch_once(&onceToken, ^{ \ shareObject = [[[self class] alloc] init]; \ }); \ return shareObject; \ } // PNG JPG 图片路径 #define PNGPATH(NAME) [[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:NAME] ofType:@"png"] #define JPGPATH(NAME) [[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:NAME] ofType:@"jpg"] #define PATH(NAME, EXT) [[NSBundle mainBundle] pathForResource:(NAME) ofType:(EXT)] // 加载图片 #define PNGIMAGE(NAME) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:@"png"]] #define JPGIMAGE(NAME) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:@"jpg"]] #define IMAGE(NAME, EXT) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:(EXT)]] #define UIImageNamed(_pointer) [UIImage imageNamed:[NSString stringWithFormat:@"%@",_pointer]] // 定义UIImage对象 // 字体大小(常规/粗体) #define BOLDSYSTEMFONT(FONTSIZE)[UIFont boldSystemFontOfSize:FONTSIZE] #define SYSTEMFONT(FONTSIZE) [UIFont systemFontOfSize:FONTSIZE] #define FONT(NAME, FONTSIZE) [UIFont fontWithName:(NAME) size:(FONTSIZE)] // 颜色(RGB) #define RGBCOLOR(r, g, b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1] #define RGBACOLOR(r, g, b, a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)] //number转String #define IntTranslateStr(int_str) [NSString stringWithFormat:@"%d",int_str]; #define FloatTranslateStr(float_str) [NSString stringWithFormat:@"%.2d",float_str]; // View 圆角和加边框 #define ViewBorderRadius(View, Radius, Width, Color)\ \ [View.layer setCornerRadius:(Radius)];\ [View.layer setMasksToBounds:YES];\ [View.layer setBorderWidth:(Width)];\ [View.layer setBorderColor:[Color CGColor]] // View 圆角 #define ViewRadius(View, Radius)\ \ [View.layer setCornerRadius:(Radius)];\ [View.layer setMasksToBounds:YES] // 当前版本 #define FSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue]) #define DSystemVersion ([[[UIDevice currentDevice] systemVersion] doubleValue]) #define SSystemVersion ([[UIDevice currentDevice] systemVersion]) // 当前语言 #define CURRENTLANGUAGE ([[NSLocale preferredLanguages] objectAtIndex:0]) // 是否Retina屏 #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(640, 960), \ [[UIScreen mainScreen] currentMode].size) : \ NO) // 是否iPhoneX #define IS_iPhoneX \ (^(){\ if(@available(iOS 11.0,*)){\ if(UIApplication.sharedApplication.delegate.window.safeAreaInsets.bottom > 0.0){\ return YES;\ }\ }\ return NO;\ }()) // 是否iPhone6 #define isiPhone6p ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(1080, 1920), \ [[UIScreen mainScreen] currentMode].size) : \ NO) // 是否iPhone6 #define isiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(750, 1334), \ [[UIScreen mainScreen] currentMode].size) : \ NO) // 是否iPhone5 #define isiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(640, 1136), \ [[UIScreen mainScreen] currentMode].size) : \ NO) // 是否iPhone4 #define isiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(640, 960), \ [[UIScreen mainScreen] currentMode].size) : \ NO) // 是否IOS7 #define isIOS7 ([[[UIDevice currentDevice]systemVersion]floatValue] >= 7.0) // 是否IOS6 #define isIOS6 ([[[UIDevice currentDevice]systemVersion]floatValue] < 7.0) #define isIOS8 ([[[UIDevice currentDevice]systemVersion]floatValue] >= 8.0) #define iOS11 @available(iOS 11.0, *) // 是否iPad #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) // UIView - viewWithTag #define VIEWWITHTAG(_OBJECT, _TAG)\ \ [_OBJECT viewWithTag : _TAG] // 本地化字符串 /** NSLocalizedString宏做的其实就是在当前bundle中查找资源文件名“Localizable.strings”(参数:键+注释) */ #define LocalString(x, ...) NSLocalizedString(x, nil) /** NSLocalizedStringFromTable宏做的其实就是在当前bundle中查找资源文件名“xxx.strings”(参数:键+文件名+注释) */ #define AppLocalString(x, ...) NSLocalizedStringFromTable(x, @"someName", nil) // 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] #if TARGET_OS_IPHONE /** iPhone Device */ #endif #if TARGET_IPHONE_SIMULATOR /** iPhone Simulator */ #endif // ARC #if __has_feature(objc_arc) /** Compiling with ARC */ #else /** Compiling without ARC */ #endif /* ****************************************************************************************************************** */ #pragma mark - Log Method (宏 LOG) // 日志 / 断点 // ============================================================================================================================= // DEBUG模式 #define ITTDEBUG // LOG等级 #define ITTLOGLEVEL_INFO 10 #define ITTLOGLEVEL_WARNING 3 #define ITTLOGLEVEL_ERROR 1 // ============================================================================================================================= // LOG最高等级 #ifndef ITTMAXLOGLEVEL #ifdef DEBUG #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO #else #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR #endif #endif // ============================================================================================================================= // LOG PRINT // The general purpose logger. This ignores logging levels. #ifdef ITTDEBUG #define ITTDPRINT(xx, ...) NSLog(@"< %s:(%d) > : " xx , __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #else #define ITTDPRINT(xx, ...) ((void)0) #endif // Prints the current method's name. #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__) // Log-level based logging macros. #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL #define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDERROR(xx, ...) ((void)0) #endif #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL #define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDWARNING(xx, ...) ((void)0) #endif #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL #define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDINFO(xx, ...) ((void)0) #endif // 条件LOG #ifdef ITTDEBUG #define ITTDCONDITIONLOG(condition, xx, ...)\ \ {\ if ((condition))\ {\ ITTDPRINT(xx, ##__VA_ARGS__);\ }\ } #else #define ITTDCONDITIONLOG(condition, xx, ...)\ \ ((void)0) #endif // 断点Assert #define ITTAssert(condition, ...)\ \ do {\ if (!(condition))\ {\ [[NSAssertionHandler currentHandler]\ handleFailureInFunction:[NSString stringWithFormat:@"< %s >", __PRETTY_FUNCTION__]\ file:[[NSString stringWithUTF8String:__FILE__] lastPathComponent]\ lineNumber:__LINE__\ description:__VA_ARGS__];\ }\ } while(0) /* ****************************************************************************************************************** */ #pragma mark - Constants (宏 常量) /** 时间间隔 */ #define kHUDDuration (1.f) /** 一天的秒数 */ #define SecondsOfDay (24.f * 60.f * 60.f) /** 秒数 */ #define Seconds(Days) (24.f * 60.f * 60.f * (Days)) /** 一天的毫秒数 */ #define MillisecondsOfDay (24.f * 60.f * 60.f * 1000.f) /** 毫秒数 */ #define Milliseconds(Days) (24.f * 60.f * 60.f * 1000.f * (Days)) //** textAlignment *********************************************************************************** #if !defined __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_5_0 # define LINE_BREAK_WORD_WRAP UILineBreakModeWordWrap # define TextAlignmentLeft UITextAlignmentLeft # define TextAlignmentCenter UITextAlignmentCenter # define TextAlignmentRight UITextAlignmentRight #else # define LINE_BREAK_WORD_WRAP NSLineBreakByWordWrapping # define TextAlignmentLeft NSTextAlignmentLeft # define TextAlignmentCenter NSTextAlignmentCenter # define TextAlignmentRight NSTextAlignmentRight #endif //** 打印 *********************************************************************************************// #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define DLog(...) #endif #ifdef DEBUG #define SLog(format, ...) printf("class: <%p %s:(%d) > method: %s \n%s\n", self, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(format), ##__VA_ARGS__] UTF8String] ) #else #define SLog(format, ...) #endif #define QFTColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] #define QFTBack_Color [UIColor colorWithRed:(244)/255.0 green:(244)/255.0 blue:(244)/255.0 alpha:1.0] #define QFTPageBack_Color [UIColor colorWithRed:(239)/255.0 green:(236)/255.0 blue:(240)/255.0 alpha:1.0] #define kBaseSetFontOfSize(fontName,customsize) [UIFont fontWithName:fontName size:customsize*(App_Frame_Width /375.0)] #define kBaseSetFontOfSize_iPhone5(fontName,customsize) [UIFont fontWithName:fontName size:customsize*0.9] #define SCREEN_WIDTH_SCALE [UIScreen mainScreen].bounds.size.width/375 #define SCREEN_HEIGHT_SCALE (kIsiPhoneX ? 667.0/667.0 : App_Frame_Height/667.0) #define SCREEN_SMALL_WIDTH_SCALE [UIScreen mainScreen].bounds.size.width/414 // 系统控件默认高度 #define kTopBarHeight (44.f) #define kCellDefaultHeight (44.f) #define kEnglishKeyboardHeight (216.f) #define kChineseKeyboardHeight (252.f) #define kStatusBarHeight (kIsiPhoneX ? 44.f : 20.f) #define kNavBarHeight (kIsiPhoneX ? 88.f : 64.f) #define kTabBarHeight (kIsiPhoneX ? 83.f: 49.f) #define kBottomHeight (kIsiPhoneX ? 34.f:0) // ****** 比例 #define Width_SCALE [[UIScreen mainScreen] bounds].size.width / 375.0f // 获取一个标准值 #define GetNormWidth(R) R * Width_SCALE #define Kmagin_five GetNormWidth(5) #define Kmagin_ten GetNormWidth(10) #define Kmagin_fifteen GetNormWidth(16) #define KChartHeight GetNormWidth(120) #define KNotEidtColor [UIColor colorWithMacHexString:@"#999999"] #define ALPHANUM @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" //宏定义 #define kFontSize(size) size #define systemAccountInfo ((myAccontResponseModel*)[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"systemAccountInfo"]]) #define PersonInfo ((personModel*)[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"person"]]) #define settingInfo ((settingModel*)[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"setting"]]) #define systemNoticeNumber ([[NSUserDefaults standardUserDefaults] objectForKey:@"systemNoticeNumber"]) #define TENANTS_SIMPLE ([[NSUserDefaults standardUserDefaults] objectForKey:@"TENANTS_SIMPLE"]) #define RESERVE_HOUSE_SMS ([[NSUserDefaults standardUserDefaults] objectForKey:@"RESERVE_HOUSE_SMS"]) #define HOUSE_CODE_CONTROL ([[NSUserDefaults standardUserDefaults] objectForKey:@"HOUSE_CODE_CONTROL"]) #define kAppDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate) // 判断是否为管理员账号 #define isAdmin [PersonInfo.roleCode isEqualToString:@"super_manager"] //判断空字符串 #define IsEmptyStr(string) (string == nil || string == NULL ||[string isKindOfClass:[NSNull class]]||[string isEqualToString:@""]||[string isEqualToString:@"null"]||[string isEqualToString:@""]||[string isEqualToString:@"(null)"]||[[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0 ? YES : NO) //空字符串显示空白 #define showText(string) (string == nil || string == NULL ||[string isKindOfClass:[NSNull class]]|| [string isEqualToString:@""]||[string isEqualToString:@"null"]||[string isEqualToString:@""]||[string isEqualToString:@"(null)"]||[[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0 ? @"":string) #define showPermissionText(str,permissions) ((IsEmptyStr(permissions) ? true : permissions.intValue == 1) ? (IsEmptyStr((str)) ? @"" : (str)) : @"***") #define IsContainsPermissions(permissions) (IsEmptyStr(permissions) ? true : permissions.intValue == 1) /***************************快捷代码块*****************************/ // Masonry 底部安全区域 #define iOS11MAS_SAFEAREALAYOUGUIDEBOTTOM \ { \ if (iOS11) {\ make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom);\ }else{\ make.bottom.equalTo(self.view.mas_bottom);\ }\ } // //百度人脸识别 // 如果在后台选择自动配置授权信息,下面的三个LICENSE相关的参数已经配置好了 // 只需配置FACE_API_KEY和FACE_SECRET_KEY两个参数即可 // 人脸license文件名 #define FACE_LICENSE_NAME @"idl-license" // 人脸license后缀 #define FACE_LICENSE_SUFFIX @"face-ios" // (您申请的应用名称(appname)+「-face-ios」后缀,如申请的应用名称(appname)为test123,则此处填写test123-face-ios) // 在后台 -> 产品服务 -> 人脸识别 -> 客户端SDK管理查看,如果没有的话就新建一个 #define FACE_LICENSE_ID @"QFT-face-ios" // 以下两个在后台 -> 产品服务 -> 人脸识别 -> 应用列表下面查看,如果没有的话就新建一个 // 您的API Key #define FACE_API_KEY @"hkjcNDu8GW2n8QUji68s8aSs" // 您的Secret Key #define FACE_SECRET_KEY @"q7fH2R1UgBqXSIygz8MidIeIb3dSPIK7" //WQY #define IOS11 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11)?YES:NO #define IOS13 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 13)?YES:NO #define XianyuNavTextColor [UIColor colorWithMacHexString:@"#232C37"] #define XianyuNormalTextColor [UIColor colorWithMacHexString:@"#6F7884"] #define XianyuButtonTextColor [UIColor colorWithMacHexString:@"#0078FD"] #define XianyuBottomLineColor [UIColor colorWithMacHexString:@"#E7E8ED"] #define XianyuGreenTextColor [UIColor colorWithMacHexString:@"#67C23A"] #define XianyuLightTextColor [UIColor colorWithMacHexString:@"#89939F"] #define JDOpenLightTextColor [UIColor colorWithMacHexString:@"#4A5159"] #define JDTipWarnTextColor [UIColor colorWithMacHexString:@"#E6A23C"] #define JDTextOrangeTextColor [UIColor colorWithMacHexString:@"#F5670B"] #define ChannelFilterTextColor [UIColor colorWithMacHexString:@"#55606C"] #define ChannelSelectPlaceHolderTextColor [UIColor colorWithMacHexString:@"#BDC3CE"] #define ChannelTypeBackGroundColor [UIColor colorWithMacHexString:@"#F7F7F7"] #define Color_EFEFEF [UIColor colorWithMacHexString:@"#EFEFEF"] #define Color_4169E1 [UIColor colorWithMacHexString:@"#4169E1"] #define Color_White [UIColor whiteColor] #define Color_89939F [UIColor colorWithMacHexString:@"#89939F"] #define Color_FEF8D4 [UIColor colorWithMacHexString:@"#FEF8D4"] #define Color_6F7884 [UIColor colorWithMacHexString:@"#6F7884"] #define ButtonClickDelayTime [QFTSingleton sharedInstance].buttonDelayTime //WQY #endif