自定义UITableViewCell与部分粗体文本

时间:2010-03-11 00:31:58

标签: iphone uitableview uilabel

尝试实现类似于内置联系人iPhone应用程序的UITableView名称,其中第一个名称是普通字体,姓氏是粗体。一个快速谷歌建议这并不像听起来那么容易,因为iPhone SDK在UILabels中缺乏丰富的文本支持。

建议使用UIWebView格式化文本的解决方案之一,允许HTML粗体标记提供所需的标记。如果我错了,请纠正我,但这似乎有点矫枉过正,会对应用程序的性能产生影响。

我正在尝试进一步研究的另一个解决方案是创建一个自定义UITableViewCell,它包含两个并排的UILabel,第二个标签格式为粗体文本。这看起来很简单,但我不确定如何使标签水平自动调整大小以适应文本(最大宽度)。这是否可以通过Interface Builder实现,还是需要以编程方式完成?

我是在正确的轨道上还是有更简单的方法来实现这种看似微不足道的效果?

3 个答案:

答案 0 :(得分:1)

我想知道你是否应该继承UILabel并亲自完成绘图。然后,您可以使用CGContextSelectFontCGContextGetTextPositionCGContextSetTextPositionCGContextShowText等来绘制文字。

选择普通字体,设置初始文本位置,绘制文本,将文本位置前移几个像素,选择粗体字体,绘制粗体文本等。

我之前没有这样做过,但我也在考虑将这个解决方案用于我的一个应用程序。

答案 1 :(得分:0)

在各种伪装下,Stack Overflow上的few times似乎已被问到。一个常见的解决方案似乎是Three20库的TTStyledTextLabel。在iPhone SDK包含一个内置的富文本标签并且没有自己的标签之前,这个类看起来是次要的。

编辑:刚刚遇到此解决方案,它看起来更好:https://github.com/chrisdevereux/Slash

答案 2 :(得分:0)

enter code here  NSDictionary  *firstNameAttributes = @{ NSFontAttributeName : [UIFont fontWithName:@"Arial" size:20.0],
                                            NSStrokeColorAttributeName : [UIColor blackColor]};
    NSDictionary  *lastNameAttributes = @{NSFontAttributeName : [UIFont fontWithName:@"Arial-Bold" size:20.0],
                                          NSStrokeColorAttributeName : [UIColor blackColor]};
    NSString* first = @"udhaya";
    NSString* last = @" chandrika";


    NSString *append=[NSString stringWithFormat:@"%@%@",first,last];

    cell.textLabel.text = [NSString stringWithFormat:@"%@",append];

    NSMutableAttributedString * name =
    [[NSMutableAttributedString alloc] initWithString:first attributes:firstNameAttributes];
    NSMutableAttributedString * lastName =
    [[NSMutableAttributedString alloc] initWithString:last attributes:lastNameAttributes];

    [name appendAttributedString:lastName];

    [[cell textLabel] setAttributedText:name];