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

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

概述我有一个UITextView,我正在管理一个NSAttributedString,最初通过键盘正常输入.我将归因的字符串保存为 HTML,看起来不错. 当我再次加载它,并将其转换回归属的字符串从HTML,字体大小似乎改变. 例如,加载的HTML如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ 我有一个UITextVIEw,我正在管理一个NSAttributedString,最初通过键盘正常输入.我将归因的字符串保存为 HTML,看起来不错.
当我再次加载它,并将其转换回归属的字符串从HTML,字体大小似乎改变.

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

<!DOCTYPE HTML PUBliC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/HTML4/strict.dtd"><HTML><head><Meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8"><Meta http-equiv="Content-Style-Type" content="text/CSS"><Title></Title><Meta name="Generator" content="Cocoa HTML Writer"><style type="text/CSS">p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; Font: 21.0px Helvetica; color: #000000; -webkit-text-        stroke: #000000}span.s1 {Font-family: 'Helvetica'; Font-weight: normal; Font-style: normal; Font-size:     21.00pt;     Font-kerning: none}</style></head><body><p ><span >There is some text as usual lots of text</span></p></body></HTML>

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

// convert to attributed string    NSError *err;    NSAttributedString *as = [[NSAttributedString alloc] initWithData:data3                            options:@{NSdocumentTypedocumentAttribute: NSHTMLTextdocumentType,NSCharacterEnCodingdocumentAttribute: @(NSUTF8StringEnCoding)}                            documentAttributes:nil                            error:&err] ;    NSMutableAttributedString *res = [as mutablecopy];    [res enumerateAttribute:NSFontAttributename inRange:NSMakeRange(0,res.length) options:0 usingBlock:^(ID value,NSRange range,BOol *stop) {        if (value) {            UIFont *oldFont = (UIFont *)value;            NSLog(@"On Loading: Font size %f,in range from %d length %d",oldFont.pointSize,range.location,range.length);        }    }];

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

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

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

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

解决方法 我也遇到这个问题,我通过迭代属性修复它,并重新排列旧的字体大小如下
NSMutableAttributedString *res = [attributedText mutablecopy];[res beginEditing];[res enumerateAttribute:NSFontAttributename                inRange:NSMakeRange(0,res.length)                options:0             usingBlock:^(ID value,BOol *stop) {                 if (value) {                     UIFont *oldFont = (UIFont *)value;                     UIFont *newFont = [oldFont FontWithSize:15];                     [res addAttribute:NSFontAttributename value:newFont range:range];                 }             }];[res endEditing];[self.textfileinputVIEw setAttributedText:res];
总结

以上是内存溢出为你收集整理的从html创建nsattributedstring时,ios7的字体大小更改全部内容,希望文章能够帮你解决从html创建nsattributedstring时,ios7的字体大小更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1142100.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存