使用下面这首古诗作为例子吧:
直接显示这首古诗的时候,结果是这样的:
下面,我们就一点点的添加文本的属性:
首先,创建一个NSMutableAttributedString:
这里的NSRange在下面的设置属性的时候要用到,就是你需要特殊添加属性的字符串,当然,这个字符串需要包含在整个字符串string里的当然,如果你需要为整个字符串添加属性,就不需要这个属性了,可以在创建添加属性:
调整字间距:
设置字体:
设置文本颜色:
设置段落样式:
设置文本背景色:
设置文本描边颜色,需要和NSStrokeWidthAttributeName设置描边宽度,这样就能使文字空心.
如果数值设置为负数,就没有空心字的效果:
添加删除线
添加下划线:
设置阴影
文本排版方式
在 iOS 中,总是使用横排文本,0 以外的值都未定义,即其他值无效果。
设置文本斜体
设置文本扁平化
以上便是常用的文本设置,以备使用时查找
如有不正确的地方,还请指正
下面,就开始为你的文本添加丰富的attributes吧!!!
attribute 是一个编译属性,用于向编译器描述特殊的标识、错误检查或高级优化。它是GNU C特色之一,系统中有许多地方使用到。 attribute 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute)等。
attribute 格式
其位置约束为:放于声明的尾部“;”之前。
函数属性可以帮助开发者把一些特性添加到函数声明中,从而可以使编译器在错误检查方面的功能更强大。
1. format
语法为 attribute ((format( NSString , F, A))),可以给被声明的函数加上类似printf或者scanf的特征,它可以使编译器检查函数声明和函数实际调用参数之间的格式化字符串是否匹配。format (archetype, m, n),第一个参数传递archetype指定为哪种类型,string-index指定格式化字符串的位置,n指定可变参数检查开始的位置。
在Objective-C 中通过使用 NSString 格式达到同样的效果,就像在 NSString +stringWithFormat: 和 NSLog() 里使用字符串格式一样
在使用NSLog函数进行输出时,如果我们传入的可变参数没有在格式化字符串中使用,编译器会提示警告,如下:
2.constructor与destructor
constructor属性可以指定函数在main函数执行之前进行调用,与之对应destructor可以指定某个函数在main函数执行结束之后再执行。这是一种非常强大的机制,在实际应用中也非常频繁,例如对以一个拥有模块化和路由功能的应用程序,可以通过这种方式来自动化的进行路由注册(无需手动调用),需要注意,constructor与destructor属性都可以设置一个优先级参数,优先级高的函数会先执行(0-100的优先级为系统保留)
3. unavailable
告诉编译器该方法不可用,如果强行调用编译器会提示错误。比如某个类在构造的时候不想直接通过init来初始化,只能通过特定的初始化方法()比如单例,就可以将init方法标记为unavailable
实际上unavailable后面可以跟参数,显示一些信息,如:
4.objc_root_class
表示这个类是一个根类(基类),比如NSObject,NSProxy.
5.overloadable
用于c语言函数,可以定义若干个函数名相同,但参数不同的方法,调用时编译器会自动根据参数选择函数原型:
6. objc_subclassing_restricted
指明当前类型不能有子类,相当于final关键字,语法为 attribute ((objc_subclassing_restricted))。例如:
7. objc_requires_super
表示子类重写当前类的方法时,必须要调用super函数,否则会有警告。语法为 __attribute__((objc_requires_super)) ,例如:
8.objc_designated_initializer
指定内部实现的初始化方法,系统宏NS_DESIGNATED_INITIALIZER展开即为该指令,语法为 __attribute__((objc_designated_initializer)) 。例如:
当一个类存在方法带有NS_DESIGNATED_INITIALIZER属性时,它的NS_DESIGNATED_INITIALIZER方法必须调用super的NS_DESIGNATED_INITIALIZER方法。它的其他方法(非NS_DESIGNATED_INITIALIZER)只能调用self的方法初始化。
http://fighting300.com/2016/06/12/iOS-attribute/
https://www.jianshu.com/p/965f6f903114
https://www.jianshu.com/p/29eb7b5c8b2d
https://cloud.tencent.com/developer/article/1622209
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)