代码之家  ›  专栏  ›  技术社区  ›  4thSpace wkw

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

  •  2
  • 4thSpace wkw  · 技术社区  · 14 年前

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

    用户名: 来自此用户的一些文本。这将
    创建将要转到的其他文本行
    一个接一个。

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   drawnonward    14 年前

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

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

    如果您使用纯uilabel,它将不可用。为此任务使用两个标签。

        3
  •  0
  •   lucius    14 年前

    您需要使用uiwebview或coretext来进行这种高级文本布局。Web视图有很多开销,但是它是最灵活的,并且不能在UITableView单元中有效地使用它。coretext是低级别的,没有那么好的文档记录。您可以放弃表视图,只需在Web视图中使用CSS和HTML来布局表,这就是我所做的。

        4
  •  0
  •   james_womack    14 年前

    您仍然可以使用uiTableViewCell,但让该单元格使用uiWebView子视图。用一个聪明的setter方法设置一个自定义的cell子类,该方法允许您向方法发送nsstring,并将其转换为一个格式良好的视图。