2010-09-02 6 views
5

J'ai du mal à essayer d'animer le redimensionnement d'un UIWebView, et je ne sais pas où aller.Animer le redimensionnement d'un UIWebView

Voici ce que je veux accomplir: J'ai deux vues, l'une au-dessus de l'autre (imaginez deux carrés, l'un au-dessus de l'autre). La vue de dessus est une UIWebView, et la plus basse sera appelée UIView (je n'ai aucun problème avec le bas). J'ajuste les deux vues chaque fois que le nouveau contenu est chargé. J'ai aussi un bouton qui devrait cacher la vue de dessous ou l'afficher, selon son état précédent.

C'est là que le problème se déclenche. Lorsque la vue de dessous est cachée, appuyer sur le bouton agrandira son cadre et réduira le cadre UIWebView. C'est très bien. Mais si la vue de dessous est affiché et le bouton est enfoncé, le cadre UIWebView deviendra plus grande, et il y a quelques problèmes avec elle:

  • Si le UIWebView défile jusqu'au fond, il " saute un peu avant de redescendre (devenir plus gros); Si le UIWebView défile jusqu'en haut, il descend comme prévu, tant qu'il y a suffisamment de contenu à faire défiler derrière la vue de dessous.

En général, ce que j'ai appris est que si le contenu encore derrière la vue de dessous est supérieure à la quantité de redimensionnement qui se passe, sans saut se produit. Sinon, c'est le cas.

J'ai fait beaucoup de recherche, asked a previous question et donc je suppose que c'est une conséquence de chargement paresseux le UIWebView. Ce "saut" se produit de sorte qu'il est automatiquement redimensionné (montrant tout le contenu, même si une partie de celui-ci est hors écran), puis redescend. Sinon, il s'agirait d'étendre et de charger du nouveau contenu en même temps, ce qui nécessiterait beaucoup plus de puissance de processeur. J'ai expérimenté des cadres, des limites et des centres, et jusqu'à présent, je n'ai rien trouvé. Est-ce que mon hypothèse est correcte? N'y a-t-il pas un moyen simple de redimensionner la façon de redimensionner le UIWebView pour qu'il ne descende que lorsqu'il est plus grand et qu'il garde le bas du défilement?

En théorie, je pense que le bon moyen serait de rendre le UIWebView plus grand vers le haut, en gardant sa position inférieure actuelle, puis l'animer en l'abaissant. De cette façon, le contenu le plus haut serait déjà chargé. Mais je n'ai pas eu de succès avec ça.

Si quelqu'un a une expérience avec cela, s'il vous plaît partager. Et merci beaucoup.

Répondre

0

Si vous faites défiler vers le bas d'une page Web suffisamment haute, essayez d'animer la vue Web vers le bas sans changer sa taille, puis modifiez la hauteur des vues Web pour que le haut revienne à l'endroit voulu. Vous pouvez temporairement remplir l'espace restant lorsque la vue Web descend avec une sorte de motif.

+0

Ce ne serait pas très joli pour les utilisateurs ... Et même ainsi, je ne connais aucun moyen de détecter si UIWebView a suffisamment défilé. J'ai expérimenté avec javascript (pageoffset et hauteur de défilement totale) sans succès, aussi. J'ai besoin d'un moyen d'obtenir le décalage en bas, pas en haut (c'est ce que retourne pageoffset). –