2016-11-16 3 views
0

最初の行をxポイントだけインデントした複数行のラベルが必要です。なぜUILabelの最初の行のインデントがカスタムフォントでうまくいかないのですか?

私はNSAttributedStringとそのプロパティfirstLineHeadIndentを使用しました。

テキストが1行以上の長さにすぎない場合を除いて、ほとんどの場合、これは機能します。その場合、インデントを無視することがわかりました。そして、ラベルの後ろには、インデントされた正確な量のためにラベルの縁があります。

let text = "Hello World! Hello World! Hee" 
let attString = NSMutableAttributedString(string: text) 
let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.firstLineHeadIndent = 40 
attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length)) 
attString.addAttribute(NSFontAttributeName, value: label.font, range: NSMakeRange(0, attString.length)) 
label.attributedText = attString 

ラベルが既に破損している場合があります。 enter image description here

は、ここで私は少し長い文章を作る場合だとそれがうまく機能: enter image description here

私はシステムフォントを使用している場合、それはすべての良い動作することに注意してください。カスタムフォントの場合のみです。この場合、Rubikというフォントを使用します。このフォントでどのように動作させるか考えていますか?

+0

try label.textAlignment = .center – Joe

+0

何も変更されませんでした。 –

+0

'paragraphStyle.headIndent'を使用したくない場合は、label.lineaBreakMode = .ByTruncatingTailまたはByWordWrappingまたは他のモード – Joe

答えて

1

注:私はあなたがheadIntentあなたがparagraphStyle.headIntentを使用する必要があります使用したい.IFあなただけのfirst lineheadIntentを設定あなたのpost.Fromでコードを言及したテスト・フォントとしてRubik-Regular fontを使用しています。

let text = "Hello World! Hello World! Hee" 
    let attString = NSMutableAttributedString(string: text) 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.alignment = .left 
    paragraphStyle.firstLineHeadIndent = 40 
    paragraphStyle.headIndent = 40 
    paragraphStyle.lineBreakMode = .byTruncatingTail 
    attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length)) 
    attString.addAttribute(NSFontAttributeName, value: UIFont(name: "Rubik-Regular", size: 25)!, range: NSMakeRange(0, attString.length)) 
    label.attributedText = attString 
    label.numberOfLines = 0 
+0

しかし、私はすべての行に字下げをする必要はありません。初めてで。問題はちょうど私が1行のテキストを持ち、後ろが野生になる場合です。 –

関連する問題