2017-07-21 21 views
0

私は最初の行(FirstLineHeadIndent)と残りの行(HeadIndent)にインデントを追加する方法を見つけましたが、にインデントを追加する方法を見つけることができません long live MS Paint!UILabelの複数の行にインデントを追加するには?

PS:私は一人のユーザーが示唆されているように、最初の行だけをインデントする方法を求めてないだからこれは、重複していません。

+0

可能な複製(https://stackoverflow.com/questions/21430685/how -in-indent-only-first-line-multiline-in-ios) – the4kman

+0

@ the4kman PSセクションを参照 – nicks

+0

これを見てくださいhttps://stackoverflow.com/questions/39113803/indent-second-line -of-uilabel-swift –

答えて

0

あなたはUILabel.AttributedTextのstringattributeプロパティを使用する必要があります。

その実際にタイプNSMutableAttributedStringの私は最初、私はそれを操作できる可変タイプに label.AttributedTextをキャスト。 ‡

が、これは次の使用します行うには:

var mutable = Control.AttributedText as NSMutableAttributedString; 
UIStringAttributes uiString=new UIStringAttributes(); 

は、あなたが最初の行にインデントを設定する必要があります(あなたはすでにどのように知っているこの方法を実行します。)、段落スタイルのheadIndentを以下のように設定します。

これは、Objective-Cのように完璧ではないかもしれないから変換された:&ダガー。

NSMutableParagraphStyle paragraphStyle = new NSMutableParagraphStyle(); 
paragraphStyle.headIndent = 14; 

NSDictionary attributes(){ 
    StyleAttributeName = paragraphStyle; 
}; 

mutable.AddAttribute(attributes); 

Control.attributedText = mutable; 

私はあなたの「FirstLineHeadIndent」コードと組み合わせて、このようなものは、トリックを行うべきだと考えています。


‡How to manipulate NSAttributedString

‡ IOS

CGRect checkBoxFrame = [self.textView convertRect:self.checkView.bounds fromView:self.checkView]; 
checkBoxFrame.origin.x -= self.textView.textContainerInset.left; 
checkBoxFrame.origin.y -= self.textView.textContainerInset.top; 
UIBezierPath *checkBoxPath = [UIBezierPath bezierPathWithOvalInRect:checkBoxFrame]; 
self.textView.textContainer.exclusionPaths = @[checkBoxPath]; 

TextKitフレームワークの使用Objective-C second line with indent

+0

これはインデントしても機能しません**最初の2行** – nicks

+1

3行をインデントする必要がある場合はどうすればよいですか? – nicks

+0

私は正直言って、あなたは簡単に2つ以上の行をインデントすることはできません。 – Digitalsa1nt

4

それはあなたがストーリーボードでAttributed文字列としてごUILabelテキストを設定する必要があるのTextView

+1

C#の解決策ではありませんが、問題は面白いです。 =) – Digitalsa1nt

+0

私は 'UILabel'の解決策が必要です。 – nicks

+0

TextViewのユーザー対話を無効にすると、Labelが表示されます。 UILabelは読み取り専用のUITextViewです。どちらも似ています。 https://stackoverflow.com/a/6040449/5215474 – Saranjith

1

のコンテンツ内の画像パスを除外します。

は、その後、各行のインデントを編集することができ、そしてまた、あなたはテキストエディタで作成した任意のテキストを貼り付けることができますし、それはそのインデントだけでなく、他の属性を維持します。ここで

@IBOutlet weak var label: UILabel! 
let text = "\tfirst line\n \tsecond line\nthird line\nforth line" 

let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.left, location: 15, options: [:])] 
paragraphStyle.headIndent = 10 

label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle]) 

はそれを設定する方法の例です:

あなたはもちろん、プログラムでこれらの属性を操作することができ、ここでは一例である

enter image description here

ここ

インデントを設定する方法であります:

enter image description here

ここ

は、シミュレータ上の例である:[?どうやってiOSの中で複数行UILabelの最初の行のみをインデントできます]の

enter image description here

+0

私の答えの問題は何ですか?私を啓発してください。 スペースでインデントするのは良い解決策ではないので、Askerは画像またはチェックボックス –

+0

に従ってテキストを配置する必要があると指定していません – nicks

+0

スペースでない場合はどうなりますか? – nicks

関連する問題