Визуализация UIWebView внутри UITableViewCell - PullRequest
0 голосов
/ 17 октября 2018

Может кто-нибудь сказать мне, что я делаю неправильно?

У меня есть TableCell, и внутри нее у меня есть stackView, а внутри него программно добавлен UIWebview.

class ChatTableViewCell: UITableViewCell {

  @IBOutlet var stackView: UIStackView!
  func setupCell(message: ChatMessage) {

        addHtmlToView(msg: "<p>This is <b>bold text</b></p>")
    }

 func addHtmlToView(msg: String) {
         let webView = UIWebView()
        webView.loadHTMLString("<html><body><div id='mainHtml'>" + msg + "</div></body></html>", baseURL: nil)
        webView.backgroundColor = UIColor.clear
        webView.isOpaque = false
        webView.delegate = self
        webView.scrollView.isScrollEnabled = false
        webView.scrollView.bounces = false
        webView.backgroundColor = .red
        webView.scrollView.contentInset = UIEdgeInsets(top: -8, left: -8, bottom: -8, right: -8)
        webView.translatesAutoresizingMaskIntoConstraints = false

        self.stackView.addArrangedSubview(webView)

        heightWebViewConstraint = NSLayoutConstraint(item: webView, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 10)
        widthWebViewConstraint = NSLayoutConstraint(item: webView, attribute: NSLayoutConstraint.Attribute.width, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 1)

         webView.addConstraint(heightWebViewConstraint)
         webView.addConstraint(widthWebViewConstraint)

        NSLayoutConstraint.activate([ heightWebViewConstraint, widthWebViewConstraint])

    }
}

extension ChatTableViewCell: UIWebViewDelegate {

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
       if navigationType == UIWebView.NavigationType.linkClicked {
        UIApplication.shared.openURL(request.url!)
        return false
    }
    return true
}

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.frame.size.height = 1.0        
    webView.sizeToFit()

    let result = NumberFormatter().number(from: webView.stringByEvaluatingJavaScript(from: "document.getElementById('mainHtml').offsetHeight") ?? "0")

    heightWebViewConstraint.constant = 200        
}

}

После этого ячейка визуализируется следующим образом enter image description here Далее я буду использовать значение из «результата», но это также не работает с жестко закодированным значением

enter image description here

1 Ответ

0 голосов
/ 17 октября 2018

Я думаю, что вы должны добавить свойство распределения представления стека как "Fill Equally"

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...