我想将 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 顶部对齐。

ios - 单行 UILabel 旁边的中心 NSTextAttachment 图像-LMLPHP

如何更改绘制附件的矩形?

最佳答案

您可以通过子类化 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/

10-13 03:28