在iphone中格式化UITableView单元格

rac*_*ola 3 iphone cell uitableview ios ios-simulator

我正在开发一款iPhone应用程序.在下面的图像中,我希望第一个名称是普通字体,最后一个名称是粗体..我该怎么做?请建议我..请检查此图片:

替代文字

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

在这种情况下,Prinicipal应该是普通字体,名称应该是粗体

请看下面的图片:

替代文字

Adr*_*ian 7

从OS 6.0开始,UILabel上有一个名为attributionText的属性,它具有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];
Run Code Online (Sandbox Code Playgroud)

另请参见"归因字符串编程指南".


the*_*aws 5

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

首先,第一个名称字符串是firstNameLabelthen调用,[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];
Run Code Online (Sandbox Code Playgroud)

至于拆分名称字符串,你可能在那里非常有限.我会拆分第一个空格并假设第一个字符串是姓氏(如第一张图片中所示).

原理情况类似,您需要为每个要呈现的样式添加标签.