web-dev-qa-db-ja.com

NSAttributedStringの行にスペースを追加する方法

脚本をフォーマットするアプリを作成しています。NSAttributedStringを使用してUITextViewに入力されたテキストをフォーマットしていますが、一部の行が近すぎます。

これらの行の間に余白ができるように、これらの行の間のマージンを変更する方法についてのコード例を提供したり、ヒントを提供できる人がいるかどうか疑問に思っていました。

以下に、別のデスクトップのスクリーンライティングプログラムのイメージを示します。これは、「DOROTHY」という各ビットの前に少しスペースがあることに注意してください。

enter image description here

21
James Campbell

次のサンプルコードでは、段落スタイルを使用して、テキストの段落間の間隔を調整します。

UIFont *font = [UIFont fontWithName:fontName size:fontSize];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.paragraphSpacing = 0.25 * font.lineHeight;
NSDictionary *attributes = @{NSFontAttributeName:font,
                             NSForegroundColorAttributeName:[UIColor whiteColor],
                             NSBackgroundColorAttributeName:[UIColor clearColor],
                             NSParagraphStyleAttributeName:paragraphStyle,
                            };
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes];

特定の段落の間隔を選択的に調整するには、段落スタイルをそれらの段落のみに適用します。

お役に立てれば。

49
Joe Smith

素晴らしい回答@Joe Smith

Swift 2. *:

    let font = UIFont(name: String, size: CGFloat)
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.paragraphSpacing = 0.25 * font.lineHeight
    let attributes = [NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle]

    let attributedText = NSAttributedString(string: String, attributes: attributes)
    self.textView.attributedText = attributedText
18
Nathaniel

Swift 4. *バージョン:

let string =
    """
    A multiline
    string here
    """
let font = UIFont(name: "Avenir-Roman", size: 17.0)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.paragraphSpacing = 0.25 * (font?.lineHeight)!

let attributes = [NSAttributedStringKey.font: font as Any, NSAttributedStringKey.paragraphStyle: paragraphStyle]

let attrText = NSAttributedString(string: string, attributes: attributes)
self.textView.attributedText = attrText
5
enigma