我正在使用以下代码为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将影响截断尾部的垂直位置,就像下面的图片一样.
@L_301_0@
有没有办法为截断的尾部设置垂直对齐?
解决方法
试试这一个
UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(50,300,30)]; [self.view addSubview:lbl]; NSString *t= @"这是一个很长很长很长很长很长很长的中文标题漢字"; NSTextAttachment *iconatt = [[NSTextAttachment alloc]init]; iconatt.image = [UIImage imageNamed:@"phnzY.png"]; iconatt.bounds = CGRectMake(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;
它会像这样给出输出