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?
3 Réponses :
solution consistait à appeler < / p> dans l'initialisation et p> lorsque la page a fini de chargement. p> 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. P> uIView code> a une propriété code> ScrollView code> qui a
contenu code>, 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: p>
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 code> 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: code>. Pourriez-vous ajouter
nslog (@ "% d", ViewTocapture.loader) CODE> et voir s'il imprime
1 code> ou
0 code>?
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.
edit fort>: nouvelle réponse de moi avec code testé. Ajouter ci-dessous ajoutez également ces Méthode code> à
Capture code>
uiWebView code> dans
uiimage code>. Il capturera également
zone invisible code> aussi. P>
macro code> pour vérifier si
iOS < / code> est
rétina code> affichage p>
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?
Check this out rendu un UIWebView dans un ImageContext
ou simplement utiliser ceci :): p>