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

我试图使用可以显示丰富内容的UILabel.为此,我使用UILabel中的attributedText属性和NSAttributedString I alloc与NS HTMLTextDocumentType.

我想要实现的一种格式是在段落周围绘制边框(用于引号).正常的文本格式,如字体,粗体,斜体等似乎工作正常,但当我使用像边框这样的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快速.

解决方法

我不知道这是在SDK中实现的,即使你可以限制到iOS 7.但是至少有两个常规选项.

在UILabel的子类中,您可以使用NSAttributedString的大小调整方法(例如boundingRectWithSize:options:context:size)来计运算符文本的显示位置,并在重写drawTextInRect:中绘制边框.您可以通过计算前一个文本的框架和附加的子文本然后取其差异来推导出所需的边框.

另一种选择是在你的NSAttributedStrings上设置自定义属性,这是Apple公开鼓励的,从Apple’s overview开始:

You can assign any attribute name/value pair you wish to a range of
characters—it is up to your application to interpret custom attributes
(see Attributed String Programming Guide).

然后在NSAttributedStrings的子类中,覆盖绘图方法(如drawInRect:),并根据自定义属性的第一个建议实现类似的自定义绘图逻辑,否则依赖于super.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...