NSMutableAttributedString设置文字个性化

本文深入探讨了iOS开发领域的关键技术,包括Swift编程语言、Xcode集成开发环境、UIKit框架以及如何利用Objective-C与iOS生态系统无缝对接。通过实例解析,读者将掌握从界面设计到应用发布全过程的技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


- (void)viewDidLoad {

  [super viewDidLoad];

  

  /**

   没有仔细研究

   NSLigatureAttributeName

   NSTextEffectAttributeName

   NSAttachmentAttributeName

   NSWritingDirectionAttributeName

   NSVerticalGlyphFormAttributeName

   */

  

  NSMutableAttributedString * attributeString = [[NSMutableAttributedString alloc]initWithString:@"Do any additional setup after loading the view,typically from a nib"];

  //NSFontAttributeName是设置字体的font的,也就是什么字体和字体的大小

  //12默认是Helvetica字体 12

  NSMutableDictionary * dict = [NSMutableDictionary dictionary];

  dict[NSFontAttributeName] = [UIFont systemFontOfSize:30];

  [attributeString addAttributes:dict range:NSMakeRange(0, 2)];

  

  /**

   设置段落的属性

   NSParagraphStyleAttributeName是一个NSParagraphStyle对象

   默认的是defaultParagraphStyle

   */

  

  [attributeString addAttribute:NSParagraphStyleAttributeName value:[NSParagraphStyle defaultParagraphStyle] range:NSMakeRange(3, 3)];

  

  

  /**

   NSForegroundColorAttributeName设置字体颜色

   默认是黑色字体

   */

  [attributeString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(7, 2)];

  

   /**

   NSBackgroundColorAttributeName设置字体的背景颜色

    默认是没有背景色的

   */

  [attributeString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(9, 2)];

  

#warning 不知道为什么没有效果

  /**

  NSLigatureAttributeName 连字符 是一个NSNumber类型

   1的话使用默认的连体字符

   0没有连体字符

   我使用的没有效果

   */

  [attributeString addAttribute:NSLigatureAttributeName value:@(1) range:NSMakeRange(11, 2)];

  

  /**

  NSKernAttributeName字间距,是一个NSNuber类型的

   默认是0,不使用字间距

   10的话就是在指定的范围内字体间的距离是10

   还可以是负数哦

   */

  [attributeString addAttribute:NSKernAttributeName value:@(10) range:NSMakeRange(13, 3)];

  

  /**

   NSShadowAttributeName设置阴影,是一个NSShadow对象

   默认是nil

   */

  NSShadow * shadow = [[NSShadow alloc]init];

  shadow.shadowColor = [UIColor redColor];

  shadow.shadowOffset = CGSizeMake(2, 2);

  [attributeString addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(16, 4)];

  

  /**

   NSUnderlineStyleAttributeName是下划线 这个类型是NSNumber

   默认是0 没有下划线

   */

  [attributeString addAttribute:NSUnderlineStyleAttributeName value:@(2) range:NSMakeRange(20, 3)];

  

  

  /**

   NSUnderlineColorAttributeName下划线的颜色

   默认是nil,若是nil这个颜色和NSForegroundColorAttributeName是一样的颜色

   必须注意的是 这个的前提是有下划线的哦

   

   */

  [attributeString addAttribute:NSUnderlineColorAttributeName value:[UIColor redColor] range:NSMakeRange(20, 3)];

  

  

  /**

   NSStrokeWidthAttributeName所对应的值是一个 NSNumber 对象(小数)

   他改变描边宽度(相对于字体size 的百分比)

   默认为 0,即不改变。正数只改变描边宽度。

   负数同时改变文字的描边和填充宽度。

   对于常见的空心字,这个值通常为3.0

   */

  [attributeString addAttribute:NSStrokeWidthAttributeName value:@(2.5) range:NSMakeRange(23, 4)];

  

  /**

  NSStrokeColorAttributeName值对应的是一个颜色

   默认是nil,若是nil,颜色和NSForegroundColorAttributeName是一致的

   */

  [attributeString addAttribute:NSStrokeColorAttributeName value:[UIColor redColor] range:NSMakeRange(23, 4)];

  

  /**

  NSObliquenessAttributeName设置字体倾斜 可以是小数

   默认是0,没有倾斜

   */

  [attributeString addAttribute:NSObliquenessAttributeName value:@(0.5) range:NSMakeRange(27, 3)];

  

  /**

  NSExpansionAttributeName扩大几倍,

   默认0 没有扩大

   */

  [attributeString addAttribute:NSExpansionAttributeName value:@(0.5) range:NSMakeRange(30, 4)];

  


  /**

   NSLinkAttributeName 像网址那样 

   但是后面的value我点击调不到百度界面去,我用的是真机啊

   */

  NSURL * url = [NSURL URLWithString:@"https://www.baidu.com"];

  [attributeString addAttribute:NSLinkAttributeName value:url range:NSMakeRange(34, 10)];

  

  

  /**

  NSStrikethroughStyleAttributeName是指一条线从文字中间穿过 也就是删除线

   默认是0 没有横线穿过

   */

  [attributeString addAttribute:NSStrikethroughStyleAttributeName value:@(1) range:NSMakeRange(38, 4)];

  

  /**

   NSStrikethroughColorAttributeName 设置穿过文字的颜色

   默认是nil 若为nil则,颜色和NSForegroundColorAttributeName颜色一致

   */

  [attributeString addAttribute:NSStrikethroughColorAttributeName value:[UIColor redColor] range:NSMakeRange(38, 6)];

  

  /**

   

   NSBaselineOffsetAttributeName设置基线的偏移量 正的往上移 负的往下移

   

   */

  [attributeString addAttribute:NSBaselineOffsetAttributeName value:@(-10) range:NSMakeRange(42, 4)];

 


  

  UILabel * label2 = [[UILabel alloc]init];

  label2.font= [UIFont systemFontOfSize:30];

  label2.attributedText = attributeString;

  label2.frame = CGRectMake(0, 100, self.view.frame.size.width, 300);

  label2.numberOfLines = 0;

  [self.view addSubview:label2];

  

}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值