iOS 中的 Attribute

来源:互联网 发布:新版linux视频教程 编辑:程序博客网 时间:2024/06/06 00:01

NSFontAttributeName(字体)

该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。

NSParagraphStyleAttributeName(段落)

该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的defaultParagraphStyle 方法返回的默认段落属性。

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];paragraph.alignment = NSTextAlignmentCenter;

NSForegroundColorAttributeName(字体颜色)

该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。

// NSForegroundColorAttributeName NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor redColor] };NSDictionary *attrDict2 = @{ NSForegroundColorAttributeName: [UIColor blueColor] };NSDictionary *attrDict3 = @{ NSForegroundColorAttributeName: [UIColor orangeColor] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

注意:
NSForegroundColorAttributeName 设置的颜色与 UILabel 的 textColor 属性设置的颜色在地位上是相等的,与 NSBackgroundColorAttributeName 地位上也相等,谁最后赋值,最终显示的就是谁的颜色,但是textColor属性可以与 NSBackgroundColorAttributeName 属性可叠加。

NSBackgroundColorAttributeName(字体背景色)

该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。

NSLigatureAttributeName(连字符)

该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。

NSString *ligatureStr = @"flush";NSDictionary *attrDict1 = @{ NSLigatureAttributeName: [NSNumber numberWithInt: 0], NSFontAttributeName: [UIFont fontWithName: @"futura" size: 30] };_label01.attributedText = [[NSAttributedString alloc] initWithString: ligatureStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSLigatureAttributeName: @(1), NSFontAttributeName: [UIFont fontWithName: @"futura" size: 30]                              };_label02.attributedText = [[NSAttributedString alloc] initWithString: ligatureStr attributes: attrDict2];

由于要展示连体字符,所以将前面使用的带有中文的字符串换成 flush

NSLigatureAttributeName的取值为NSNumber对象,所以不能直接将一个整数值赋给它,创建 NSNumber 对象的方法有很多,或者可以简写成 @(int)

注意观察字母f和l之间的变化。
感觉连写就是一个艺术字功能,当字符f和l组合使用组合符号(所谓的字形(glyph))绘制时,看起来确实更加美观。但是并非所有的字符之间都有组合符号,事实上,只有某些字体中得某些字符的组合(如字符f和l,字符f和i等)才具有美观的组合符号。

NSKernAttributeName(字间距)

NSKernAttributeName 设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄

NSDictionary *attrDict1 = @{ NSKernAttributeName: @(-3),  NSFontAttributeName: [UIFont systemFontOfSize: 20]                               };  _label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSKernAttributeName: @(0),  NSFontAttributeName: [UIFont systemFontOfSize: 20]                               };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSKernAttributeName: @(10), NSFontAttributeName: [UIFont systemFontOfSize: 20]                               };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

NSStrikethroughStyleAttributeName(删除线)

NSStrikethroughStyleAttributeName 设置删除线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值:

  • NSUnderlineStyleNone 不设置删除线
  • NSUnderlineStyleSingle 设置删除线为细单实线
  • NSUnderlineStyleThick 设置删除线为粗单实线
  • NSUnderlineStyleDouble 设置删除线为细双实线

默认值是NSUnderlineStyleNone。



NSDictionary *attrDict1 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleSingle),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleThick),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleDouble),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

注意:

  • 虽然使用了枚举常量,但是枚举常量的本质仍为整数,所以同样必须先转化为 NSNumber 才能使用

  • 删除线和下划线使用相同的枚举常量作为其属性值

  • 目前iOS中只有上面列出的4中效果,虽然我们能够在头文件中发现其他更多的取值,但是使用后没有任何效果

可以看出,中文和英文删除线的位置有所不同

另外,删除线属性取值除了上面的4种外,其实还可以取其他整数值,有兴趣的可以自行试验,取值为 0 - 7时,效果为单实线,随着值得增加,单实线逐渐变粗,取值为 9 - 15时,效果为双实线,取值越大,双实线越粗。

NSDictionary *attrDict1 = @{ NSStrikethroughStyleAttributeName: @(1),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSStrikethroughStyleAttributeName: @(3),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSStrikethroughStyleAttributeName: @(7),                             NSFontAttributeName: [UIFont systemFontOfSize:20] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

NSStrikethroughColorAttributeName

NSStrikethroughColorAttributeName 设置删除线颜色,取值为 UIColor 对象,默认值为黑色

NSDictionary *attrDict1 = @{ NSStrikethroughColorAttributeName: [UIColor blueColor],                               NSStrikethroughStyleAttributeName: @(1),                               NSFontAttributeName: [UIFont systemFontOfSize:20] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSStrikethroughColorAttributeName: [UIColor orangeColor],                               NSStrikethroughStyleAttributeName: @(3),                               NSFontAttributeName: [UIFont systemFontOfSize:20] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSStrikethroughColorAttributeName: [UIColor greenColor],                               NSStrikethroughStyleAttributeName: @(7),                               NSFontAttributeName: [UIFont systemFontOfSize:20] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

NSUnderlineStyleAttributeName(下划线)

该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。

下划线除了线条位置和删除线不同外,其他的都可以完全参照删除线设置。



NSUnderlineColorAttributeName

NSUnderlineColorAttributeName 设置下划线颜色,取值为 UIColor 对象,默认值为黑色

NSDictionary *attrDict1 = @{ NSUnderlineColorAttributeName: [UIColor blueColor],                                NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle),                                NSFontAttributeName: [UIFont systemFontOfSize:20] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSUnderlineColorAttributeName: [UIColor orangeColor],                                NSUnderlineStyleAttributeName: @(NSUnderlineStyleThick),                                NSFontAttributeName: [UIFont systemFontOfSize:20] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSUnderlineColorAttributeName: [UIColor greenColor],                                NSUnderlineStyleAttributeName: @(NSUnderlineStyleDouble),                                NSFontAttributeName: [UIFont systemFontOfSize:20] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

NSStrokeColorAttributeName(边线颜色) 和 NSStrokeWidthAttributeName(边线宽度)

设置文字描边颜色,需要和NSStrokeWidthAttributeName设置描边宽度,这样就能使文字空心.

NSStrokeWidthAttributeName 这个属性所对应的值是一个 NSNumber 对象(小数)。该值改变笔画宽度(相对于字体 size 的百分比),负值填充效果,正值中空效果,默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为 3.0。
同时设置了空心的两个属性,并且 NSStrokeWidthAttributeName 属性设置为整数,文字前景色就无效果了

NSStrokeColorAttributeName 填充部分颜色,不是字体颜色,取值为 UIColor 对象





NSDictionary *attrDict1 = @{ NSStrokeWidthAttributeName: @(-3),                               NSFontAttributeName: [UIFont systemFontOfSize:30] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSStrokeWidthAttributeName: @(0),                               NSFontAttributeName: [UIFont systemFontOfSize:30] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSStrokeWidthAttributeName: @(3),                               NSFontAttributeName: [UIFont systemFontOfSize:30] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];NSDictionary *attrDict1 = @{ NSStrokeWidthAttributeName: @(-3),                                NSStrokeColorAttributeName: [UIColor orangeColor],                                NSFontAttributeName: [UIFont systemFontOfSize:30] };_label01.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict1];NSDictionary *attrDict2 = @{ NSStrokeWidthAttributeName: @(0),                                NSStrokeColorAttributeName: [UIColor blueColor],                                NSFontAttributeName: [UIFont systemFontOfSize:30] };_label02.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict2];NSDictionary *attrDict3 = @{ NSStrokeWidthAttributeName: @(3),                                NSStrokeColorAttributeName: [UIColor greenColor],                                NSFontAttributeName: [UIFont systemFontOfSize:30] };_label03.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict3];

NSShadowAttributeName(阴影)

该属性所对应的值是一个 NSShadow 对象。默认为 nil。单独设置不好使,和这三个任一个都好使,NSVerticalGlyphFormAttributeName,NSObliquenessAttributeName,NSExpansionAttributeName

NSVerticalGlyphFormAttributeName(横竖排版)

该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。



NSObliquenessAttributeName(字体倾斜)



NSExpansionAttributeName (文本扁平化)




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玫瑰金戒指刮花了怎么办 玫瑰金手镯刮花了怎么办 玫瑰金链子断了怎么办 dw玫瑰金掉色了怎么办 6s玫瑰金氧化了怎么办 书本湿的很严重怎么办 除湿盒的水满了怎么办 书被水泡变黄了怎么办 文件纸被弄皱了怎么办 纸的一角皱了怎么办 裤子被雨水打湿变色了怎么办 书本上粘了有油怎么办 手被水泡了皱了怎么办 水泡破了感染了怎么办 夏天腋下出汗会弄湿衣服怎么办 夏天腋下出汗多弄湿衣服怎么办 上眼皮干燥起皮怎么办 怀孕下面湿又痒怎么办 内裤穿久了有异味怎么办 刨腹产私处捂烂了怎么办 猫咬手指出血了怎么办 老有白带涌出来怎么办 耳朵里塞了珠子怎么办 树脂发光字烧了怎么办 马蹄莲长得太高怎么办 百合球的芽断了怎么办 种的百合开败怎么办 盆栽百合花开完之后怎么办 土养百合花谢了怎么办 多肉叶子不饱满怎么办 冬天富贵竹叶子发黄怎么办水养 富贵竹叶子发黄怎么办水养 水养富贵竹有虫怎么办 水养的富贵竹叶子发黄怎么办 百合花水里的盐放多了怎么办 芦荟叶子发黄干瘪了怎么办 水插百合不开花怎么办 干百合冷水泡了怎么办 牡丹籽油过期了怎么办 ps画布建小了怎么办 腰突然疼的受不了了怎么办