zoukankan      html  css  js  c++  java
  • iphone开发中NSMutableAttributedString/NSAttributedString 富文本设置

    一、设置UILabel的属性attributedText(NSMutableAttributedString)
    NSString *testStr = @"测试";
    UILabel *testLab = ...(实例对象)
    NSMutableParagraphStyle *ps = [[NSMutableParagraphStyle alloc] init];  
    [ps setAlignment:NSTextAlignmentCenter];  
    NSDictionary *attribs = @{
                  NSFontAttributeName: [UIFont fontWithName:@"Microsoft Yahei" size:45],
                  NSParagraphStyleAttributeName:ps};  
    NSMutableAttributedString *attributedText =[[NSMutableAttributedString alloc] initWithString:testStr attributes:attribs];  
    testLab.attributedText = attributedText; 
    ps: 没有细看这段代码不过查了一下attributedText这个属性可以实现一个label显示多段不同颜色不同字体的文字
    二、设置行距、行间距(NSMutableParagraphStyle)

    UITextView *lab = [LocalTexts objectAtIndex:j];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineHeightMultiple = 50.0f;
    paragraphStyle.maximumLineHeight = 50.0f;
    paragraphStyle.minimumLineHeight = 50.0f;
    NSString *string = lab.text;
    NSDictionary *ats = @{
    NSFontAttributeName : [UIFont fontWithName:@"DIN Medium" size:16.0f],
    NSParagraphStyleAttribut

    eName : paragraphStyle,
    };
    lab.attributedText = [[NSAttributedString alloc] initWithString:string attributes:ats];//textview 设置行间距
    ps:感觉好像上面是设置行距,下面说它还有个属性是lineSpacing,效果不佳试试这个

    三、设置对齐方式、折行方式
    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
    paragraph.alignment = NSTextAlignmentJustified;//设置对齐方式
    paragraph.lineBreakMode = NSLineBreakByWordWrapping;

    四、NSMutableParagraphStyle、NSAttributedString(简单介绍,详细看API

    NSAttributedString的初始化方法有

    -initWithString:用String初始化,并没有Attributed信息。

    -initWithAttributedString:用AttributedString去初始化。

    -initWithString:Attributed:用string及attribute的dictionary来初始化。

    具体AttributtedString属性的键值对如下:
    NSString *const NSFontAttributeName;//值为UIFont,设置字体,默认值为12-point Helvetica(Neue) 。

    下面这段代码可以查看ios中可用的字体,具体那些字体长什么样,可以查看字体册工具。

    NSArray *familyArray = [UIFont familyNames];
    for (id family in familyArray)
    {
      printf(“%s ”,[family cStringUsingEncoding:NSUTF8StringEncoding]);
      NSArray *fontArray = [UIFont fontNamesForFamilyName:family];
      for (id font in fontArray)
      {
       printf(”   %s ”,[font cStringUsingEncoding:NSUTF8StringEncoding]);
      }
    }
    NSString *const NSParagraphStyleAttributeName;//值为NSParagraphStyle,设置段落属性,默认值为[NSParagraphStyle defaultParagraphStyle]返回的值。

    NSMutableParagraphStyle与NSParagraphStyle包括一下属性
      alignment //对齐方式
      firstLineHeadIndent //首行缩进
      headIndent //缩进
      tailIndent  //尾部缩进
      lineBreakMode  //断行方式
      maximumLineHeight  //最大行高
      minimumLineHeight  //最低行高
      lineSpacing  //行距
      paragraphSpacing  //段距
      paragraphSpacingBefore  //段首空间
      baseWritingDirection  //句子方向
      lineHeightMultiple  //可变行高,乘因数。
      hyphenationFactor //连字符属性
    NSString *const NSForegroundColorAttributeName;//值为UIColor,字体颜色,默认为黑色。
    NSString *const NSBackgroundColorAttributeName;//值为UIColor,字体背景色,默认没有。
    NSString *const NSLigatureAttributeName;//值为整型NSNumber,连字属性,一般中文用不到,在英文中可能出现相邻字母连笔的情况。0为不连笔;1为默认连笔,也是默认值;2在ios 上不支持。
    NSString *const NSKernAttributeName;//值为浮点数NSNumber,字距属性,默认值为0。
    NSString *const NSStrikethroughStyleAttributeName;//值为整型NSNumber,可取值为
    enum {
       NSUnderlineStyleNone = 0×00,
       NSUnderlineStyleSingle = 0×01,
    };设置删除线。
    NSString *const NSUnderlineStyleAttributeName;//同上。设置下划线。
    NSString *const NSStrokeColorAttributeName;//值为UIColor,默认值为nil,设置的属性ForegroundColor。
    NSString *const NSStrokeWidthAttributeName;//值为浮点数NSNumber。设置比画的粗细。
    NSString *const NSShadowAttributeName;//值为NSShadow,设置比画的阴影,默认值为nil。
    NSString *const NSVerticalGlyphFormAttributeName;//值为整型NSNumber,0为水平排版的字,1为垂直排版的
     
     
     
  • 相关阅读:
    组件ListWidget 继承StatefulWidget后动态传入List数据,组件并不会重新渲染。
    Spring Security 采用httpBasic模式认证
    基于Vue2.0实现OpenLayers MarkerCluster海量聚合点标记
    Spring Security 采用formLogin模式认证
    配置页面兼容360浏览器
    如何进行企业工作流选型
    IT项目管理的六种错误思维
    时间管理10项技巧
    一个项目涉及到的50个Sql语句(下)
    SQL Server2000存储过程调试
  • 原文地址:https://www.cnblogs.com/Lucky-056150/p/5340222.html
Copyright © 2011-2022 走看看