UIWebView dynamique de la taille du contenu
J'ai été en regardant autour et n'était pas en mesure de voir toute swift liées façons de le faire. J'essaie d'obtenir mon UIWebViews hauteur dynamique. J'ai une UIWebView qui charge les données à l'aide de la loadHtmlString fonction.Le truc, c'est que je suis le chargement des données à partir d'une base de données sqlite, chaque fois que je charge une autre chaîne de longueur différente et, naturellement, la vue web obtient de hauteur différente.
Maintenant, j'ai besoin de savoir comment faire de la UIWebView que la hauteur exacte pour le chargement de mon prochain contenu droit en vertu de la webView. C'est ce que j'ai jusqu'à présent
var jobSkillView = UIWebView(frame: CGRectMake(-5, 480.0, screenWidth, 300.0))
jobSkillView.loadHTMLString("<html><body p style='font-family:arial;font-size:16px;'>" + jobSkills + "</body></html>", baseURL: nil)
jobSkillView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")
jobSkillView.scrollView.scrollEnabled = true
jobSkillView.scrollView.bounces = true
jobSkillView.sizeToFit()
border.addSubview(jobSkillView)
J'ai trouvé quelque chose de cette SORTE, mais vous ne savez pas comment l'associer à l' UIWebView
's image:
func webViewDidFinishLoad(jobSkillView : UIWebView){
//Change the height dynamically of the UIWebView to match the html content
var jobSkillViewFrame: CGRect = jobSkillView.frame
jobSkillViewFrame.size.height = 1
jobSkillView.frame = jobSkillViewFrame
var fittingSize: CGSize = (jobSkillView.sizeThatFits(CGSizeZero))
jobSkillViewFrame.size = fittingSize
//webViewFrame.size.width = 276; Making sure that the webView doesn't get wider than 276 px
jobSkillView.frame = jobSkillViewFrame
var jobSkillViewHeight = jobSkillView.frame.size.height
}
Vous devez vous connecter pour publier un commentaire.
Ce post a été mis à jour pour Swift 5 &
WKWebView
Donc c'est vraiment un grand de la fonction que vous avez écrit là, l'OP!
C'est juste une plus courte, plus élégante version de votre code:
De la migration vers
WKWebView
1) importation
WebKit
2) faites votre
ViewController
hériter deWKNavigationDelegate
3) brancher le
WKWebView
déléguée:webView.navigationDelegate = self
4) mettre en œuvre le protocole suivant de la fonction:
Après la migration de
UIWebView
àWKWebView
, approche ci-dessus ne semble pas fonctionner.Ce que vous pouvez faire à la place, c'est de changer la ligne avec
webView.sizeThatFits(CGSize.zero)
à:Le code complet pour
WKWebView
serait alors:cela n'a travaillé que pour moi
assurez-vous que vous avez créé un débouché pour myWebViewHeightConstraint
Voici ma classe personnalisée de travailler avec des personnalisés UIWebViews, il a tout ce qu'il contient pour obtenir le scrollview contenu en hauteur, réglez UIWebView de la hauteur et de créer un personnalisé à la hauteur de contrainte pour obtenir la mise en page automatique de travail. Il a également en charge personnalisée de style CSS...
J'ai eu des problème avec:
Parfois, ma vue web de la hauteur n'a tout simplement pas calculacte et est resté sur la valeur par défaut.
Donc finalement j'ai réussi à trouver une meilleure solution qui fonctionne très bien, il suffit de remplacer la ligne de code avec:
C'est la mienne final code complet:
Ok j'ai compris ce que je faisais de mal alors maintenant, je sais comment appeler cette fonction. Tout d'abord, je devais appeler un UIWebViewDelegate dans ma classe. Puis mettre mon var jobSkillView à (jobSkillView.delegate = self). Maintenant, c'est où j'ai fait ma grosse erreur. Dans mon code j'ai eu un si d'autre instruction que j'ai été jeter mon func webViewDidLoad dans. J'étais censé le sortir de cet état de fait et dans la classe pour remplacer mon cadre pour la UIWebView. En parlant de l'image **** N'OUBLIEZ pas DE RÉGLER VOTRE HAUTEUR DE 1. Alors, et seulement alors cette fonction va travailler pour votre UIWebView. Après cela, vous devriez avoir un entièrement fonctionnel en fonction de la hauteur de votre UIWebView pour Swift.
Utiliser le code suivant pour faire votre UIWebView hauteur dynamique dans Swift 3.x
vous pouvez utiliser cette classe pour makking webview taille pour s'adapter à swift 3 et swift 4
Lors de changement de police à l'époque de changement
Webview
hauteur à 1, plutôt que d'obtenir la bonneoffsetHeight
pourWebview
Je suis en utilisant la chaîne HTML dans mon charger et utiliser la méthode suivante dans la Webview délégué:
et le code complet: