我正在尝试使用可以显示丰富内容的UILabel
。为此,我使用attributedText
中的UILabel
属性和NSAttributedString
我使用NSHTMLTextDocumentType
分配。
我想要实现的一种格式是在段落周围绘制边框(用于引号)。正常的文本格式,如字体,粗体,斜体等似乎工作正常,但当我使用像边框这样的CSS属性时,它不能像我期望的那样工作。见图;只显示background-color
属性。
此UILabel的attributedText
属性为:
<style>
body{font:10pt Verdana;} .quote {background-color:#ddd;border:1px solid #aaa;}
</style>
<body>
<div class="quote">This is a quote</div>
<br/>
Bla bla bla
</body>
我期望的是UILabel内第一个句子/段落的边界 - 而不是整个UILabel周围的边界。
文本背景显示,但预期的边框不显示。甚至有可能实现这一目标吗?我更愿意使用UILabel
来保持UITableView
快速。
答案 0 :(得分:4)
您使用的是-[NSAttributedString initWithData:options:documentAttributes:error:]
吗?
您的问题可能来自此限制:
HTML导入机制用于实现降价( 也就是说,文本样式,颜色等),而不是一般的HTML导入。
答案 1 :(得分:3)
我不知道这是在SDK中实现的,即使你可以限制到iOS 7.但至少有两个一般选项。
在UILabel
的子类中,您可以使用NSAttributedString
的大小调整方法,例如boundingRectWithSize:options:context:
和size
来计算子文本的显示位置,以及覆盖drawTextInRect:
覆盖边框。您可以通过计算前一文本的框架和附加的子文本,然后取其差异来推断出所需的边框。
另一种选择是在NSAttributedStrings
上设置自定义属性,这是Apple公开鼓励的,Apple's overview:
您可以将所需的任何属性名称/值对分配给范围 字符 - 由您的应用程序来解释自定义属性 (参见属性字符串编程指南)。
然后在NSAttributedStrings
的子类中,覆盖绘图方法,例如drawInRect:
,并根据自定义属性的第一个建议实现类似的自定义绘图逻辑,否则依赖于super。
答案 2 :(得分:1)
据我所知,iOS归因字符串不支持大纲。你有没有在iOS或Mac OS上看到这个问题?
答案 3 :(得分:0)
当我将代码粘贴到调试器上时,它会显示边框。您是否尝试过将颜色更改为更亮的颜色?或者,也许您在其他地方有其他CSS覆盖主CSS中的border属性。如果是这样,请尝试使用!important 标记在html标记内测试或内联CSS,而不是嵌入。
答案 4 :(得分:-1)
尝试在:和声明之间添加空格。有些口译员更喜欢这个。
body {
font: 10pt Verdana;
}
.quote {
background-color: #ddd;
border: 1px solid #aaa;
}
答案 5 :(得分:-1)
你也可以尝试将div添加到类中并添加如下字体属性:
body {
font-family: Verdana;
}
div.quote {
background-color: #ddd;
border: 1px solid #aaa;
font-size: 10pt;
}