我想将 NSTextAttachment
图像附加到我的属性字符串并使其垂直居中。
我使用以下代码来创建我的字符串:
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:DDLocalizedString(@"title.upcomingHotspots") attributes:attrs];
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = [[UIImage imageNamed:@"help.png"] imageScaledToFitSize:CGSizeMake(14.f, 14.f)];
cell.textLabel.attributedText = [str copy];
但是,图像似乎与单元格的
textLabel
顶部对齐。如何更改绘制附件的矩形?
最佳答案
您可以通过子类化 NSTextAttachment
和覆盖 attachmentBoundsForTextContainer:proposedLineFragment:glyphPosition:characterIndex:
来更改矩形。例子:
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex {
CGRect bounds;
bounds.origin = CGPointMake(0, -5);
bounds.size = self.image.size;
return bounds;
}
这不是一个完美的解决方案。您必须“通过眼睛”找出 Y 原点,如果您更改字体或图标大小,您可能想要更改 Y 原点。但是我找不到更好的方法,除了将图标放在单独的 ImageView 中(这有其自身的缺点)。
关于ios - 单行 UILabel 旁边的中心 NSTextAttachment 图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26105803/