我需要在这样的标签中格式化文本:
用户名:此用户的一些文字。这将是 创建其他文本行 一直等着。
其中“用户名”为粗体。这将进入UILabel,它位于自定义表格单元格中。有没有办法获得这种类型的布局?
答案 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发送到方法,并将它们转换为非常格式化的视图。