我正在使用以下代码为 iOS 8 中的 UILabel
生成一个 NSAttributedString
。
// a long long Chinese title
NSString *title = @"这是一个很长很长很长很长很长很长的中文标题";
// setup icon attachment
NSTextAttachment *iconAttachment = [[NSTextAttachment alloc] init];
iconAttachment.image = [UIImage imageNamed:imageName];
iconAttachment.bounds = bounds;
NSAttributedString *ycardImageString = [NSAttributedString attributedStringWithAttachment:iconAttachment];
// setup attributed text
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:title];
if (shouldShowYcard) {
[attributedText insertAttributedString:ycardImageString atIndex:0];
[attributedText insertAttributedString:[[NSAttributedString alloc] initWithString:@" "] atIndex:1];
[attributedText addAttribute:NSBaselineOffsetAttributeName value:@(offset) range:NSMakeRange(0, 1)];
}
NSRange titleRange = NSMakeRange(shouldShowYcard ? 2 : 0, title.length);
[attributedText addAttribute:NSFontAttributeName value:font range:titleRange];
[attributedText addAttribute:NSForegroundColorAttributeName value:color range:titleRange];
然而,NSTextAttachment
似乎会影响截尾的垂直位置,如下图所示。
有没有办法设置截尾的垂直对齐方式?
我的目标是让中文尾部底部对齐。
最佳答案
试试这个
UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 300, 30)];
[self.view addSubview:lbl];
NSString *t= @"这是一个很长很长很长很长很长很长的中文标题漢字";
NSTextAttachment *iconatt = [[NSTextAttachment alloc]init];
iconatt.image = [UIImage imageNamed:@"phnzY.png"];
iconatt.bounds = CGRectMake(0, 0, 44, 22);
NSAttributedString *ycardstring = [NSAttributedString attributedStringWithAttachment:iconatt];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:t];
[attributedText insertAttributedString:ycardstring atIndex:0];
[attributedText insertAttributedString:[[NSAttributedString alloc] initWithString:@" "] atIndex:1];
[attributedText addAttribute:NSBaselineOffsetAttributeName value:@(0.0) range:NSMakeRange(0, 1)];
NSRange titleRange = NSMakeRange( 0 , t.length);
[attributedText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:22.0] range:titleRange];
[attributedText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:titleRange];
lbl.attributedText = attributedText;
关于ios - 使用 NSTextAttachment 为 NSAttributedString 设置截尾的垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39643542/