一方で、回答で示唆されているようにUIWebView
を使用してください。 UITextView
と同じ機能がありますが、次のような方法でテキストの高さを計算する必要があります:
このメソッドは、UITextView
のインセットを考慮せずに高さを返します。後でそれら。ここで
func heightForText(text: String?, width: CGFloat) -> CGFloat {
//Get attributed text from string
let attributedText = text?.toHtmlTextWithAttributes()
if let attributedText = attributedText {
let rect = attributedText.boundingRectWithSize(
CGSizeMake(width, CGFloat.max),
options: [.UsesLineFragmentOrigin, .UsesFontLeading],
context: nil)
return rect.height
}
//Return any default height
return 100
}
はNSAttributedString
にテキストを変換String
拡張したものです。かなり大規模なリストにそれがパフォーマンスの問題につながる可能性があるため
また extension String {
public func toHtmlTextWithAttributes() -> NSAttributedString? {
let encodedData = self.dataUsingEncoding(NSUTF8StringEncoding)
if let data = encodedData {
let paragrahpStyle = NSMutableParagraphStyle()
paragrahpStyle.lineBreakMode = .ByWordWrapping
let attributes: [String: NSObject] = [
NSParagraphStyleAttributeName: paragrahpStyle,
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
]
return try! NSAttributedString(data: data, options: attributes, documentAttributes: nil)
}
return nil
}
}
UITableViewAutomaticDimension
の使用は、推奨されません。
一方、UITextView
を必ず使用する必要がある場合は、htmlを解析してタイトルと段落を抽出し、2つの区切りで表示することができますUITextView
。 `NSAttributedString`は本当に唯一の軽量の変換のために働くに
textView.textContainerInset = UIEdgeInsetsMake(0, 20, 0, 0)
HTML:その方法では、このような二
UITextView
のインセットを調整することができるでしょう。その簡単な説明は、[here](http://ericasadun.com/2015/08/24/css-and-attributed-strings/)を参照してください。あなたは 'UIWebView'または' WKWebView'を使ってみましたか? – beyowulf@beyowulf、実際には私はtableviewCellの内部でtextviewを取ったので、いくつかのHTMLコンテンツを賢明に表示する必要があります。だから、セクションヘッダーを持つ各セクションには、CSSがあるhtmlコンテンツをレンダリングしなければならないtextviewとともにその内部にrawが1つあります。 1.uiTableViewAutomaticDimensionは、テキストビューのコンテンツごとに行の高さを調整できるため、textviewを使用しました。2.ハイライトのテキスト選択を提供する必要があります。 – Nitesh
まあ、 'UIWebView'や' WKWebView'のような 'UITextView'は本質的なコンテンツサイズを持たないので、自動次元でどのように役立つのかよくわかりません。また、テキストはWebビューでも選択可能ですが編集可能ではありません。 – beyowulf