2016-05-31 3 views
0

Я устанавливаю атрибут на этикетке, код которой написан ниже, Единственная проблема заключается в том, что мой шрифт и цвет не отображаются на этикетке.Связанная строка, не работающая с меткой

func setDataWithContent(content: EmbeddedContent) { 

     if let htmlString = content.text { 
      do { 
       let encodedData = htmlString.dataUsingEncoding(NSUTF8StringEncoding)! 
       let attributedOptions : [String: AnyObject] = [ 
        NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
        NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding, 
        NSFontAttributeName: UIFont(name: "SourceSansPro-Regular", size:16)!, 
        NSForegroundColorAttributeName: UIColor.redColor() 
       ] 
       let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) 
       htmlTextLabel.attributedText = attributedString 

      } catch { 
       fatalError("Error: \(error)") 
      } 
     } 

    } 

Может ли кто-нибудь помочь?

+1

Это нормально. Посмотрите на документ 'NSAttributedString (data: options: documentsAttributes:)'. 'NSFontAttributeName' и' NSForegroundColorAttributeName' будут проигнорированы. На них потом на 'attributedString' (можно использовать' NSMutableAttributedString', чтобы иметь возможность изменять его атрибуты.). – Larme

+0

http://stackoverflow.com/questions/27728466/use-multiple-font-colors-in-a-single-label-swift/27728516#27728516 –

ответ

1

NSAttributedString(data:options:documentsAttributes) не поддерживает NSFontAttributeName и NSForegroundColorAttributeName в своих вариантах. Они будут игнорироваться.

Таким образом, вы должны использовать NSMutableAttributedString, а также добавить свои собственные эффекты впоследствии:

let encodedData = htmlString.dataUsingEncoding(NSUTF8StringEncoding)! 

let attributedOptions : [String: AnyObject] = [ 
    NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
    NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding 
] 
let attributedString = try NSMutableAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil) 
let addedEffects:[String:AnyObject] = [          
    NSFontAttributeName: UIFont(name: "SourceSansPro-Regular", size:16)!, 
    NSForegroundColorAttributeName: UIColor.redColor() 
] 
attributedString.addAttributes(addedEffects, range:NSRange(location:0,length:attributedString.length) 
htmlTextLabel.attributedText = attributedString 

Примечание: Я не знаю, если он компилирует, но вы должны получить идею.

Я отправил ответ, чтобы иметь «быстрый способ» понять проблему, но это, очевидно, дубликат и с радостью удалит ответ, если вопрос будет помечен как таковой.

+0

Вы не можете удалить этот ответ после его принятия. – JAL

+0

К сожалению, этого не ожидал. Мысль также заключалась в том, что ОП отметит его вопрос как дубликат. – Larme

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