微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐