我正在开发一款iPhone应用程序。在下面的图像中,我希望第一个名称是普通字体,最后一个名称是粗体..我该怎么做?请建议我..请检查此图片:
另一个问题。现在我认为相反的方式,但这里的问题是你看到的第一行和第二行是同一个字符串的一部分。我希望第一行是粗体,第二行是普通字体。我将它存储在字典中。所以我的字典有一个键,值是一串名称和部门。我无法设置字体。我试图创建两个标签,并尝试根据索引拆分字符串并将其分配给我创建的标签。但是,在这种情况下,索引会不断变化,因为可能有联系人的名字,或者可能没有任何名称。
在这种情况下,Prinicipal应该是普通字体,名称应该是粗体
请参阅下图:
答案 0 :(得分:7)
启动OS 6.0,UILabel上有一个名为attributedText的属性,它具有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];
答案 1 :(得分:5)
由于您显示名称字符串的标签定义了格式和样式,如果您想要具有不同的样式,则需要为每种样式设置不同的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];
至于拆分名称字符串,你可能非常有限。我会拆分第一个空格并假设第一个字符串是姓氏(如第一张图片中所示)。
原理情况类似,您需要为每个要呈现的样式添加标签。
答案 2 :(得分: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;
}
答案 3 :(得分:-2)
您必须创建自定义UITableViewCell
。 http://icodeblog.com/2009/05/24/custom-uitableviewcell-using-interface-builder/