2016-06-05 6 views
0

Jeder weiß, wie man das macht? Mit einer benutzerdefinierten Zelle ist die Unterbeschriftung ein HTML-Snippet mit benutzerdefinierten CSS-Klassen, die vorhanden sein müssen, um den Text an bestimmten Stellen einzufärben.Zell-Label mit attributierten String aus HTML mit benutzerdefinierten CSS-Klassen füllen

in der AttrResult gibt es HTML mit CSS-Klasse (sagen wir ABC). Gibt es eine Möglichkeit in der attributierten Zeichenfolge zu sagen, dass es sich um Foo-Klasse handelt? Oder gibt es eine andere Möglichkeit als die Regex- oder String-Manipulation für jede Zeichenkette, die ich aus der API bekomme? es kann Hunderte sein und es ist nicht meine API, also kann ich die HTML-Tags darin nicht ändern.

HTML Text Beispiel:

bla bla bla <span class="HightlightTextClass"> highlighted text </span> more bla bra bra text

"

10x

+0

Können Sie den HTML-Code schreiben? – Brandon

+0

Versuchen Sie diese Antwort http://stackoverflow.com/a/28132610/5222077 (Ich bin nicht 100% sicher, dass es unterstützt cutom css, könnte es inline css unterstützen) – kye

+0

Ein String Beispiel für den Typ os Text, ich komme von Die API, die Klasse in der Spanne ist zum Hervorheben des Textes für diesen Bereich und ich muss den gleichen Text hervorheben ... 10x – Erez

Antwort

1

Sie könnten versuchen, einen benutzerdefinierten style-Tag regex oder ähnlich einfügen, oder Sie können die neu einstellen Schriftart, Farbe, Hintergrundfarbe usw., indem das Dokumentattribut tatsächlich verwendet wird s der attributierten Zeichenfolge.

+0

so gibt es keine Möglichkeit, die Klasse in einem NSHTMLTextDocumentType zu steuern? – Erez

+0

10x, ich habe die Lösung gepostet, basierend auf Ihren Vorschlägen, also habe ich Ihnen einen Punkt gegeben – Erez

0

Wenn jemand interessiert ist die vollständige Lösung für dieses Problem, war für mich wie ein Zauber:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = self.tableView!.dequeueReusableCellWithIdentifier("SearchResCell", forIndexPath: indexPath) as! SearchResCell 

    if self.searchStore != nil && self.searchStore.searchResult.count > 0 && self.searchStore.searchResult[0].searchResults.count > 0 { 
     let searchRes = searchStore.searchResult[0].searchResults[indexPath.row] 

     cell.titleLabel.text = searchRes.displayTitle 
     cell.titleLabel.textColor = UIColor.blueColor() 

     if let regex = try? NSRegularExpression(pattern: "class=\"hlt\"", options: .CaseInsensitive) { 
      let modStr = regex.stringByReplacingMatchesInString(searchRes.wordsClean, options: .WithTransparentBounds, range: NSMakeRange(0, searchRes.wordsClean.characters.count), withTemplate: "style=\"background-color:#F7DB6A\"") 

      let attrResult = try! NSAttributedString(
       data: modStr.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!, 
       options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], 
       documentAttributes: nil) 

      cell.subtitleLabel.attributedText = attrResult 
      cell.subtitleLabel.textAlignment = NSTextAlignment.Right 

     } 
    } 

    return cell 
} 
Verwandte Themen