如何将 HTML 的 CSS 添加到 NSAttributedString?
Posted
技术标签:
【中文标题】如何将 HTML 的 CSS 添加到 NSAttributedString?【英文标题】:How to add CSS for HTML to NSAttributedString? 【发布时间】:2014-02-28 09:05:58 【问题描述】:我正在尝试通过 NSAttributedString 加载 html 文件以将其显示在 UITextView 中。
那么,如何将 CSS 应用于文本视图的内容?
【问题讨论】:
我猜你不能将css应用到textview,而是用html文件在webview中显示你的内容。 @Virussmca 但我必须使用 textview 。 . . @Quintin 感谢您的编辑。 你不能应用所有的CSS属性(比如border-left: 10px solid #000000;等等) 【参考方案1】:从 ios 7 开始,您可以使用带有 HTML 语法的 NSAttributedString
:
NSURL *htmlString = [[NSBundle mainBundle] URLForResource: @"string" withExtension:@"html"];
NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc] initWithFileURL:htmlString
options:@NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType
documentAttributes:nil
error:nil];
textView.attributedText = stringWithHTMLAttributes; // attributedText field!
你必须将string.html添加到你的项目中,html的内容可以是这样的:
<html>
<head>
<style type="text/css">
body
font-size: 15px;
font-family: Avenir, Arial, sans-serif;
color: red;
</style>
</head>
<body>
<p>This is the text</p>
</body>
</html>
根据我的测试,您可以更改:颜色、字体系列、字体粗细、字体大小、文本对齐,并使用 <b>
、<strong>
、<i>
、<u>
、@ 987654328@ 和 <sub>
标签。
【讨论】:
@AndréRodrigues 你知道我在哪里可以找到可能的定制列表吗?我正在尝试为列表使用自定义图标 ( ...)。 我们可以应用外部 css,如果可以,那么如何? 可以改变链接的颜色吗? @Mansuu.... 是的,您可以将 css 放在单独的文件中,您可以在 HTML 中设置 css 文件的相对路径。 @KlemenZagar 我认为这是可能的,但最好的确认方法是尝试一下 :)【参考方案2】:与其在多个文件中重复您需要的 css,如果您将文件存储在 Assets 文件夹中,那么一种选择是在包含所有样式信息的 body 标记之前使用一个包含所有 html 的文件。然后,您可以附加字节,如我自己的代码中的此示例所示:
func loadHTMLData(section:String, page:Int) -> NSAttributedString?
var data = Data()
if let asset = NSDataAsset(name: "htmlhead")
data.append(asset.data)
if let asset = NSDataAsset(name: "\(section)\(page)")
data.append(asset.data)
do
let attr = try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)
return attr
catch
// do something with error
return nil
else
return nil
如果您愿意,也没有什么可以阻止您进一步拆分文件。
【讨论】:
以上是关于如何将 HTML 的 CSS 添加到 NSAttributedString?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 CSS 类或 id 添加到 Html.PagedListPager
如何将我计算机上的图像添加到 css 或 html 中的站点?