画像が添付された属性付きの文字列があります ( NSTextAttachment
)。これは問題なく動作しますが、解決できないように見える切り捨ての問題があります。
この例では、文字列##
がイメージであるとします。したがって、私の文字列は次のようになりHello world! ##
ます。段落スタイルで末尾の切り捨てが設定されています。
ここで、スペースが制限されている場合、テキストは省略記号で切り捨てられます (これが必要です)。残念ながら、画像も切り捨てられています。
したがって、結果は次のようになります。
Hello w...
しかし、私はそれが次のようになりたい:
Hello...##
つまり、画像の添付ファイルが切り捨てられないようにしたいのですが、常に表示されている必要があります。
添付の理由は、画像が常に文字列の最後にあるようにするためです。そのため、テキストが短い場合は画像が最後にあり、テキストが複数行に折り返される場合は、画像を最後に配置することも必要です。終わり。画像を「外側」に手動で配置しようとすると、テキストが正しく切り捨てられないため機能しません。
NSAttributedString
では、画像を切り捨てないように指示する方法はありますか?
属性付き文字列を生成するコード例:
NSString *title;
NSMutableAttributedString *attributedString;
NSMutableParagraphStyle *paragraph;
NSDictionary *attributes;
NSTextAttachment *attachment;
paragraph = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
paragraph.hyphenationFactor = 1.0;
paragraph.lineBreakMode = NSLineBreakByTruncatingTail;
attributes = @{
NSForegroundColorAttributeName : [self titleTextColor],
NSParagraphStyleAttributeName : paragraph,
};
title = @"Hello world!";
attributedString = [[NSMutableAttributedString alloc] initWithString:title
attributes:attributes];
attachment = [[NSTextAttachment alloc] init];
attachment.image = [UIImage imageNamed:@"myImage"];
[attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];
[attachment release];
self.titleLabel.attributedText = attributedString;
[attributedString release];
[paragraph release];
編集:これの重要な部分(上記の説明で少し失われています)は、このソリューションが複数行のテキストで機能する必要があることです。