私は情報/例を求めてネット全体を見てきました...
UITextView オブジェクト内のテキストの行間をダブルスペースに変更しようとしています。Core Text 経由でできると思ったのですが、解決策が見つかりません!
サンプルコードや情報は大歓迎です! ありがとう!
ネット全体を見る必要はありません。のドキュメントを見るだけでUITextView
、行間隔の変更がそのコントロールでサポートされていないことを確認できます。
もちろん、Core Textを使用すると、描画するテキストのレイアウトを完全に制御できます。UITextView
しかし、のようなコントロールを最初から書き直すのは大変な作業です。
この質問は、iOS 6 より前に尋ねられました。これを行う方法を希望する人のために、更新された回答を投稿したいと思います。
これは、NSAttributedString を使用して iOS 6 以降で実行できるようになりました。UITextView は、属性付き文字列をそのプロパティの 1 つとして受け入れるようになりました。行間隔を含め、属性付き文字列を使用してあらゆる種類のテキスト操作を行うことができます。文字列の段落スタイル属性の行の高さの最小値と最大値を設定できます。
詳細については、NSAttributedString クラス リファレンスを参照してください。
これがあなたができることのサンプルです:
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.minimumLineHeight = 21.0f;
paragraph.maximumLineHeight = 21.0f;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test text line 1\nTest text line 2\nTest text line 3" attributes:@{NSParagraphStyleAttributeName: paragraph}];
textView.attributedText = attributedString;
NSLayoutManagerDelegate を使用できます。そのデリゲートをViewControllerまたはUIViewクラス(など)に追加してから、UITextViewを作成するときに...
yourTextView.layoutManager.delegate = self
次のデリゲート メソッドを追加します。
func layoutManager(layoutManager: NSLayoutManager, lineSpacingAfterGlyphAtIndex glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat {
return 5 //Whatever you'd like...
}