1. ホーム
  2. ios

[解決済み] NSTextAttachmentの画像を1行のUILabelの横に配置する。

2022-06-01 11:08:22

質問

を追加したいのですが 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 軸も変更したくなるはずです。 しかし、アイコンを別の画像ビューに置くこと (これには欠点があります) 以外に、これ以上の方法は見つかりませんでした。