31

NSTextAttachment を追加する NSAttributedString があります。画像は 50w x 50h ですが、属性のある文字列の行の高さを反映するように縮小したいと思います。これは自動的に行われると思っていましたが、そうではないと思います。UImage クラス リファレンスを見てきましたが、この画像は UIImageView に設定されていないようで、フレーム プロパティにアクセスできません。ここに私が現在持っているもののスクリーンショットがあります:

ここに画像の説明を入力

理想的な世界では、ユーザー入力 (フォント サイズの拡大など) に基づいて画像を拡大する方法も実装したいと考えています。これを達成する方法についてのアイデアはありますか?

どうも

編集 1

作成方法は次のとおりです。

    NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
    textAttachment.image = [UIImage imageNamed:@"note-small.png"];
    NSLog(@"here is the scale: %f", textAttachment.image.scale);
    NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
    [headerAS replaceCharactersInRange:NSMakeRange([headerAS length], 0) withString:@" "];
    [headerAS replaceCharactersInRange:NSMakeRange([headerAS length], 0) withAttributedString:attrStringWithImage];
4

5 に答える 5

29

NSTextAttachmentアスペクト比を維持しながら大量の画像のサイズを変更する必要がある場合は、便利な拡張機能を作成しました: http://hack.swic.name/convenient-nstextattachment-image-resizing

extension NSTextAttachment {
    func setImageHeight(height: CGFloat) {
        guard let image = image else { return }
        let ratio = image.size.width / image.size.height

        bounds = CGRect(x: bounds.origin.x, y: bounds.origin.y, width: ratio * height, height: height)
    }
}

使用例:

let textAttachment = NSTextAttachment()
textAttachment.image = UIImage(named: "Image")
textAttachment.setImageHeight(16) // Whatever you need to match your font

let imageString = NSAttributedString(attachment: textAttachment)
yourAttributedString.appendAttributedString(imageString)
于 2016-02-19T15:33:32.663 に答える
0

NSTextAttachment は UIImage の単なるホルダーであるため、スケーリングが必要な場合は画像をスケーリングし、テキスト添付ファイルを再作成するか、その画像を設定します。既存のテキスト添付ファイルの画像を変更する場合は、nslayout の更新を強制する必要があります。

于 2014-05-25T06:34:37.150 に答える