我正在尝试调整属性字符串的一部分的基线
UILabel *detailLabel = [[UILabel alloc] initWithFrame:CGRectMake(cell.contentView.bounds.size.width-100, 0, 75, cell.contentView.bounds.size.height)];
[cell.contentView addSubview:detailLabel];
detailLabel.textAlignment = NSTextAlignmentRight;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"5" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18]}];
NSAttributedString *subScript = [[NSAttributedString alloc] initWithString:@"b" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18],
(NSString *)kCTSuperscriptAttributeName: @(-2)}];
[attributedString appendAttributedString:subScript];
cell.attributedText = attributedString;
但所有文字都经过调整,而不仅仅是被归属的部分
我尝试使用UILabel's baselineAdjustment
属性,但没有看到任何差异
以下是属性字符串说明
Printing description of attributedString:
5{
NSFont = "<UICTFont: 0x7fbde0d548a0> font-family: \"HelveticaNeue-Thin\"; font-weight: normal; font-style: normal; font-size: 18.00pt";
}b{
NSFont = "<UICTFont: 0x7fbde0d548a0> font-family: \"HelveticaNeue-Thin\"; font-weight: normal; font-style: normal; font-size: 18.00pt";
NSSuperScript = "-2";
}
(lldb)
这是可见的结果
调试视图层次结构中的图像
答案 0 :(得分:0)
这可以通过这种排版技巧来完成:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"5" attributes:@{
NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18],
}];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@" " attributes:@{
NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18],
(NSString *)kCTSuperscriptAttributeName: @2,
NSKernAttributeName: @-5,
}]];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"b" attributes:@{
NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18],
(NSString *)kCTSuperscriptAttributeName: @-2,
}]];
这里发生了什么: