从html创建nsattributedstring时,ios7的字体大小更改

前端之家收集整理的这篇文章主要介绍了从html创建nsattributedstring时,ios7的字体大小更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个UITextView,我正在管理一个NSAttributedString,最初通过键盘正常输入.我将归因的字符串保存为 HTML,看起来不错.
当我再次加载它,并将其转换回归属的字符串从HTML,字体大小似乎改变.

例如,加载的HTML如下所示:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <Meta http-equiv="Content-Style-Type" content="text/css">
  6. <title></title>
  7. <Meta name="Generator" content="Cocoa HTML Writer">
  8. <style type="text/css">
  9. p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica; color: #000000; -webkit-text- stroke: #000000}
  10. span.s1 {font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 21.00pt; font-kerning: none}
  11. </style>
  12. </head>
  13. <body>
  14. <p class="p1"><span class="s1">There is some text as usual lots of text</span></p>
  15. </body>
  16. </html>

我转换它并使用以下代码检查属性

  1. // convert to attributed string
  2. NSError *err;
  3. NSAttributedString *as = [[NSAttributedString alloc] initWithData:data3
  4. options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
  5. documentAttributes:nil
  6. error:&err] ;
  7.  
  8. NSMutableAttributedString *res = [as mutableCopy];
  9. [res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0,res.length) options:0 usingBlock:^(id value,NSRange range,BOOL *stop) {
  10. if (value) {
  11. UIFont *oldFont = (UIFont *)value;
  12. NSLog(@"On Loading: Font size %f,in range from %d length %d",oldFont.pointSize,range.location,range.length);
  13. }
  14. }];

输出显示字体大小从21增加到28:

  1. On Loading: Font size 28.000000,in range from 0 length 40
  2. On Loading: Font size 21.000000,in range from 40 length 1

基本上每次加载字符串时,字体大小都会增加.我需要将其存储为HTML而不是NSData,因为它也将被其他平台使用.

有人有什么想法为什么会发生这种情况吗?

解决方法

我也遇到这个问题,我通过迭代属性修复它,并重新排列旧的字体大小如下
  1. NSMutableAttributedString *res = [attributedText mutableCopy];
  2. [res beginEditing];
  3. [res enumerateAttribute:NSFontAttributeName
  4. inRange:NSMakeRange(0,res.length)
  5. options:0
  6. usingBlock:^(id value,BOOL *stop) {
  7. if (value) {
  8. UIFont *oldFont = (UIFont *)value;
  9. UIFont *newFont = [oldFont fontWithSize:15];
  10. [res addAttribute:NSFontAttributeName value:newFont range:range];
  11. }
  12. }];
  13. [res endEditing];
  14. [self.textFileInputView setAttributedText:res];

猜你在找的HTML相关文章