如何在UILabel中的段落周围绘制边框?

我正在尝试使用可显示丰富内容的UILabel 。 为此,我使用UILabelattributedText NSAttributedString attributedTextNSAttributedString我使用NSHTMLTextDocumentType

我想要实现的一种格式是在段落周围绘制边框(用于引号)。 正常的文本格式,如字体,粗体,斜体等似乎工作正常,但是当我使用像边框的CSS属性,它不工作,因为我所期望的。 看照片; 只显示background-color属性。

UILabel与HTML

这个UILabel的attributedText文本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迅速。

我不知道这是在SDK中实现,即使你可以限制到iOS 7.至less有两个通用选项。

UILabel的子类中,可以使用NSAttributedString的大小调整方法(例如boundingRectWithSize:options:context:size )来计算出现在哪个子boundingRectWithSize:options:context: ,并且在覆盖drawTextInRect:绘制边框。 你可以通过计算前面的文本和附加的子文本的框架来推断出所需的边框,然后取出它们的差别。

另一种select是在Apple的概述中设置NSAttributedStrings上的自定义属性,这是Apple公开鼓励的 :

你可以指定你想要的字符范围的任何属性名称/值对 – 由应用程序来解释自定义属性(参见“属性string编程指南”)。

然后在NSAttributedStrings的子类中,重写drawInRect:类的绘图方法drawInRect:并根据您的自定义属性的第一个build议实现类似的自定义绘制逻辑,否则依靠super。

你使用-[NSAttributedString initWithData:options:documentAttributes:error:]

你的问题可能来自这个限制:

HTML导入机制是为了实现像markdown(即文本样式,颜色等),而不是一般的HTML导入。

https://developer.apple.com/library/ios/documentation/uikit/reference/NSAttributedString_UIKit_Additions/Reference/Reference.html#//apple_ref/occ/instm/NSAttributedString/initWithData:options:documentAttributes:error

据我所知,iOS的属性string不支持轮廓。 你有没有在iOS或Mac OS上查看过网页视图?

当我将代码粘贴到debugging器上时,会显示一个边框。 你有没有试过把颜色改成更亮的? 或者,也许你有其他的CSS在其他地方覆盖主CSS中的边界属性。 如果是这样,请尝试使用!important标签来testing或内嵌html标签中的CSS,而不是embedded。

尝试在:和声明之间添加空格。 有些口译员更喜欢这个。

 body { font: 10pt Verdana; } .quote { background-color: #ddd; border: 1px solid #aaa; } 

您也可以尝试将div添加到类中,并添加像这样的字体属性:

 body { font-family: Verdana; } div.quote { background-color: #ddd; border: 1px solid #aaa; font-size: 10pt; }