2009-12-02 12 views
17

J'ai créé un UIScrollView zoomable et ajouté 100 sous-vues (carrelées). La vue défile parfaitement à gauche et à droite. Cependant, j'aimerais autoriser le zoom.Effectuer correctement un zoom sur un UIScrollView qui contient plusieurs sous-vues

Pour ce faire, je lis que mon représentant doit mettre en œuvre:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return ???; 
} 

J'ai vu des exemples qui ont seulement un sous-vue pour zoomer, ils reviennent que dans cette sous-vue méthode. Dans mon cas, cependant, j'en ai beaucoup plus. Quelle est la bonne façon de faire le zoom?

J'ai essayé de créer un autre UIView et d'ajouter les 100 sous-vues à celui-ci. Et puis retournez cette vue sur la méthode ci-dessus, mais je ne fonctionne pas (elle zoome mais une fois qu'elle s'arrête, elle n'est plus interactive).

+0

Avez-vous essayé de retourner le UIScrollView lui-même? – fbrereto

+0

Oui, c'était la première chose que j'ai essayé. Cela a aussi gâché les choses ... – Dimitris

Répondre

40

Exactement,

C'est ce que Apple est également mentionner dans le Scroll View Programming Guide:

Il suffit de créer une vue, ajouter tous les sous-vues à ce point de vue et ajouter la nouvelle vue comme un seul sous-vue à la scrollview. ..

Puis, dans la méthode déléguée viewForZoomingInScrollView retourner l'objet à l'index 0:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return [self.scrollView.subviews objectAtIndex:0]; 
} 
2

J'ai créé la vue où j'ai ajouté tout en utilisant:

UIView *zoomableView = [[UIView alloc] init]; 

sans fixer son cadre.

Le problème a été résolu lorsque, après avoir ajouté toutes les sous-vues, j'ai défini son cadre sur quelque chose de suffisamment grand pour accueillir toutes les sous-vues en mosaïque.

+0

a également fonctionné pour moi - en réglant la taille d'image de la vue père à la taille maximum de ses sous-vues (c'était la taille de l'image dans mon cas). – Yony

0

Vous VHA e pour retourner ce que vous allez ajouter des vues pour faire défiler la vue en tant que sous-vues.

Ex: Si vous ajoutez affichage de l'image pour faire défiler vue puis écrire

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
return imageView object; 
}