iOS 常用宏定义

//FIXME:----------------- 系统对象

#define kApplication [UIApplication sharedApplication] //APP对象 (单例对象)
#define kWindow [UIApplication sharedApplication].keyWindow //主窗口 (keyWindow)
#define kAppDelegate  (AppDelegate *)UIApplication.sharedApplication.delegate //APP对象 (单例对象)
#define kUserDefaults [NSUserDefaults standardUserDefaults] //NSUserDefaults实例化
#define kNotificationCenter [NSNotificationCenter defaultCenter] //通知中心 (单例对象)
#define KPostNotification(name,obj,info) [[NSNotificationCenter defaultCenter]postNotificationName:name object:obj userInfo:info]//发送通知
#define kAppVersion [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleShortVersionString"]//APP版本号 
#define kSystmVersion  [[UIDevice currentDevice] systemVersion]//系统版本号
#define  kDisplayName  [[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleDisplayName"]

//FIXME:-----------------屏幕尺寸

#define SCREEN_BOUNDS [UIScreen mainScreen].bounds //获取屏幕尺寸
#define SCREEN_H SCREEN_BOUNDS.size.height//获取屏幕高度
#define SCREEN_W SCREEN_BOUNDS.size.width//获取屏幕宽度

//FIXME: -----------------机型判断

#define kScreenMaxLength (MAX(SCREEN_H, SCREEN_W))
#define kScreenMinLength (MIN(SCREEN_H, SCREEN_W))

#define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define kISiPhone5 (kISiPhone && kScreenMaxLength == 568.0)
#define kISiPhone6 (kISiPhone && kScreenMaxLength == 667.0)
#define kISiPhone6P (kISiPhone && kScreenMaxLength == 736.0)
#define kISiPhoneX (kISiPhone && kScreenMaxLength == 812.0)
#define kISiPhoneXr (kISiPhone && kScreenMaxLength == 896.0)
#define kISiPhoneXLater (kISiPhone && kScreenMaxLength > 812.0)
#define kISiPhone5Later  ( kISiPhone && kScreenMaxLength > 568 ? YES : NO)

//FIXME:----------------- 屏幕适配计算

// 系统控件默认高度
#define isIPhoneX (([[UIApplication sharedApplication] statusBarFrame].size.height > 20)?1:0)
//#define isIPhoneX (([UIScreen mainScreen].bounds.size.height>=812)?1:0)
#define kStatusBarHeight           ([[UIApplication sharedApplication] statusBarFrame].size.height)
#define kNavBarHeight              (44.f)
#define kTabBarHeight               (49.f)
#define kBottomSafeH               (isIPhoneX?34:0)
#define kTopStatusAndNavBarHeight  (kStatusBarHeight + kNavBarHeight)
#define kBottomHAndTabBarHeight    (kTabBarHeight + kBottomSafeH)
#define NavNormalHight kTopStatusAndNavBarHeight

//FIXME: -----------------系统版本判断

#define isIOS7          (([UIDevice currentDevice].systemVersion.floatValue >= 7.0f && [UIDevice currentDevice].systemVersion.floatValue < 8.0) ? YES : NO)
#define isIOS7_Or_Later (([UIDevice currentDevice].systemVersion.floatValue >= 7.0f) ? YES : NO)
#define isIOS8          (([UIDevice currentDevice].systemVersion.floatValue >= 8.0f && [UIDevice currentDevice].systemVersion.floatValue < 9.0f) ? YES : NO)
#define isIOS8_Or_Later (([UIDevice currentDevice].systemVersion.floatValue >= 8.0f) ? YES : NO)
#define isIOS9         (([UIDevice currentDevice].systemVersion.floatValue >= 9.0f && [UIDevice currentDevice].systemVersion.floatValue < 10.0f) ? YES : NO)
#define isIOS9_Or_Later (([UIDevice currentDevice].systemVersion.floatValue >= 9.0f) ? YES : NO)
#define isIOS10        (([UIDevice currentDevice].systemVersion.floatValue >= 10.0f && [UIDevice currentDevice].systemVersion.floatValue < 11.0f) ? YES : NO)
#define isIOS10_Or_Later (([UIDevice currentDevice].systemVersion.floatValue >= 10.0f) ? YES : NO)
#define isIOS11        (([UIDevice currentDevice].systemVersion.floatValue >= 11.0f && [UIDevice currentDevice].systemVersion.floatValue < 12.0f) ? YES : NO)
#define isIOS11_Or_Later (([UIDevice currentDevice].systemVersion.floatValue >= 11.0f) ? YES : NO)

#define IOS11 @available(iOS 11.0, *)


//FIXME: -----------------沙盒路径 (temp, Document,Cache, Library/Caches路径)
 #define Path_Temp                  NSTemporaryDirectory()
 #define Path_Document          [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
 #define Path_Cache                [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]
 #define Path_File                   ([[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil])

//FIXME: -----------------判空处理( 字符串,数组,字典,object)

 #define kISNullString(str)              ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
 #define kISNullArray(array)         (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0 ||[array isEqual:[NSNull null]])
 #define kISNullDict(dic)               (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0 || [dic isEqual:[NSNull null]])
 #define kISNullObject(_object)    (_object == nil || [_object isKindOfClass:[NSNull class]] || ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) || ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0))

//FIXME:----------------- 获取时间 (当前的年,月,日,时,分,秒)

 #define  CurrentTime_Year         [[NSCalendar currentCalendar] component:NSCalendarUnitYear fromDate:[NSDate date]]
 #define  CurrentTime_Month      [[NSCalendar currentCalendar] component:NSCalendarUnitMonth fromDate:[NSDate date]]
 #define  CurrentTime_Day          [[NSCalendar currentCalendar] component:NSCalendarUnitDay fromDate:[NSDate date]]
 #define  CurrentTime_Hour        [[NSCalendar currentCalendar] component:NSCalendarUnitHour fromDate:[NSDate date]]
 #define  CurrentTime_Min         [[NSCalendar currentCalendar] component:NSCalendarUnitMinute fromDate:[NSDate date]]
 #define  CurrentTime_Sec          [[NSCalendar currentCalendar] component:NSCalendarUnitSecond fromDate:[NSDate date]]

// FIXME:----------------- 基于 iPhone6 width=375 计算数据

#define SJYNUM(num) ((num)*(SCREEN_W/375.0f))

//FIXME:-----------------字符串拼接

#define String_BuildFormat(format,...)      [NSString stringWithFormat:format,##__VA_ARGS__]
#define NSStringFormat(format,...)           [NSString stringWithFormat:format,##__VA_ARGS__]

#define Weak_Self           __weak typeof(self) weakSelf = self

//FIXME:----------------- 图片名字

#define SJYCommonImage(imageName)        [UIImage imageNamed:imageName]
#define SJYNotCommonImage(imageName)  [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]]

//FIXME:----------------- 字体宏处理

#define  FontSystem(fsize)      [UIFont systemFontOfSize:fsize]
#define FontBold(size)            [UIFont boldSystemFontOfSize:size]
#define FontEqualNum(sizeNum) [UIFont fontWithName:@"Helvetica Neue" size:sizeNum]//等宽数字
//#define Font_ListTitle  [UIFont systemFontOfSize:SJYNUM(15)] //FontSystem(15)
//#define Font_ListSubtitle  [UIFont systemFontOfSize:SJYNUM(14)] //FontSystem(14)
//#define Font_ListOtherTxt [UIFont systemFontOfSize:SJYNUM(13)] //FontSystem(13)
//#define Font_ListLeftCircle [UIFont systemFontOfSize:SJYNUM(12)]// FontSystem(12)
#define Font_ListTitle                FontSystem(15)
#define Font_ListSubtitle           FontSystem(14)
#define Font_ListOtherTxt         FontSystem(13)
#define Font_ListLeftCircle       FontSystem(12)

//FIXME:----------------- 提示框

#define SJYAlertShowVC(titleText,messageText,buttonName)\
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:(titleText) message:(messageText) preferredStyle:UIAlertControllerStyleAlert];\
[alertVC addAction: [UIAlertAction actionWithTitle:(buttonName) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {\
}]];\
[kWindow.rootViewController presentViewController:alertVC animated:YES completion:nil];\
//[alertVC addAction: [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];\
#ifdef DEBUG
#define NSLog(format , ...) NSLog((@"\n[***函数名:%s]\n" "[行号:%d]\n" format), __FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define NSLog(format, ...) nil
#endif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,963评论 6 542
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,348评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,083评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,706评论 1 317
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,442评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,802评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,795评论 3 446
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,983评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,542评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,287评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,486评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,030评论 5 363
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,710评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,116评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,412评论 1 294
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,224评论 3 398
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,462评论 2 378

推荐阅读更多精彩内容