我想将NSTextAttachment与文本的中心对齐,所以我设置了 NSBaselineOffsetAttributeName用于更改NSTextAttachment的基线。
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"" attributes:@{NSFontAttributeName: [UIFont fontWithName:@"STHeitiSC-Light" size:17]}];
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = [UIImage imageNamed:@"micon"];
NSMutableAttributedString *ats = [[NSAttributedString attributedStringWithAttachment:attachment] mutableCopy];
[ats addAttributes:@{NSBaselineOffsetAttributeName:@(-5),NSFontAttributeName: [UIFont fontWithName:@"STHeitiSC-Light" size:17]} range:(NSRange){0,ats.length}];
[attrString appendAttributedString:s];
然后我计算UILabel的大小并设置attributedText。
CGRect textFrame = [attrString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading context:nil];
UILabel *label = [[UILabel alloc] initWithFrame:textFrame];
label.lineBreakMode = NSLineBreakByCharWrapping;
label.numberOfLines = 0;
label.attributedText = attributed;
label.backgroundColor = [UIColor clearColor];
最后,最后一张图片消失了。
任何人都可以解释为什么会发生这种情况以及如何解决这个问题。
答案 0 :(得分:6)
我最后通过添加另一个属性来解决它 NSParagraphStyleAttributeName
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight = lineheight; //line height equals to image height
[attributes setValue:paragraphStyle forKey:NSParagraphStyleAttributeName];
不要更改图像的偏移量,只需设置文本的偏移量。