Comment implémenter UIScrollView avec plus de 1000 sous-vues?
Je suis en difficulté avec l'écrit de la partie d'une application qui devrait se comporter comme le natif de l'iphone de l'application photo. Regardé iphone sdk de développement d'applications livre à partir de Orielly qui a donné un exemple de code pour la mise en œuvre de cette page-pichenette. Le code il y a d'abord créé tous les sous-vues, puis masquer/afficher. À un moment donné seulement 3 des sous-vues sont visibles de repos sont cachés. Après beaucoup d'effort je l'ai eu à travailler avec l'application qui à l'époque avait seulement environ 15 pages.
Dès que j'ai ajouté plus de 300 pages, il est devenu clair qu'il y a de la performance/des problèmes de mémoire avec cette approche de la pré-affectation, donc beaucoup de sous-vues. Alors j'ai pensé que peut-être pour mon cas, je devrais juste d'allouer 3 sous-vues et au lieu de masquer/afficher. Peut-être que je devrais juste de supprimer/ajouter des sous-vues au moment de l'exécution. Mais ne peux pas savoir si UIScrollView peut mettre à jour dynamiquement le contenu. Par exemple, au début il y a 3 images à différents x-décalages ( 0, 320, 640 ) à partir de l'écran tel que compris par les UIScrollView. Une fois que l'utilisateur se déplace à la 3e page comment puis-je m'assurer que je suis en mesure d'ajouter de la 4ème page et de le supprimer de la 1ère page et encore UIScrollView ne pas se confondre ?
En espérant que il y a une solution standard pour ce genre de problème...quelqu'un peut-guide ?
source d'informationauteur climbon | 2010-01-16
Vous devez vous connecter pour publier un commentaire.
UIScrollView est juste une sous-classe de UIView il est donc possible d'ajouter et de supprimer des sous-vues au moment de l'exécution. En supposant que vous avez une largeur fixe de photos (320px) et il y a 300 d'entre eux, alors votre vue principale serait
300 * 320
pixels de large. Lors de la création de défilement de la vue, initialiser le cadre que large.De sorte que le défilement de l'affichage de l'image aurait les dimensions (0, 0) à (96000, 480). Chaque fois que vous ajoutez un sous-vue, vous devrez changer l'image de sorte qu'il s'adapte à la position correcte dans la vue parente.
Disons que nous sommes en ajoutant le 4e photo de défilement de la vue. C'est l'image serait de (960, 480) (1280, 480). C'est facile à calculer, si vous pouvez en quelque sorte associé un index avec chaque image. Puis de les utiliser pour calculer l'image de l'image où les indices commencent à 0:
à
Retrait de la première image/sous-vue devrait être facile. Tenir un tableau de 3 sous-vues actuellement à l'écran. Chaque fois que vous ajoutez un nouveau sous-vue à l'écran, également l'ajouter à la fin de ce tableau, et ensuite supprimer le premier sous-vue dans ce tableau à partir de l'écran trop.