繁体   English   中英

在iphone中格式化UITableView单元格

[英]Formatting UITableView Cells in iphone

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

替代文字

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

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

请看下面的图片:

替代文字

从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];

另请参见“归因字符串编程指南”

由于您显示名称字符串的标签定义了格式和样式,如果您想要具有不同的样式,则需要为每种样式设置不同的uilabel。 具体来说,你需要一个名字的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];

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

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

- (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;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM