iOS常用宏定义总结 --Objective-C

iOS常用宏定义总结

iOS开发者都知道,我们在开发过程中会经常用到一些比较常用宏定义,比如手机屏幕宽高呀、系统版本等等的,会在项目中的好多位置用到。下面呢是本人在开发过程中用到的一些宏定义的总结,也有一些是从别人那里学习过来的,希望帮助到想要统一使用宏定义的朋友。

代码中可能会有一些错误或者异常以及不足之处,也希望大家多多评论补充或者直接联系我,在这里先谢过了,小子会及时更新上去。
usage 使用
  1. 直接将下面拷贝到pch文件或者项目总头文件中
  2. github下载文件,直接拖到项目中使用。

代码如下


/**
 * iOS常用宏定义小总结
 *****************************************************************
 ***|
 ***| 1. 重写DEBUG模式下的NSLog
 ***| 2. APP屏幕大小相关
 ***| 3. GCD -- 多线程   dispatch
 ***| 4. catch缓存文件夹和Documents文件夹
 ***| 5. 图片  UIImage
 ***| 6. App Version / Info Plist  系统版本比较等
 ***| 7. rgb颜色转换 UIColor
 ***| 8. 字体 UIFont  只列举一种,其他的换名称自己可定义
 ***| 9. 角度转弧度 弧度转角度
 ***| 10. 单例 singleton
 ***| 11. iOS系统内部常用宏定义
 ***
 ******************************************************************
 */
#ifdef __OBJC__   //保证 #ifdef 中的宏定义只会在 OC 的代码中被调用, 否则,一旦引入 C/C++ 的代码或者框架,就会出错

///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//  1. NSLog  重写NSLog,Debug模式下打印日志和当前行数  release模式下不打印
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifdef  DEBUG
#define NSLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define NSLog(...)
#endif


///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//  2. App 屏幕相关   Frame   Bounds
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

//NavBar高度
#ifndef kNavigationBar_HEIGHT
#define kNavigationBar_HEIGHT 44
#endif

//获取屏幕 宽度、高度
#ifndef kScreenHeight
#define kScreenHeight      [[UIScreen mainScreen] bounds].size.height
#endif

#ifndef kScreenWidth
#define kScreenWidth       [[UIScreen mainScreen] bounds].size.width
#endif

//不同屏幕尺寸字体适配(375,667是因为目前苹果开发一般用IPHONE6做中间层 如果不是则根据实际情况修改)
#ifndef kScreenWidthRatio
#define kScreenWidthRatio  (kScreenWidth / 375.0)
#endif

#ifndef kScreenHeightRatio
#define kScreenHeightRatio (kScreenHeight / 667.0)
#endif

//根据传入的值算出乘以比例之后的值
#define AdaptedWidth(x)    ceilf((x) * kScreenWidthRatio)
#define AdaptedHeight(x)   ceilf((x) * kScreenHeightRatio)

#ifndef MAIN_BOUNDS
#define MAIN_BOUNDS [[UIScreen mainScreen] bounds]
#endif

//判断是那种设备
/*
 4  4s
 */
#ifndef IPHONE4
#define IPHONE4  ([[UIScreen mainScreen] bounds].size.height==480)
#endif

/*
 5  5s
 */
#ifndef IPHONE5S
#define IPHONE5S ([[UIScreen mainScreen] bounds].size.height==568)
#endif

/*
 6  6s 7
 */
#ifndef IPHONE6
#define IPHONE6  ([[UIScreen mainScreen] bounds].size.height==667)
#endif

/*
 6plus  6splus 7plus
 */
#ifndef IPHONE6P
#define IPHONE6P ([[UIScreen mainScreen] bounds].size.height==736)
#endif

// 是否iPad
#ifndef isPad
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#endif


///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//  3. GCD -- 多线程   dispatch
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

#define XH_GCD_MAIN(__BLOCK__)         dispatch_async(dispatch_get_main_queue(), __BLOCK__)

#define XH_GCD_ASYNC(__BLOCK__)        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), __BLOCK__)

#define XH_OPERATION_MAIN(__BLOCK__)   [[NSOperationQueue mainQueue] addOperationWithBlock:__BLOCK__]


///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   4. catch缓存文件夹和Documents文件夹
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef XH_USER_DEFAULT
#define XH_USER_DEFAULT [NSUserDefaults standardUserDefaults]
#endif

#ifndef XH_CACHE_DIR
#define XH_CACHE_DIR      [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]
#endif

#ifndef XH_DOCUMENTS_DIR
#define XH_DOCUMENTS_DIR  [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
#endif


///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//  5. App Version / Info Plist                                                                      //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////
//设备(手机)版本号
#ifndef IOS_VERSION_S
#define IOS_VERSION_S ([[UIDevice currentDevice] systemVersion])              //str
#endif

//设备(手机)版本号
#ifndef IOS_VERSION_F
#define IOS_VERSION_F ([[[UIDevice currentDevice] systemVersion] floatValue]) //float
#endif

//系统类型   eg: iOS10.0.1
#ifndef XH_OSTYPE
#define XH_OSTYPE [NSString stringWithFormat:@"iOS%@", [[UIDevice currentDevice] systemVersion]]
#endif


//app 版本号
#ifndef XH_BUNDLE_SHORT_VERSION_STRING
#define XH_BUNDLE_SHORT_VERSION_STRING [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]
#endif

//build版本号
#ifndef XH_BUNDLE_VERSION_STRING
#define XH_BUNDLE_VERSION_STRING [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]
#endif

//app 版本号 + build版本号
#ifndef XH_APP_VERSION_STRING
#define XH_APP_VERSION_STRING   [NSString stringWithFormat:@"%@ (%@)", XH_BUNDLE_SHORT_VERSION_STRING, XH_BUNDLE_VERSION_STRING]
#endif

//bundleID
#ifndef XH_BUNDLE_IDENTIFIER
#define XH_BUNDLE_IDENTIFIER (NSString *)([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"])
#endif

//设备名
#ifndef XH_DEVICE_MACHINE_NAME
#define XH_DEVICE_MACHINE_NAME (NSString *)(NSStringMachineNameFromCurrentDevice())
#endif

#ifndef XH_SCREEN_SCALE
#define XH_SCREEN_SCALE ([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")] ? [[UIScreen mainScreen] scale] : 1.f)
#endif

#ifndef XH_DEBUG_APP_CONFIG_STRING
#define XH_DEBUG_APP_CONFIG_STRING [NSString stringWithFormat:@"App Version: '%@' System Version: '%@' Machine Name '%@' Bundle Identifier: '%@'", XH_APP_VERSION_STRING, XH_DEVICE_SYSTEM_VERSION, XH_DEVICE_MACHINE_NAME, XH_BUNDLE_IDENTIFIER]
#endif


//检查系统版本
//相同版本
#define SYSTEM_VERSION_EQUAL_TO(__VERSION__) ([[[UIDevice currentDevice] systemVersion] compare:__VERSION__ options:NSNumericSearch] == NSOrderedSame)

//大于该系统版本
#define SYSTEM_VERSION_GREATER_THAN(__VERSION__) ([[[UIDevice currentDevice] systemVersion] compare:__VERSION__ options:NSNumericSearch] == NSOrderedDescending)

//大于等于系统该版本
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(__VERSION__) ([[[UIDevice currentDevice] systemVersion] compare:__VERSION__ options:NSNumericSearch] != NSOrderedAscending)

//小于该系统版本
#define SYSTEM_VERSION_LESS_THAN(__VERSION__) ([[[UIDevice currentDevice] systemVersion] compare:__VERSION__ options:NSNumericSearch] == NSOrderedAscending)

//小于等于系统该版本
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(__VERSION__) ([[[UIDevice currentDevice] systemVersion] compare:__VERSION__ options:NSNumericSearch] != NSOrderedDescending)

///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   6. 图片  UIImage                                                                                //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

//读取本地图片 (文件名,后缀名)
#define XH_LOADIMAGE(__FILENAME__,__EXTENSION__) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:__FILENAME__ ofType:__EXTENSION__]]

//定义UIImage对象 (文件名)
#define XH_IMAGE(__IMGNAME__) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:__IMGNAME__ ofType:nil]]


///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   7. rgb颜色转换 UIColor                                                                            //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

// rgb颜色转换(16进制->10进制)
#define XH_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]

//透明背景色
#ifndef XH_CLEARCOLOR
#define XH_CLEARCOLOR [UIColor clearColor]
#endif

#define XH_RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
#define XH_RGBCOLOR(r,g,b) RGBACOLOR(r,g,b,1.0)

///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   8. 字体 UIFont                                                                                    //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////

//方正黑体简体字体定义
#define XH_FONT(__SIZE__) [UIFont fontWithName:@"FZHTJW--GB1-0" size:__SIZE__]

///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   9. 角度转弧度 弧度转角度                                                                             //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////
#define XH_ANGLE_TO_RADIAN(__ANGLE__) (M_PI * (__ANGLE__) / 180.0)

#define XH_RADIAN_TO_ANGLE(__RADIAN__) (__RADIAN__ * 180.0) / (M_PI)
///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
//   10. 单例 singleton                                                                                 //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////
// .h文件
#define singleton_interface(class) + (instancetype)shared##class;

// .m文件
#define singleton_implementation(class) \
static class *_instance; \
\
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instance = [super allocWithZone:zone]; \
}); \
\
return _instance; \
} \
\
+ (instancetype)shared##class \
{ \
if (_instance == nil) { \
_instance = [[class alloc] init]; \
} \
\
return _instance; \
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                               //
// 11. 其他系统常用宏定义                                                                               //
//                                                                                               //
///////////////////////////////////////////////////////////////////////////////////////////////////
//判断是真机还是模拟器
#if TARGET_OS_IPHONE
//iPhone Device code
#endif

#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator code
#endif


#endif


email:1286090267@qq.com(扣扣)

宏定义文件github地址,下载即可直接使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值