将简单 HTML 解析为 NSAttributedString 后设置字体大小不起作用
Setting font size doesn't work after parsing simple HTML into NSAttributedString
我想将简单的 HTML 标记解析为 NSAttributedString
,以便我可以在 UITextView
上显示格式化文本。我发现 this and that post 应该很容易转换。这就是我用过的:
public static NSAttributedString GetAttributedStringFromHtml(string html)
{
NSError error = null;
NSAttributedString attributedString = new NSAttributedString (NSData.FromString(html),
new NSAttributedStringDocumentAttributes{ DocumentType = NSDocumentType.HTML, StringEncoding = NSStringEncoding.UTF8 },
ref error);
return attributedString;
}
到目前为止一切正常,但现在我想更改字体大小,因为默认字体非常小。
string content = "<strong>I'm strong.</strong><br/>http://www.google.com";
UITextView textView = new UITextView ();
textView.Editable = false;
textView.Font = UIFont.SystemFontOfSize (25);
textView.Text = content;
textView.AttributedText = GetAttributedStringFromHtml (content);
textView.DataDetectorTypes = UIDataDetectorType.Link;
textView.Selectable = true;
上面的代码确实正确解析了它,但字体大小没有改变。我尝试使用 NSMutableAttributedString
,但它似乎没有像 NSAttributedString
那样使用 NSData
作为解析参数。也许可以选择组合多个 NSAttributedString
,但我不知道如何组合。另一种选择是像这个例子一样投射:
NSMutableAttributedString attributedString = (NSMutableAttributedString) GetAttributedStringFromHtml (content);
attributedString.AddAttribute (UIStringAttributeKey.Font, UIFont.SystemFontOfSize (25), new NSRange (0, content.Length));
textView.AttributedText = attributedString;
但我得到 System.InvalidCastException
.
如何更改 UITextView
的字体大小,即使我使用 HTML 解析?
编辑:
现在我尝试创建我的 NSMutableAttributedString
:
NSAttributedString parsedString = GetAttributedStringFromHtml (content);
NSMutableAttributedString attributedString = new NSMutableAttributedString (parsedString);
attributedString.AddAttribute (UIStringAttributeKey.Font, UIFont.SystemFontOfSize (17), new NSRange (0, attributedString.Length));
textView.AttributedText = attributedString;
这确实编译,字体更大,并且 HTML 也被解析,但它忽略了 <strong>
例如。文本不是粗体,它应该是粗体。好像第二个属性覆盖了第一个...
我尝试了一些方法,但 none 成功了。所以我已经在解析 HTML 为什么不使用内联 CSS 语法?
<p style='font-size:17px'><strong>I'm bold.</strong><br/>http://www.google.com</p>
我想将简单的 HTML 标记解析为 NSAttributedString
,以便我可以在 UITextView
上显示格式化文本。我发现 this and that post 应该很容易转换。这就是我用过的:
public static NSAttributedString GetAttributedStringFromHtml(string html)
{
NSError error = null;
NSAttributedString attributedString = new NSAttributedString (NSData.FromString(html),
new NSAttributedStringDocumentAttributes{ DocumentType = NSDocumentType.HTML, StringEncoding = NSStringEncoding.UTF8 },
ref error);
return attributedString;
}
到目前为止一切正常,但现在我想更改字体大小,因为默认字体非常小。
string content = "<strong>I'm strong.</strong><br/>http://www.google.com";
UITextView textView = new UITextView ();
textView.Editable = false;
textView.Font = UIFont.SystemFontOfSize (25);
textView.Text = content;
textView.AttributedText = GetAttributedStringFromHtml (content);
textView.DataDetectorTypes = UIDataDetectorType.Link;
textView.Selectable = true;
上面的代码确实正确解析了它,但字体大小没有改变。我尝试使用 NSMutableAttributedString
,但它似乎没有像 NSAttributedString
那样使用 NSData
作为解析参数。也许可以选择组合多个 NSAttributedString
,但我不知道如何组合。另一种选择是像这个例子一样投射:
NSMutableAttributedString attributedString = (NSMutableAttributedString) GetAttributedStringFromHtml (content);
attributedString.AddAttribute (UIStringAttributeKey.Font, UIFont.SystemFontOfSize (25), new NSRange (0, content.Length));
textView.AttributedText = attributedString;
但我得到 System.InvalidCastException
.
如何更改 UITextView
的字体大小,即使我使用 HTML 解析?
编辑:
现在我尝试创建我的 NSMutableAttributedString
:
NSAttributedString parsedString = GetAttributedStringFromHtml (content);
NSMutableAttributedString attributedString = new NSMutableAttributedString (parsedString);
attributedString.AddAttribute (UIStringAttributeKey.Font, UIFont.SystemFontOfSize (17), new NSRange (0, attributedString.Length));
textView.AttributedText = attributedString;
这确实编译,字体更大,并且 HTML 也被解析,但它忽略了 <strong>
例如。文本不是粗体,它应该是粗体。好像第二个属性覆盖了第一个...
我尝试了一些方法,但 none 成功了。所以我已经在解析 HTML 为什么不使用内联 CSS 语法?
<p style='font-size:17px'><strong>I'm bold.</strong><br/>http://www.google.com</p>