アプローチは常に同じです:ビュー/コントロール/のTextViewにAttributedStringの 2.セットに 1ターンのhtml ..どんな
この情報がお役に立てば幸いです。私はすべての時間
import UIKit
public extension UIButton {
public func setHTMLTitle(title: NSString?, for state: UIControlState) {
guard let title = title else {
setTitle(nil, for: state)
return
}
guard let titleLabel = titleLabel else {
setTitle(nil, for: state)
return
}
if titleLabel.font == nil {
titleLabel.font = UIFont.systemFont(ofSize:UIFont.systemFontSize)
}
var c = titleColor(for: state)
if c == nil {
c = UIColor.black
setTitleColor(c, for: state)
}
setAttributedTitle(html(html: title, font: titleLabel.font, color: c!), for: state)
}
}
public extension UILabel {
public func setHTMLText(text: NSString?) {
guard let text = text else {
attributedText = nil
return
}
if font == nil {
font = UIFont.systemFont(ofSize:UIFont.systemFontSize)
}
if textColor == nil {
textColor = UIColor.black
}
attributedText = html(html: text, font: font, color: textColor)
}
}
public extension UITextView {
public func setHTMLText(text: NSString?) {
guard let text = text else {
attributedText = nil
return
}
if font == nil {
font = UIFont.systemFont(ofSize:UIFont.systemFontSize)
}
if textColor == nil {
textColor = UIColor.black
}
attributedText = html(html: text, font:font!, color:textColor!)
}
}
//shared helpers
private func html(html:NSString, font:UIFont, color:UIColor) -> NSAttributedString {
let colorName = colorToHexString(color: color)
let fontName = font.fontName
let fontSize = font.pointSize
let style = "<style>body{color: \(colorName); font-family: '\(fontName)'; font-size:\(fontSize)px;}</style>"
let htmlString = html.appending(style)
let d = htmlString.data(using: String.Encoding.utf8)!
let o = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject, NSCharacterEncodingDocumentAttribute: NSNumber(value: String.Encoding.utf8.rawValue) as AnyObject] as [String:AnyObject]
do {
let attrStr = try NSAttributedString(data:d, options:o, documentAttributes:nil)
return attrStr
}
catch {
return NSAttributedString(string: "")
}
}
private func colorToHexString(color: UIColor) -> String {
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
color.getRed(&r, green: &g, blue: &b, alpha: &a)
let rgb:Int = (Int)(r*255)<<16 | (Int)(g*255)<<8 | (Int)(b*255)<<0
return String(format:"#%06x", rgb)
}
***免責それを使用し、これは適切な解析のための私のオープンソースライブラリDDUtils
の一部であり、あなたは適切なJSONデータを取得する必要があります。 HTMLからの応答を取得するためのコードを作成することもできます.HTML解析として呼び出すこともできますが、モバイルアプリではあまり適していません。レスポンスから余分なHTMLタグを削除することができれば、JSONレスポンスは問題ありません。 – Wolverine
あなたは[この回答](http://stackoverflow.com/questions/31080818/what-is-the-best-practice-to-parse-html-in-swift)をチェックしたいかもしれません –
@Wolverineここに私の目的はありますか?データ内のHTMLタグごとにテキストを表示します。だからテーブルタグがあればそれはテーブルなどを描画する必要があります – AjDev