我想将NSTextAttachment与文本的中心对齐,所以我设置了
NSBaselineOffsetAttributeName用于更改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];
最后,最后一张图片消失了.
任何人都可以解释为什么会发生这种情况以及如何解决它.
解决方法
我最后通过添加另一个属性NSParagraphStyleAttributeName来解决它
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.minimumLineHeight = lineheight; //line height equals to image height [attributes setValue:paragraphStyle forKey:NSParagraphStyleAttributeName];
不要改变图像的偏移量,只需设置文本的偏移量.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。