更改NSMutableAttributedString的字体大小而不删除粗体格式。

时间:2017-04-24 09:04:00

标签: ios objective-c nsmutableattributedstring

您好我是目标C的新手。我正在将htmlString转换为NSMutableAttributedString。但当我更改NSMutableAttributedString的字体大小时,它会从我的文本中删除粗体字,请提供任何解决方案。

我的代码:

chi

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

试试这个。您需要使用复制字符串来显示更改的字符串。

  NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding]  options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil ];
  NSMutableAttributedString* copy = [attributedString mutableCopy];
  [attributedString enumerateAttributesInRange:NSMakeRange(0, string.length) options:0 usingBlock:^(NSDictionary<NSString *,id> * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {
    UIFont* font = attrs[NSFontAttributeName];
    if(font)
    {
      NSMutableDictionary* changedAttributes = [attrs mutableCopy];
      if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
      {
        changedAttributes[NSFontAttributeName] = [UIFont fontWithName:font.fontName size:16];
      }
      else{
        changedAttributes[NSFontAttributeName] = [UIFont fontWithName:font.fontName size:12];
      }
      [copy setAttributes:changedAttributes range:range];
    }
  }];