7
votes

Uiwebview à uiImage

J'ai essayé de capturer l'image de UiWebView en utilisant cette méthode, mais l'image ne contient que la zone visible de l'écran. Comment capturer le contenu complet de UiWebView, y compris les zones invisibles, c'est-à-dire la page Web en une seule image? xxx


0 commentaires

3 Réponses :


4
votes

Modifier (d'un commentaire de VAD )

solution consistait à appeler < / p> xxx

dans l'initialisation et xxx

lorsque la page a fini de chargement.

vous êtes Capture actuellement uniquement la partie visible car vous limitez le contexte de l'image à ce qui est visible. Vous devez le limiter à ce qui est disponible.

uIView a une propriété ScrollView qui a contenu , vous disant quel est le Taille de la vue Web à l'intérieur de la vue Scroll. Vous pouvez utiliser cette taille pour définir votre contexte d'image comme celui-ci: xxx


8 commentaires

Cela a résolu partiellement le problème. L'image résultante a une taille correcte mais une zone invisible est tout blanche.


@Vad je pense que le problème a à voir avec le ViewTocapture.layer alors. Voir si définition des limites résoudrait temporairement le problème (voir la mise à jour).


Je pense que le problème est que la vue Web ne affiche pas tout le contenu avant de vous défiler.


@Vad Vous avez raison, la vue Web est probablement en train de charger des éléments supplémentaires lorsque vous appelez renderincontext: . Pourriez-vous ajouter nslog (@ "% d", ViewTocapture.loader) et voir s'il imprime 1 ou 0 ?


J'exécute un code d'instantané lorsque la page est entièrement effectuée en cours de chargement. Je soupçonne que UiWebView Content caché n'est pas affiché pour des raisons de sauvegarde de la mémoire jusqu'à ce que vous faites défiler dans ces zones cachées. Je vais confirmer bientôt.


@Vad il y a une chance que le redimensionnement de la vue puisse déclencher un chargement à nouveau. Je ne suis pas sûr de cela, car je n'ai pas accès à une configuration où je pourrais tester cette hypothèse.


La solution consistait à appeler [webview sizetofit] lorsque la page a fini de chargement et de webview.scalespageOfit = Oui; en initialisation.


@Vad merci - j'ai ajouté votre commentaire au texte de la réponse.



1
votes

edit : nouvelle réponse de moi avec code testé.

Ajouter ci-dessous Méthode à Capture uiWebView dans uiimage . Il capturera également zone invisible aussi. xxx

ajoutez également ces macro pour vérifier si iOS < / code> est rétina affichage xxx


2 commentaires

Il en résulte que le contenu visible étant étiré sur l'image et le contenu invisible est toujours tout blanc / blanc.


J'ai testé une page très longue, mais l'application crash quand si (images.compte> 1) {~ uigraphiquebeginimagecontextextextextextextes (taille, non, 0); en raison de la pression de la mémoire. C'est une bonne idée de segmenter, mais je suppose que la pression momicielle est survenue lorsque des images agrégées. Avez-vous une solution?



6
votes

Check this out rendu un UIWebView dans un ImageContext

ou simplement utiliser ceci :): xxx


0 commentaires