当前位置: 首页 > 编程日记 > 正文

iOS各种宏定义

#ifndef MacroDefinition_h

#define MacroDefinition_h




//************************ 获取设备屏幕尺寸**********************************************


//宽度

#define SCREEN_WIDTH      [UIScreen mainScreen].bounds.size.width

//高度

#define SCREENH_HEIGHT    [UIScreen mainScreen].bounds.size.height

//大小

#define SCREEN_SIZE [UIScreen mainScreen].bounds.size


//************************ 获取设备屏幕尺寸**********************************************




//************************ 试图的最大(小)X,Y 试图 的 高度和宽度****************************

//试图的最大(小)X,Y 试图 的 高度和宽度

#define GMXX(view) CGRectGetMaxX((view).frame)

#define GMXY(view) CGRectGetMaxY((view).frame)

#define GMIX(view) CGRectGetMinX((view).frame)

#define GMIY(view) CGRectGetMinY((view).frame)

#define GVH(view)  CGRectGetHeight((view).frame)

#define GVW(view)  CGRectGetWidth((view).frame)

//************************ 试图的最大(小)X,Y 试图 的 高度和宽度****************************




//************************ 设备大小*****************************************************

//最大的屏幕长度

#define SCREEN_MAX_LENGTH       (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))

//最小屏幕长度

#define SCREEN_MIN_LENGTH       (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))

//iphone4/4s最大屏幕长度

#define ISIPHONE4_OR_LESS       (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)

//iphone5最大屏幕长度

#define ISIPHONE5               (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)

//iphone6最大屏幕长度

#define ISIPHONE6               (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)

//iphone6P最大屏幕长度

#define ISIPHONE6P              (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)


#define ISIOS7_OR_LATER     ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.99)

#define IS_OS_8_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)


#pragma mark - ViewSize

#define     ScreenWidth         (ISIPHONE6P? 414:(ISIPHONE6? 375:320))

#define     ScreenHeight        (ISIPHONE6P? 736:(ISIPHONE6? 667:(ISIPHONE5? 568:480)))

#define     NavHeight           44

#define     StateHeight         20


//************************ 设备大小*****************************************************




//************************ 支持横屏宏定义************************************************


//横屏的宽度

#define SCREEN_CROSS_WIDTH ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)]?[UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale:[UIScreen mainScreen].bounds.size.width)

//横屏的高度

#define SCREENH_CROSS_HEIGHT ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)]?[UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale:[UIScreen mainScreen].bounds.size.height)

//横屏的大小

#define SCREEN_CROSS_SIZE ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)]?CGSizeMake([UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale):[UIScreen mainScreen].bounds.size)


//************************ 支持横屏宏定义************************************************




//************************ 判断当前的设备/系统版本*****************************************


//判断是否为iPhone

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

//判断是否为iPad

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

//判断是否为ipod

#define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])

// 判断是否为 iPhone 5SE

#define iPhone5SE [[UIScreen mainScreen] bounds].size.width == 320.0f && [[UIScreen mainScreen] bounds].size.height == 568.0f

// 判断是否为iPhone 6/6s

#define iPhone6_6s [[UIScreen mainScreen] bounds].size.width == 375.0f && [[UIScreen mainScreen] bounds].size.height == 667.0f

// 判断是否为iPhone 6Plus/6sPlus

#define iPhone6Plus_6sPlus [[UIScreen mainScreen] bounds].size.width == 414.0f && [[UIScreen mainScreen] bounds].size.height == 736.0f

//获取系统版本

#define IOS_SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]

//判断 iOS 8 或更高的系统版本

#define IOS_VERSION_8_OR_LATER (([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0)? (YES):(NO))


//************************ 判断当前的设备/系统版本*****************************************




//************************ 判断是真机还是模拟器********************************************


#if TARGET_OS_IPHONE

//iPhone Device

#endif

#if TARGET_IPHONE_SIMULATOR

//iPhone Simulator

#endif


//************************ 判断是真机还是模拟器********************************************




//************************ 获取通知中心**************************************************


#define LFPNotificationCenter [NSNotificationCenter defaultCenter]


//************************ 获取通知中心**************************************************



//************************ 设置颜色******************************************************


//随机RGB颜色

#define LFPRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]


//设置RGB颜色

#define RGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]


//设置RGBA颜色

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


// rgb颜色转换(16进制->10进制)

#define RGB(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]


// clear背景颜色(清除背景色)

#define ClearColor     [UIColor clearColor]

//红色背景色

#define RED_Color      [UIColor redColor]

//绿色背景色

#define GREEN_Color    [UIColor greenColor]

//黑色背景色

#define BLACK_Color    [UIColor blackColor]

//白色背景色

#define WHITE_Color    [UIColor whiteColor]

//灰色背景色

#define GRAY_Color     [UIColor grayColor]

//深灰色

#define DARK_GRAY      [UIColor darkGrayColor]

//浅灰色

#define LIGHT_GRAY     [UIColor lightGrayColor]

//青色

#define CYAN_GRAY      [UIColor cyanColor]

//黄色

#define YELLOW_GRAY    [UIColor yellowColor]

//品红色

#define MAGENTA_GRAY   [UIColor magentaColor]

//橙色

#define ORANGE_GRAY    [UIColor orangeColor]

//紫色

#define PURPLE_GRAY    [UIColor purpleColor]

//布朗色

#define BROWN_GRAY     [UIColor brownColor]

//蓝色

#define BLUE_GRAY     [UIColor blueColor]


//************************ 设置颜色******************************************************




//************************ NSUserDefaults 实例化 取值************************************


#define USERDEFAULT [NSUserDefaults standardUserDefaults]


#define USERDEFAULT_value(key) [[NSUserDefaults standardUserDefaults] valueForKey:key]


#define USERDEFAULT_object(key) [[NSUserDefaults standardUserDefaults] objectForKey:key]


#define USERDEFAULT_BOOL(key) [[NSUserDefaults standardUserDefaults] boolForKey:key]


#define USERDEFAULT_integer(key) [[NSUserDefaults standardUserDefaults] integerForKey:key]


#define USERDEFAULT_int(key) [[[NSUserDefaults standardUserDefaults] objectForKey:key] intValue]


//************************ NSUserDefaults 实例化 取值************************************




//************************ NSUserDefaults 实例化 存值************************************


//NSUserDefaults 实例化 存值

// object

#define USERDEFAULT_SET_value(_value_,_key_) [[NSUserDefaults standardUserDefaults] setValue:_value_ forKey:_key_];\

[[NSUserDefaults standardUserDefaults] synchronize]


#define USERDEFAULT_SET_object(_object_,_key_) [[NSUserDefaults standardUserDefaults] setObject:_object_ forKey:_key_];\

[[NSUserDefaults standardUserDefaults] synchronize]


// int

#define USERDEFAULT_SET_int(_int_,_key_) NSString *uIntString=[NSString stringWithFormat:@"%d",_int_];\

[[NSUserDefaults standardUserDefaults] setObject:uIntString forKey:_key_];\

[[NSUserDefaults standardUserDefaults] synchronize]


//float

#define USERDEFAULT_SET_float(_float_,_key_) NSString *uFloatString=[NSString stringWithFormat:@"%f",_float_];\

[[NSUserDefaults standardUserDefaults] setObject:uFloatString forKey:_key_];\

[[NSUserDefaults standardUserDefaults] synchronize]


#define USERDEFAULT_SET_bool(_bool_,_key_)   [[NSUserDefaults standardUserDefaults]setBool:_bool_ forKey:_key_];\

[[NSUserDefaults standardUserDefaults] synchronize];


//************************ NSUserDefaults 实例化 存值************************************




//************************ 自定义高效率的 NSLog*******************************************


#if DEBUG

#define NSLog(FORMAT, ...) fprintf(stderr,"---[方法名:%s]\n---[行号:%d]\n---打印内容:\n%s\n",__FUNCTION__, __LINE__,[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif


//************************ 自定义高效率的 NSLog*******************************************



/*

 字体

 */

#define     Font(F)             [UIFont systemFontOfSize:(F)]


/*

 弱引用/强引用

 */

//弱引用

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

//强引用

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




//************************ 设置 view 圆角和边框*******************************************

/*

 设置 view 圆角和边框

 */

#define ViewBorderRadius(View, Radius, Width, Color,Bounds)\

\

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

[View.layer setMasksToBounds:(Bounds)];\

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

[View.layer setBorderColor:[Color CGColor]]


//************************ 设置 view 圆角和边框*******************************************




//************************  由角度转换弧度 由弧度转换角度***********************************


#define DegreesToRadian(x) (M_PI * (x) / 180.0)

#define RadianToDegrees(radian) (radian*180.0)/(M_PI)


//************************  由角度转换弧度 由弧度转换角度***********************************




//************************  获取图片资源*************************************************

//获取图片资源

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


//************************  获取图片资源*************************************************



//************************  获取当前语言与地区********************************************

//获取当前语言与地区

#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])


//************************  获取当前语言与地区********************************************



//************************  GCD 的宏定义************************************************


//GCD - 一次性执行

#define kDISPATCH_ONCE_BLOCK(onceBlock) static dispatch_once_t onceToken; dispatch_once(&onceToken, onceBlock);

//GCD - 在Main线程上运行

#define kDISPATCH_MAIN_THREAD(mainQueueBlock) dispatch_async(dispatch_get_main_queue(), mainQueueBlock);

//GCD - 开启异步线程

#define kDISPATCH_GLOBAL_QUEUE_DEFAULT(globalQueueBlock) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), globalQueueBlocl);


//************************  GCD 的宏定义************************************************








#endif /* MacroDefinition_h */



#ifndef PrefixHeader_pch

#define PrefixHeader_pch


/*

 全局宏定义

 */

#import "MacroDefinition.h"







#endif /* PrefixHeader_pch */













相关文章:

开源库libuuid简介及使用

libuuid是一个开源的用于生成UUID(Universally Unique Identifier&#xff0c;通用唯一标识符)的库&#xff0c;它的源码可从https://sourceforge.net/projects/libuuid/ 下载&#xff0c;最新版本为1.0.3&#xff0c;更新于2013年4月27日&#xff0c;此库仅支持在类Linux下编译…

深度学习会议论文不好找?这个ConfTube网站全都有

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅 出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

Java用for循环Map

为什么80%的码农都做不了架构师&#xff1f;>>> 根据JDK5的新特性,用For循环Map,例如循环Map的Key for(String dataKey : paraMap.keySet()) { System.out.println(dataKey ); } 注意的是,paraMap 是怎么样定义的,如果是简单的Map paraMap new …

iOS 应用发布到AppStore流程

iOS开发者&#xff0c;把开发出来的App上传到App Store是必须的。下面就来详细介绍下具体流程。 方法/步骤 1打开苹果开发者中心 打开后点击&#xff1a;Member Center 2如果你的电脑没有保存密码&#xff0c;则会提示你输入开发者帐号和密码&#xff0c;因为我的电脑已经保存了…

FFmpeg中编码类型为rawvideo无须解码直接显示测试代码

在 https://blog.csdn.net/fengbingchun/article/details/93975325 中介绍过通过FFmpeg可以直接获取usb视频流并解码显示的测试代码&#xff0c;当时通过usb获取到的视频流编码类型为AV_CODEC_ID_RAWVIDEO&#xff0c;像素格式为AV_PIX_FMT_YUYV422&#xff0c;其实编码类型为r…

一场高质量的技术盛会怎样炼成?「2019中国大数据技术大会」蓄势待发,还不快上车?...

2019年12月&#xff0c;一场轰动国内产业界、学术界、科研界及投资领域的顶级科技盛会即将拉开帷幕&#xff0c;它涵盖大数据、人工智能、云计算、AIoT、金融科技、智能制造等十几个前沿领域的热门话题。在过去十二年里&#xff0c;这场盛会从最初仅 60 余人参加的技术沙龙到如…

融合应用11.1.8安装,一步一步的引导

融合应用11.1.8安装,一步一步的引导 融合应用11.1.8 安装并不是简单的与电子商务套件11 i / R12安装。 所以我们需要安装划分为许多步骤。 请注意,11.1.8 11.1.7总统发布供应是几乎相同的。 在同一时间的步骤和一些组件11.1.6和11.1.5相比有所不同。 这里我们有实际使用同一个…

FFmpeg中一个线程获取视频流一个线程执行scale测试代码

在https://blog.csdn.net/fengbingchun/article/details/94712986 中介绍过如果usb视频流编码类型为rawvideo则无需进行解码&#xff0c;可直接通过av_read_frame获取视频流然后再通过sws_scale进行像素格式转换&#xff0c;当在高分辨率情况下&#xff0c;有时达不到实时显示&…

医疗影像处理:去除医疗影像中背景的影响2D/3D【numpy-code】| CSDN博文精选

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | chestnut--来源 | CSDN博客在医疗影像中特别是CT影像&#xff0c;包含大量的背景&#xff0c;在进行器官分割时&#xff0c;首先去除背景对分割的效果有很好的提升。本博客使用Python处理医疗影像并去除背景的影像。使…

iOS APP提交上架最新流程

iOS APP提交上架最新流程 反复提交的过程中对上架流程熟悉了好多&#xff0c;写篇帖子送给同为菜鸟的你&#xff0c;如果里面有很菜的东西&#xff0c;大牛请自动忽略&#xff0c;毕竟这也是还为菜鸟的我的备忘录呢&#xff01; 首先得描述一下各个证书的定位&#xff0c;作…

Spring mvc Data Redis—Pub/Sub(附Web项目源码)

一、发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候&#xff0c;我们称这个客户端为发布者(publisher)。 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候&#xff0c;我们称这个客户端为订阅者(subscriber)。 为了解耦发布者(publish…

iOS分析崩溃日志

前言 iOS分析定位崩溃问题有很多种方式&#xff0c;但是发布到AppStore的应用如果崩溃了&#xff0c;我们该怎么办呢&#xff1f;通常我们都会在系统中接入统计系统&#xff0c;在系统崩溃的时候记录下崩溃日志&#xff0c;下次启动时将日志发送到服务端&#xff0c;比较好的第…

海思3559A上编译FFmpeg源码操作步骤

1. 从https://github.com/FFmpeg/FFmpeg/releases 下载你需要的版本&#xff1b; 2. 因为ffmpeg编译选项较多&#xff0c;为了更方便的了解有哪些选项&#xff0c;可将编译选项写入到一个文本文件configure_help.txt中&#xff0c;执行&#xff1a; ./configure --help > …

不到顶会现场也能听论文讲解?这个视频集合网站值得收藏

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

通过cat /proc/cpuinfo看处理器特点

2019独角兽企业重金招聘Python工程师标准>>> 在我的服务器上执行cat /proc/cpuinfo得到如下信息&#xff08;摘录最后一项&#xff0c;从0-23共24项&#xff09;&#xff1a; processor: 23&#xff1a;超线程技术的虚拟逻辑核第24个 vendor_id: GenuineIntel&#…

2016cocoapods安装流程及使用

一&#xff1a;参考安装流程&#xff1a;http://blog.csdn.NET/showhilllee/article/details/38398119/。 二&#xff1a;我的安装步骤。 1:安装cocoapods需要ruby&#xff0c;先查看ruby环境是不是最新版本。如果不是最新版本&#xff0c;需要先升级到最新版本。在终端输入以下…

FFmpeg中拉取rtsp视频流并缩放显示测试代码

之前在https://blog.csdn.net/fengbingchun/article/details/92198857中给出过仅拉取rtsp视频流的测试代码&#xff0c;这里在此代码的基础上进行扩充&#xff0c;包括设置使用多线程进行解码&#xff0c;使用sws_scale函数进行图像格式转换和缩放&#xff0c;并通过OpenCV进行…

全面分析阿里数据中台,小白也能看懂 | CSDN原力计划

扫码参与CSDN“原力计划”作者 | yuanziok来源 | CSDN原力计划获奖作品数据中台被誉为大数据的下一站&#xff0c;由阿里兴起&#xff0c;核心思想是数据共享&#xff0c;2015年阿里提出“大中台&#xff0c;小前台”的策略。2018 年因为“腾讯数据中台论”&#xff0c;中台再度…

【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现

批处理是使GPU进行高效绘制的一种技术手段&#xff0c;也是整个渲染流程中最核心的技术&#xff0c;到目前为止我们并没有使用到这种技术手段&#xff0c;下面我们看看我们现在的渲染机制。 先想一想我们最开始是怎么向GPU绘制一幅图像的&#xff0c;可以回头查看Stage3D学习笔…

MBProgressHUD 使用详解

MBProgressHUD是一个显示HUD窗口的第三方类库&#xff0c;用于在执行一些后台任务时&#xff0c;在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口。我想最多是应用在加载网络数据的时候。其实苹果官方自己有一个带有此功能的类UIProgressHUD&#xff0c;只…

V4L2获取usb视频流测试代码

Video4Linux2(Video for Linux Two, 简称V4L2)是Linux中关于视频设备的驱动框架&#xff0c;为上层访问底层的视频设备提供统一接口。V4L2主要支持三类设备&#xff1a;视频输入输出设备、VBI设备和Radio设备&#xff0c;分别会在/dev目录下产生videoX、vbiX和radioX设备节点&a…

深度学习渐趋冷静,为何图形计算却逆势反涨?

不知不觉&#xff0c;2019 年的进度条已经快撑不住了 ▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 88%。就像这个进度条一样&#xff0c;人工智能的发展也绝不是一蹴而就的事&#xff0c;而是一步一个脚印逐渐发展&#xff0c;最后达成某个目标。近年来&#xff0c;深度学习领域的技术发展…

数字图像处理课设

2019独角兽企业重金招聘Python工程师标准>>> 对于整个窗体的设计&#xff0c;菜单组件&#xff08;MenuStrip)和工具条&#xff08;ToolStrip&#xff09;来添加相应的功能事件当然还有右击鼠标就能弹出相应的属性框&#xff0c;也是使用了叫contextMenuStrip的组件…

Swift3.0带来的变化汇总

var string "Hello-Swift" //获取某个下标后一个下标对应的字符 char"e" //swift2.2 //var char string[startIndex.successor()] //swift3.0 var char string[string.index(after: startIndex)] //获取某个下标前一个下标对应的字符 char2 "t&qu…

通过配置NFS使Ubuntu和海思3559A板子共享目录

之前在Ubuntu和海思3559A板子之间来回拷贝文件都是用的scp命令&#xff0c;不是很方便&#xff0c;这里通过配置NFS来实现它们之间共享目录&#xff0c;操作步骤如下&#xff1a; 1. 在Ubuntu上安装NFS&#xff0c;执行以下命令&#xff0c;执行结果如下&#xff1a; sudo ap…

22w+的人选择了这款蓝牙耳机

01现在有两个电子产品&#xff0c;应该是你们现在必有的&#xff0c;手机和电脑。但还有一样不可缺少的电子产品&#xff0c;那就是耳机。不管喜不喜欢带&#xff0c;反正你手里肯定有一个&#xff0c;应该没人不认可我说的这个话吧。反正我去哪都会带着耳机&#xff0c;听不听…

自定义数字格式字符串输出示例

自定义数字格式字符串输出示例 MSDN 下表阐释了通过给特定数据类型和值应用某些自定义数字格式字符串来创建的输出。输出是通过使用 ToString 方法和美国英语 (en-US) 区域性生成的。 “格式字符串”列指示格式字符串&#xff0c;“数据类型”列指示所用的数据类型&#xff0c;…

海思3559A上编译LIVE555源码操作步骤

1. 从http://www.live555.com/liveMedia/public/ 下载live.2019.06.28.tar.gz&#xff0c;并解压缩&#xff1b; 2. 生成静态库&#xff0c;拷贝一份config.armlinux&#xff0c;取名为config.hi3559a&#xff0c;修改后的内容如下: CROSS_COMPILE? /opt/hisi-linux/x86-ar…

基于海康机器视觉算法平台的对位贴合项目个人理解 | CSDN原力计划

扫码参与CSDN“原力计划”作者 | 果汁分你一半哈哈来源 | CSDN原力计划获奖作品都说“纸上得来终觉浅&#xff0c;绝知此事要躬行”&#xff0c;可惜咱没这条件呀&#xff0c;没项目咱也不能干坐着呀&#xff0c;那咱发挥主观能动性&#xff0c;咱不是学机械的么&#xff0c;还…

解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

swift中开发选择图片上传&#xff0c;会使用到Tap Gesture Recognizer控件&#xff0c;对应 UITapGestureRecognizer API&#xff0c;以下是代码示例&#xff08;取自IOS developer library&#xff09;&#xff1a; IBAction func selectImageFromPhotoLibrary(_ sender: UIT…