2015-02-22 3 views
0

Я строю словарь с большим UITextView с несколькими NSAttributedString для каждого слова. Я пытаюсь установить фиксированное пространство перед строками, как показано ниже, но я не могу установить заголовок в тексте, начиная с «L'ensemble», поскольку это не абзац (не начиная с \ n).NSAttributedString: заголовок по не-параграфам

У вас есть идея достичь этого?

Вот мой код, который до сих пор не работает, как valueParaStyle ничего не делать, потому что valueText не начинается с \ п.

Спасибо.

let senseNumberParaStyle = NSMutableParagraphStyle() 
senseNumberParaStyle.paragraphSpacingBefore = 20 

let valueParaStyle = NSMutableParagraphStyle() 
valueParaStyle.firstLineHeadIndent = 20 
valueParaStyle.headIndent = 20 

for i in 0..<senses.count { 
    let senseNumberText = NSAttributedString(string: "\n\(i + 1).", attributes: [ 
     NSFontAttributeName: UIFont(name: "AvenirNext-Bold", size: 14)!, 
     NSForegroundColorAttributeName: UIColor(red: 1, green: 0.275, blue: 0.294, alpha: 1), 
     NSParagraphStyleAttributeName: senseNumberParaStyle 
    ]) 

    wordText.appendAttributedString(senseNumberText) 

    if let value = senses[i].value { 
     let valueText = NSAttributedString(string: " \(value)", attributes: [ 
      NSFontAttributeName: UIFont(name: "AvenirNext-Regular", size: 15)!, 
      NSForegroundColorAttributeName: UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1), 
      NSParagraphStyleAttributeName: valueParaStyle 
     ]) 

     wordText.appendAttributedString(valueText) 
    } 
} 
+0

«Я не могу установить заголовок на текст, начинающийся «L'ансамблем», поскольку это не абзац »- что вы подразумеваете под этим? –

+0

Ну, я хочу, чтобы все строки имели один и тот же заголовок, но со смещением между числом и началом определения. – Skoua

+0

О, «заголовок» означает «headIndent»? Я бы рекомендовал опубликовать изображение ваших текущих результатов. –

ответ

1

Вы на правильном пути. Вам просто нужно добавить "\t" в вашей первой линии:

var paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.headIndent = 20 

label.attributedText = NSAttributedString(string: "1.\tHere comes your text. Indent as you really want it", attributes:[NSParagraphStyleAttributeName : paragraphStyle]) 

Без "\t":

enter image description here

С "\t":

enter image description here

+0

Спасибо за ваш ответ, но поскольку номер в начале абзаца отличается от определения, заголовок не работает над строками после первого, но это почти хорошо. Есть ли способ сделать две атрибутированные строки одним абзацем? – Skoua

+0

Nevermind, мне пришлось использовать атрибут с диапазоном, я просто получил то, что хотел, спасибо! – Skoua

Смежные вопросы