2010-08-20 164 views
3

我正在开发一个iphone应用程序。在下面的图片中,我希望第一个名字是纯字体,而最后一个名字是粗体。我该怎么做?请给我建议。请检查该图片:格式化iPhone中的UITableView单元格

alt text

另一个questio..Now我觉得相反的方式,但这里的问题是,第一线和第二线,你看到的都是同一个字符串的一部分。我希望第一行是粗体,第二行是纯字体。我将它存储在字典中。所以我的字典有一个键,值是一串名字和部门。我无法设置字体。我试图创建两个标签,并尝试根据索引拆分字符串,并将其分配给我创建的标签。但是,在这种情况下,索引不断变化,因为可能有联系人的名字,或者可能没有任何名字。

在这种情况下应该PRINICIPAL在普通的字体和名称应该是大胆

请参阅下面的图片:

alt text

回答

5

由于显示名称字符串的标签定义了格式和样式,如果您想要使用不同的样式,则需要针对每种每种样式都有不同的样式。具体来说,您将需要一个用于名字的uilabel:firstNameLabel.font = [UIFont systemFontOfSize:12];和一个用于姓氏:lastNameLabel.font = [UIFont boldSystemFontOfSize:12];

第一个名字字符串是firstNameLabel,然后调用[firstNameLabel sizeToFit]以使其中的标签文本适合。然后使用firstNameLabel的框架将lastNameLabel直接放在它之后。

UILabel * firstNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,10,100,25)]; 
firstNameLabel.tag = firstNameLabelTag //This should be a constant probably 
firstNameLabel.font = [UIFont systemFontOfSize:12]; 
firstNameLabel.text = theStringRepresentingTheFirstName; 
[firstNameLabel sizeToFit]; 

UILabel * lastNameLabel = [[UILabel alloc] initWithFrame: 
    CGRectMake(10+firstNameLabel.frame.size.width+2, 10, 100, 25)]; 
lastNameLabel.tag = lastNameLabelTag //This should be a constant probably 
lastNameLabel.font = [UIFont boldSystemFontOfSize:12]; 
lastNameLabel.text = theLastNameString;. 

[cell.contentView addSubview:firstNameLabel]; 
[cell.contentView addSubview:lastNameLabel]; 

至于分裂名称字符串,你可能相当有限。我会分开第一个空格,并假设第一个字符串是最后一个字符(如在第一张图片中)。

原理案例是相似的,你需要一个标签为你想呈现的每种风格。

7

Starting OS 6.0在UILabel上有一个属性叫做attributesText,它有NSAttributedString类型(可在iOS 3.2及更高版本中使用)。

这是我如何使用它:

NSDictionary *firstNameAttributes = @{ NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:18.0], 
              NSStrokeColorAttributeName : [UIColor blackColor]}; 
    NSDictionary *lastNameAttributes = @{NSFontAttributeName : [UIFont fontWithName:@"Helvetica-Bold" size:20.0], 
             NSStrokeColorAttributeName : [UIColor blackColor]}; 
    NSString* first = ... first name ..; 
    NSString* last = [NSString stringWithFormat:@" %@",... last name ....]; 
    NSMutableAttributedString * name = 
    [[NSMutableAttributedString alloc] initWithString:first attributes:firstNameAttributes]; 
    NSMutableAttributedString * lastName = 
    [[NSMutableAttributedString alloc] initWithString:last attributes:lastNameAttributes]; 
    [name appendAttributedString:lastName]; 

    [[cell textLabel] setAttributedText:name]; 

又见Introduction to Attributed String Programming Guide

0
- (IBAction)buttonPressed:(UIButton *)sender { 
    NSString *title = [sender titleForState:UIControlStateNormal]; 
    NSString *plainText = [NSString stringWithFormat:@"%@ button pressed.", title]; 
    NSMutableAttributedString *styledText = [[NSMutableAttributedString alloc] initWithString:plainText]; 
    NSDictionary *attributes = @{ NSFontAttributeName : [UIFont boldSystemFontOfSize:self.statusLabel.font.pointSize]}; 
    NSRange nameRange = [plainText rangeOfString:title]; 
    [styledText setAttributes:attributes range:nameRange]; 
    self.statusLabel.attributedText = styledText; 

}