ios android 宏,iOS-OC中常见的一些宏

/*

1. 颜色

*/

#define PCBRGBColorA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]//RGBA

#define PCBRGBColor(r, g, b) PCBRGBColorA((r), (g), (b), 255)//RGB

#define PCBRandomColor PCBRGBColor(arc4random_uniform(255), arc4random_uniform(255), arc4random_uniform(255))//随机色

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

#define PCBWhiteColor [UIColor whiteColor]

#define PCBBlackColor [UIColor blackColor]

#define PCBDarkGrayColor [UIColor darkGrayColor]

#define PCBLightGrayColor [UIColor lightGrayColor]

#define PCBGrayColor [UIColor grayColor]

#define PCBRedColor [UIColor redColor]

#define PCBGreenColor [UIColor greenColor]

#define PCBBlueColor [UIColor blueColor]

#define PCBCyanColor [UIColor cyanColor]

#define PCBYellowColor [UIColor yellowColor]

#define PCBMagentaColor [UIColor magentaColor]

#define PCBOrangeColor [UIColor orangeColor]

#define PCBPurpleColor [UIColor purpleColor]

#define PCBBrownColor [UIColor brownColor]

#define PCBClearColor [UIColor clearColor]

// PCB常见颜色

#define PCB_BlackColor PCBColorFromRGB(0x333333)

#define PCB_GrayColor PCBColorFromRGB(0x999999)

#define PCB_Gray_BgButtonColor PCBColorFromRGB(0xd1d1d1)

#define PCB_GreenColor PCBColorFromRGB(0x30c1ce)

#define PCB_BgColor PCBColorFromRGB(0xf1f1f1)

#define PCB_LineColor PCBColorFromRGB(0xe5e5e5)

/*

2. 打印

*/

#ifdef DEBUG

#define PCBLog(...) NSLog(@"\n打印结果:\n %s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])

#else

#define PCBLog(...)

#endif

#define PCBLogFunc NSLog(@"方法名:\n %s", __func__);//只打印函数名称

#define PCBLogResponseObject PCBLog(@"%@",responseObject);

#define PCBLogError PCBLog(@"%@",error);

#define PCBNSHomeDirectory PCBLog(@"%@",NSHomeDirectory());

/*

3. 单利

*/

//单例化一个类

#if __has_feature(objc_arc)//ARC

#define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(classname) \

\

+ (classname *)shared##classname;

#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

\

static classname *shared##classname = nil; \

\

+ (classname *)shared##classname \

{ \

static dispatch_once_t pred; \

dispatch_once(&pred, ^{ shared##classname = [[classname alloc] init]; }); \

return shared##classname; \

}

#else//MRC

#define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(classname) \

\

+ (classname *)shared##classname;

#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \

\

static classname *shared##classname = nil; \

\

+ (classname *)shared##classname \

{ \

static dispatch_once_t pred; \

dispatch_once(&pred, ^{ shared##classname = [[classname alloc] init]; }); \

return shared##classname; \

} \

\

- (id)copyWithZone:(NSZone *)zone \

{ \

return self; \

} \

\

- (id)retain \

{ \

return self; \

} \

\

- (NSUInteger)retainCount \

{ \

return NSUIntegerMax; \

} \

\

- (oneway void)release \

{ \

} \

\

- (id)autorelease \

{ \

return self; \

}

#endif

/*

4.字体

*/

/*

#define PCBFontName @"PingFangSC-Medium"

#define PCBSystemFontWithSize(R) [UIFont fontWithName: PCBFontName size: R]

// 固定字体

#define PCBFont(float) PCBSystemFontWithSize(float)

// 可以适配的字体

#define PCBAdaptFont(float) PCBSystemFontWithSize(PCBAdapted_Width(float))

*/

// 字体大小适应

#define PCBFont(float) [UIFont systemFontOfSize:float]

#define PCBBoldFont(float) [UIFont boldSystemFontOfSize:float]

#define PCBFont_13 PCBFont(13)

#define PCBFont_14 PCBFont(14)

#define PCBFont_15 PCBFont(15)

#define PCBFont_17 PCBFont(17)

#define PCBFont_20 PCBFont(20)

/*

5.尺寸 + 版本

*/

/*

iPhone X尺寸问题

分辨率1125*2436 (375*812)

导航栏为 44+44 原来为20+44

底部tabbar 49+34 其余屏幕 49+0

*/

#define IOS11 @available(iOS 11.0, *)

#define IPhoneX ([UIScreen mainScreen].bounds.size.width == 375.0f && [UIScreen mainScreen].bounds.size.height == 812.0f)

// 尺寸

#define PCBScreen_Width ([UIScreen mainScreen].bounds.size.width)

#define PCBScreen_Height ([UIScreen mainScreen].bounds.size.height)

#define PCBStatusBar_Height [[UIApplication sharedApplication] statusBarFrame].size.height

#define PCBNavigationBar_Height self.navigationController.navigationBar.frame.size.height

#define PCBHeight_64 (PCBStatusBar_Height + PCBNavigationBar_Height)

#define PCBTabBar_Height (IPhoneX ? 83.f : 49.f)

#define PCBScreen_Bounds [UIScreen mainScreen].bounds

#define PCBShowView_Height (Screen_Height - PCBHeight_64 - PCBTabBar_Height)

// 适配

// 现在产品设计稿有以iPhone6s为基准的

#define PCBScreenWidthRatio (PCBScreen_Width / 375.0)

#define PCBScreenHeightRatio (PCBScreen_Width / 375.0)//(PCBScreen_Height / 667.0)-适配ihopneX以屏幕宽度比例为准

#define PCBAdapted_Width(x) (ceilf((x) * PCBScreenWidthRatio))

#define PCBAdapted_Height(x) (ceilf((x) * PCBScreenHeightRatio))

#define PCBMarginWidth PCBAdapted_Width(8)

#define PCBHeight PCBAdapted_Height(8)

#define PCBLineViewHeight 0.5

/*

round:如果参数是小数,则求本身的四舍五入。

ceil:如果参数是小数,则求最小的整数但不小于本身.

floor:如果参数是小数,则求最大的整数但不大于本身.

*/

/*

6.缩写

*/

// 获取图片资源(本地)

#define PCBGetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]

#define PCBString(object) [NSString stringWithFormat:@"%@",object]

// 系统一些常用缩写

#define PCBNotificationCenter [NSNotificationCenter defaultCenter]

#define PCBApplication [UIApplication sharedApplication]

#define PCBKeyWindow [UIApplication sharedApplication].keyWindow

#define PCBAppDelegate [UIApplication sharedApplication].delegate

#define UserDefaults [NSUserDefaults standardUserDefaults]

#define PCBSetUserDefaults(value,key) [UserDefaults setObject:value forKey:key];\

[UserDefaults synchronize]

#define PCBGetUserDefaults(key) [UserDefaults objectForKey:key]

#define PCBRemoveUserDefaults(key) [UserDefaults removeObjectForKey:key]

#define PCBNotificationCenter [NSNotificationCenter defaultCenter]

#define PCBNavigationView self.navigationController.view

/*

7. 弱引用/强引用

*/

#define PCBWeakSelf(type) __weak typeof(type) weak##type = type;

#define PCBStrongSelf(type) __strong typeof(type) type = weak##type;

/*

8. 圆角、边框

*/

#define PCBViewBorderRadius(View, Radius, Width, Color)\

\

[View.layer setCornerRadius:(Radius)];\

[View.layer setMasksToBounds:YES];\

[View.layer setBorderWidth:(Width)];\

[View.layer setBorderColor:[Color CGColor]]

/*

9. 提示框

*/

//9.1AlertView

#define PCBAVShow(Message) [[[UIAlertView alloc]initWithTitle:@"提示" message:Message delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil, nil] show]

//9.2UIAlertController的宏定义

//参数中的 MESSAGE是提示内容, PCBVC是UIViewController就是你当前操作的页面,调用时直接传递 self

#define PCBACShow(Message,PCBVC) \

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"温馨提示" message:Message preferredStyle:UIAlertControllerStyleAlert]; \

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]; \

[alertController addAction:okAction]; \

[PCBVC presentViewController:alertController animated:YES completion:nil];

/*

10. 判断字符串、数组、字典、对象为空

*/

//字符串是否为空

#define PCBStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )

//数组是否为空

#define PCBArrayIsEmpty(array) ((array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0) ? YES : NO)

//字典是否为空

#define PCBDictIsEmpty(dic) ((dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0) ? YES : NO)

//是否是空对象

#define PCBObjectIsEmpty(_object) ((_object == nil \

|| [_object isKindOfClass:[NSNull class]] \

|| ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) \

|| ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0)) ? YES : NO)

/*

11. 获取一些路径

*/

//获取沙盒Document路径

#define PCBDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]

//获取沙盒temp路径

#define PCBTempPath NSTemporaryDirectory()

//获取沙盒Cache路径

#define PCBCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

//Library/Caches 文件路径

#define PCBFilePath ([[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil])

#endif /* AppMacros_h */

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值