ios常用的小宏宏

写点常用的宏,有什么需要补充的给我留言哦

  • 新加iphoneX的小宏宏
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
 
#define iPhoneXR ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
 
#define iPhoneXS_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
  • 常用的Block解循环。
#ifndef weakify
#if __has_feature(objc_arc)
#define weakify( x )    autoreleasepool{} __weak __typeof__(x) __weak_##x##__ = x;
#else
#define weakify( x )    autoreleasepool{} __block __typeof__(x) __block_##x##__ = x;
#endif
#endif

#ifndef normalize
#if __has_feature(objc_arc)
#define normalize( x )    try{} @finally{} __typeof__(x) x = __weak_##x##__;
#else
#define normalize( x )    try{} @finally{} __typeof__(x) x = __block_##x##__;
#endif
#endif

  • 版本号获取
系统版本号
#define SystemVersionNow [[UIDevice currentDevice].systemVersion floatValue]

最少是某个系统版本判断
#define IsAtLeastiOSVersion(X) ([[[UIDevice currentDevice] systemVersion] compare:X options:NSNumericSearch] != NSOrderedAscending)

当前版本号
#define kYYZVersion      [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]

小版本号  就是build号
#define kYYZInnerVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]
  • 常用设备判断
#define iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ?            CGSizeEqualToSize(CGSizeMake(640,960), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(750,1334), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(640,1136), [[UIScreen mainScreen] currentMode].size)) : NO)
#define iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1125,2001), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreen mainScreen] currentMode].size)) : NO)
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ?            CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone45Pad (iPhone4||iPhone5||IsiPad)
#define IsiPad      ([[UIDevice currentDevice].model rangeOfString:@"iPad"].location != NSNotFound)
#define isPad       (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
  • 常用屏幕尺寸获取
#define kScreen      ([[UIScreen mainScreen] bounds])
#define kScreenH     ([[UIScreen mainScreen]bounds].size.height)
#define kScreenW     ([[UIScreen mainScreen]bounds].size.width)

// 状态栏的高度
#define kStatusHeight [[UIApplication sharedApplication] statusBarFrame].size.height
// 导航栏的高度
#define naviHeight 44.0
// 状态栏 + 导航栏 的高度
#define kNavHeight  (kStatusHeight + naviHeight)
// tabbar的高度
#define kTarBarHeight YDMainTabbarVC.tabBar.frame.size.height
// 指示器的高度
#define kiPhoneXIndicatorHeight (iPhoneX ? 34.0 : 0)
  • 适配比例
#define FONT_RATIO(a)  ((((int)ScreenW == 320 || isPad) ? (320.0 / 375) : (((int)ScreenW == 375) ? 1.0 : (414.0 / 375))) * (a))
#define SCREEN_RATIO_CEIL(a)  (ceil((((int)ScreenW == 320 || isPad) ? (320.0 / 375) : (((int)ScreenW == 375) ? 1.0 : (414.0 / 375))) * (a) ))//向上取整
#define HEIGHT_RATIO_CEIL(a) (ceil(SCREEN_RATIO_CEIL(a) * ((iPhone4 || isPad || IsiPad) ? (480.0 / 568.0): 1.0)))
  • 常用控件获取
// 常规字体大小
#define UIFONTSIZE(font) [UIFont systemFontOfSize:font]
// 创建alloc
#define ALLOC(view) [[view alloc] init]
// NSUserDefaults
#define UserDefaults [NSUserDefaults standardUserDefaults]
// UIApplication
#define UIAPPLICATION [UIApplication sharedApplication]
// window
#define WINDOW [[UIAPPLICATION delegate] window]
  • 条件判断
#define EMPTY_STRING(string) \
([string isKindOfClass:[NSNull class]] || \
string == nil || [string isEqualToString:@""])

#define returnCondition(condition)    if (condition) {return;}
  • 懒加载
#define LazyGetMethod(type, attribute)            \
- (type *)attribute                                 \
{                                                   \
if (!_##attribute) {                            \
_##attribute = [[type alloc] init];         \
}                                               \
return _##attribute;                            \
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,712评论 8 265
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,110评论 25 709
  • 酒毕竟是穿肠之物,哪有茶来的贴心。 今夜过后,暮暮朝朝,此消彼长。 那些在夜里的徜徉,渐渐地要急促起来。 时间是一...
    步今314阅读 139评论 0 0
  • 随笔…请赐教 噪杂不安的夜晚,凛冽的冷风针雨吹面。他在安静的思考着,更确切的说,他是在苛求内心的一片宁静。他的思绪...
    竹休先生阅读 232评论 5 2
  • 《酒之殇》 你的登堂,天酵地酿 有比人类更早的历史渊源 你散发着迷人的体香 诱惑无数食客们向往 你代表男人的豪爽 ...
    无话不谭阅读 390评论 0 0