一个标签,两种不同的字体?

时间:2010-04-26 14:03:49

标签: iphone cocoa-touch iphone-sdk-3.0 uilabel

我需要在这样的标签中格式化文本:

用户名:此用户的一些文字。这将是 创建其他文本行 一直等着。

其中“用户名”为粗体。这将进入UILabel,它位于自定义表格单元格中。有没有办法获得这种类型的布局?

4 个答案:

答案 0 :(得分:2)

对于这个相对简单的案例,你可以伪造它。有一个标签带有粗体用户名,另一个带有纯文本的标签位于相同位置。在纯文本之前插入足够的空格以留出用户名的空间。您可以使用UIStringDrawing方法来测量粗体文本和空格。

CGSize usernameSize = [theUsername sizeWithFont:theBoldUsernameFont];
CGSize spaceSize = [@" " sizeWithFont:thePlainCommentFont];
NSString *indentedComment = [NSString stringWithFormat:@"%*s%@" , (int)ceil( usernameSize.width / spaceSize.width ) , "" , theComment];

答案 1 :(得分:1)

如果使用普通的UILabel,则无法使用。使用两个标签执行此任务。

答案 2 :(得分:0)

您需要使用UIWebView或CoreText来执行此类高级文本布局。 Web视图有很多开销,但是最灵活,您无法在UITableView单元中有效地使用它。 CoreText是低级别的,并没有很好的文档记录。您可以放弃表视图,只需在Web视图中使用CSS和HTML布置表,这就是我的工作方式。

答案 3 :(得分:0)

您仍然可以使用UITableViewCell,但让单元格使用UIWebView子视图。使用一个聪明的setter方法设置一个自定义单元子类,该方法允许您将nsstrings发送到方法,并将它们转换为非常格式化的视图。