扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在了解宏定义的使用前,需要说明一下合理使用宏定义确实可以提高程序的可读性,但是滥用宏定义,也会带来一些害处。这里对宏定义使用的优缺点做个简单的说明:
创新互联建站网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了成都网站建设、网站制作,成都网站设计,一元广告,成都做网站选创新互联建站,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。
宏可以分为两类,一类称为对象宏,一类称为函数宏
对象宏可以定义一个量,如圆周率:
通过宏可以拿到这个变量:
打印结果:
但是看一下另外一种情况:
结果如下:
为什么*2的结果不是140,是110呢?
因为前面提到过了,宏只是简单地替换,所以 2的时候,实际是30+40 2
函数宏的作用就类似于一个函数一样。如:
其结果如下:
再来看另外一个例子:
这里需要注意一个问题,如果宏太长,可以使用"/"进行换行
这样便是大大增加了可读性
在OC中使用字符串都需要使用@"",如果想直接使用字符串可以添加一个"#":
再看一个关于##的操作符,连接符##用来将两个token连接为一个token:
提到可变参数宏,其实能够想到的,最多的便是NSLog。可变参数,可以利用 VA__ARGS进行读取:
打印结果如下:
系统宏汇集
__FILE__
当前文件所在目录
__DATE__
“替代文字”是一个含有编译日期的字符串字面值,日期格式为“mm dd yyyy”(例如:“Mar 19 2006”)。如果日期小于10日,就在日的前面放一个空格符。NSLog(@"_DATE_=%s",__DATE__);
__FUNCTION__
当前函数名称
__LINE__
当前语句在源文件中的行数
__TIME__
此字符串字面值包含编译时间,格式为“hh:mm:ss”(范例:“08:00:59”)。
__STDC__
整数常量1,表示此编译器遵循ISOC标准。
__STDC_VERSION__
如何实现复合C89整部1,则这个宏的值为19940SL;如果实现符合C99,则这个宏的值为199901L;否则数值是未定义
__STDC_EOBTED__
(C99)实现为宿主实现时为1,实现为独立实现为0
__STDC_IEC_559__
(C99)浮点数实现复合IBC 60559标准时定义为1,否者数值是未定义
__STDC_IEC_559_COMPLEX__
(C99)复数运算实现复合IBC 60559标准时定义为1,否者数值是未定义
__STDC_ISO_10646__
(C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO 10646标准及其指定年月的修订补充,否则数值未定义
hexadecimal code(十六进制编码),简写为 hex code。Hexadecimals (或 hex)是十六进制数字,这意味着它使用十六个不同的符号。
在 CSS 中,我们可以使用 6 位十六进制数字来表示颜色,每 2 位分别表示红色 (R)、绿色 (G) 和蓝色 (B) 成分。例如,#000000 是黑色,同时也是可能的数值中最小的。#FF0000是红色, #00FF00是绿色, #0000FF是蓝色。
你可能会疑惑为什么我们使用6位数来表示一种颜色而不是只用一位或二位,答案是使用6位数可提供给我们巨大数量的颜色变化。
会有多少种可能的颜色?16 个值和 6 个位置意味着我们有 16 的 6 次方,或者说超过 1600 万种可能的颜色。
在实际开发当中,我们会遇到各种设置颜色的场景。有通过RGB三原色设置的、有通过服务器返回十六进制字符串设置的、有设置颜色同时还设置透明度的、有本地使用十六进制设置的,本文将iOS中常用RGB十六进制颜色设置的宏定义及相关分类方法做了一个总结。
RGB
十六进制颜色 Hex
颜色设置宏定义的使用 :
分类的小括号中有分类名字
分类特点:
UIColor + Addition.h 声明
UIColor + Addition.m 实现
在使用的位置导入头文件,或者直接放到pch文件中。
设置RGB颜色
获取颜色的RGB值
本地设置十六进制颜色
字符串设置十六进制颜色
我是楚简约,感谢您的阅读,
喜欢就点个赞呗,“❤喜欢”,
鼓励一下,你在看,我就继续写~
非用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~
昨天在给label切圆角时发现无论怎么调整,在边上都会有一条黑线。
于是乎翻看了一些帖子,试了很多方法,最多的方案是ULabel设置可变宽度时,有小数。只需将宽度转成整型数据即可。但是这样做的话就改变了本来的宽度,UI不会同意,自己心里也有点小疙瘩。最后我还是弃用了上面的方案。那么接下来就是要自己想办法了。
一般情况下对label切圆角,label一定会有自己的背景色,于是我尝试了一下,设置layer的borderWidth为2(因为黑线的宽度小于1,设置2可以完全覆盖掉黑线).然后设置borderColor为label的背景色,发现问题完美解决了。
因为在项目开发中,经常要用到给控件切圆角,下面给大家分享下宏定义来设置view的圆角和边框,以后要切圆角直接调用宏就可以了。想要了解更多常用的宏定义可以看我的另外一篇帖子 iOS常用的宏定义 ,里面有我整理的一些较为常用的宏定义,希望能帮到各位看官。
//设置 view 圆角和边框
#define CornerViewBorderRadius(View, Radius, Width, BorderColor)\
\
[View.layer setCornerRadius:(Radius)];\
[View.layer setMasksToBounds:YES];\
[View.layer setBorderWidth:(Width)];\
[View.layer setBorderColor:[BorderColor CGColor]]
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流