美文网首页
iOS常用宏定义

iOS常用宏定义

作者: 问题饿 | 来源:发表于2017-07-13 16:05 被阅读78次

    这里简单介绍下,经常放在PCH文件下的一些宏定义:
    其中PCH文件使用连接:ios中pch文件的使用

    1.在PCH文件中一般自己按照以下的风格来添加pch文件内容的配置
    //控制日志输出
    #ifdef DEBUG
    
    #   define KPLog(log, ...) NSLog((@"\n%s\n[Line %d]\n"  log), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
    #else
    #   define KPLog(...)
    #endif
    

    这里我是将不同的头文件的引入放在不同的类上面,这样在引入的时候可以知道其类型

    1.1添加常用类的头文件

    //常用类的头文件
    //这里主要是添加一些常用的公共类的头文件,比如说HUD,AFN,SDWebImage等等一些常用的类
    #import "ClassHeader.h"
    

    1.2添加常用宏的头文件

    //常用宏的头文件
    //这里主要是添加一些常用的宏
    #import "MacroHeader.h"
    

    1.3常用网络请求头文件

    //这里主要是添加一些网络请求的时候,定义的一些不同的参数
    //常用网络请求头文件
    #import "InterfaceHead.h"
    
    2.添加常用类
    //AppDelegate
    #import "AppDelegate.h"
    
    #pragma mark - 第三方
    #import "AFNetworking.h"
    //提示框
    #import "MBProgressHUD.h"
    //数据转换
    #import "MJExtension.h"
    //刷新加载
    #import "MJRefresh.h"
    //图片加载
    #import "UIImageView+WebCache.h"
    #import "UIButton+WebCache.h"
    //图片格式
    #import "NSData+ImageContentType.h"
    
    3.添加常用宏
    #pragma mark - 颜色
    //三原色
    #define RGB(R,G,B,A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
    
    // 字体颜色16进制0x
    #define GmColorWith0xColor(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]
    
    //随机色
    #define RandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]
    
    //清除颜色
    #define ClearColor [UIColor clearColor]
    
    #pragma mark - 大小
    //设备物理宽高
    #define KPHeight ([UIScreen mainScreen].bounds.size.height)
    #define KPWidth ([UIScreen mainScreen].bounds.size.width)
    
    //界面宽高
    #define KPScreenViewWidth self.view.frame.size.width
    #define KPScreenViewHeight self.view.frame.size.height
    
    //状态栏高度
    #define STATUS_BAR_HEIGHT 20
    //NavBar高度
    #define NAVIGATION_BAR_HEIGHT 44
    //状态栏 + 导航栏 高度
    #define STATUS_AND_NAVIGATION_HEIGHT ((STATUS_BAR_HEIGHT) + (NAVIGATION_BAR_HEIGHT))
    
    //由角度转换弧度 
    #define DegreesToRadian(x) (M_PI * (x) / 180.0)
    //由弧度转换角度
    #define RadianToDegrees(radian) (radian*180.0)/(M_PI)
    
    #pragma mark - 文件路径
    //Document目录
    #define DocumentPatch [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]
    
    //Caches目录
    #define CachesPatch NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]
    
    //Temp目录
    #define TempPatch NSTemporaryDirectory()
    
    #pragma mark - 其他
    //UserDefaults
    #define kKPUserDefaults [NSUserDefaults standardUserDefaults]
    
    //是否为V以上系统
    #define IOS(V) [[[UIDevice currentDevice] systemVersion] floatValue] >= V
    
    // 系统delegate
    #define SHAppDelegate (AppDelegate *)[UIApplication sharedApplication].delegate
    
    //获取系统时间戳
    #define getCurentTime [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]]
    
    //获取当前语言
    #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
    
    //判断是真机还是模拟器
    #if TARGET_OS_IPHONE`
    //iPhone Device
    #endif
    #if TARGET_IPHONE_SIMULATOR
    //iPhone Simulator
    #endif
    
    4.常用网络请求
    #define MainUrl @"https://www.baidu.com"
    
    #define TestUrl @"https://11.1.1.111"
    
    #pragma mark - 个人服务
    #pragma mark 上传推送ID
    #define UploadIosDeviceId @"Ucenter/uploadIosDeviceId"
    
    #pragma mark 获取服务器地址
    #define GetServerPath @"Ucenter/getServerPath"
    
    5.Block循环引用的定义
    #ifndef weakify
    #if DEBUG
    #if __has_feature(objc_arc)
    #define weakify(object) autoreleasepool{} __weak __typeof__(object) weak##_##object = object;
    #else
    #define weakify(object) autoreleasepool{} __block __typeof__(object) block##_##object = object;
    #endif
    #else
    #if __has_feature(objc_arc)
    #define weakify(object) try{} @finally{} {} __weak __typeof__(object) weak##_##object = object;
    #else
    #define weakify(object) try{} @finally{} {} __block __typeof__(object) block##_##object = object;
    #endif
    #endif
    #endif
    
    #ifndef strongify
    #if DEBUG
    #if __has_feature(objc_arc)
    #define strongify(object) autoreleasepool{} __typeof__(object) object = weak##_##object;
    #else
    #define strongify(object) autoreleasepool{} __typeof__(object) object = block##_##object;
    #endif
    #else
    #if __has_feature(objc_arc)
    #define strongify(object) try{} @finally{} __typeof__(object) object = weak##_##object;
    #else
    #define strongify(object) try{} @finally{} __typeof__(object) object = block##_##object;
    #endif
    #endif
    #endif
    
    使用:
    @weakify(self);
      _newFloorView.closeBlock = ^{
         @strongify(self);
         self.newFloorView.hidden = YES;
         self.showNewFloor = NO;
       };
    
    /*
     非iPhone X :StatusBar 高20px,NavigationBar 高44px,底部TabBar高49px
     iPhone X:StatusBar 高44px,NavigationBar 高44px,底部TabBar高83px
     */
    #define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
    
    
    /**
     iphoneX及后续升级版
    
     @param NO <#NO description#>
     @return <#return value description#>
     */
    #define IsIPhoneXOrUpgrades ([UIScreen mainScreen].bounds.size.height>=812.f?YES : NO)
    
    // 状态栏高度
    #define kStatusBarHeight (IsIPhoneXOrUpgrades ? 44.0f : 20.0f)
    // 导航栏高度
    #define kNavBarHeight 44.0
    // home indicator
    #define kSafeAreaBottomHeight (IsIPhoneXOrUpgrades ? 34.f : 0.f)
    // tabBar高度
    #define kTabBarHeight (kSafeAreaBottomHeight+49)
    //TableView正常开始的位置
    #define kTopHeight (kStatusBarHeight + kNavBarHeight)
    
    
    #define isIPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
    

    相关文章

      网友评论

          本文标题:iOS常用宏定义

          本文链接:https://www.haomeiwen.com/subject/wbowhxtx.html