2

简短而甜蜜:
我的最终目标是使用一个带有两个单词的 UILabel,以粗体显示一个单词,而另一个以普通字体显示。我找到的所有解决方案都超出了我的想象!:(

更多细节:前几天
问了一个问题,但没有给我希望的答案,现在看来我需要使用 UITableViewController 和 ABAddressBook 中的内容重新创建 ABPeoplePickerNavigationController。如果您阅读了我之前的问题并且可以提出更好的解决方案,那就太棒了!如果不...

当我重新创建 PeoplePicker 时,我真的很想完全模仿 Apple 的默认实现,尤其是他们如何在同一标签中使用粗体和普通字体作为联系人姓名。

现在,我知道这个问题已经被问了很多,在 SO 和其他地方。很多人都有这个需求,解决方案各不相同:

  1. 使用网络视图
  2. 使用 UIStringDrawing 方法
  3. 子类 UILabel覆盖 drawrect
  4. 深入研究 CoreText
  5. 使用 ThreeTwenty 库
  6. 使用两个 uilabels,创建一个粗体,一个正常,并将它们彼此相邻放置(然后需要我将 UITableViewCell 子类化以放置两个标签

解决方案 #2、#3 和 #4 似乎是最强大的,根据我在其他问题中读到的内容,这就是 Apple 的实际做法。不幸的是,目前这些技术有点超出我的想象,而且我很难了解我在网络上找到的有限数量的细节。我还没有真正用显式绘图做过任何事情。

有没有人自己实现过这个?您可以提供任何代码示例来帮助我掌握这些更高级的技术吗?

谢谢!

4

3 回答 3

2

有第 6 种解决方案。使用 2 个 UILabel。使用粗体文本创建一个粗体,并要求其大小适合。然后,一旦你布置好它,你就可以创建第二个并将它放在第一个旁边。

于 2011-03-12T04:02:27.897 回答
0

您应该阅读“iOS 表视图编程指南”,其中有一个标题为“子类化 UITableViewCell”的部分,它完全符合您的要求(即绘制不同属性的字符串)。

于 2011-03-12T04:21:37.987 回答
0

所以,为了解决这个问题,我最终找到了第 7 个选项。:)

我选择了OHAttributedLabel。我仍然无法围绕 UIStringDrawing 方法或在子类 UILabel 中覆盖 drawRect;我认为那些将是最干净的解决方案。但是,OHAttributedLabel 看起来很可靠,超轻量级,并且完全符合我的需要。

祝你好运!如果有人找到更多解决方案,或者想更详细地解释 UIStringDrawing 或 drawRect,请随时发布!

更新:

I've been using Matt Thompson's TTTAttributedLabel and have been really happy with it. https://github.com/mattt/TTTAttributedLabel

于 2011-03-19T04:38:18.203 回答