2010-06-16 5 views
3

Dans UIScrollview, lorsque je fais défiler/glisser, j'ai eu des changements dans scrollview contentOffset qui représentent combien j'ai fait défiler/glisser dans le scrollview. De cette façon, j'ai mis à jour la sous-vue de scrollview pour le défilement. Mais, quand je zoom le scrollview (en utilisant le zoom de pincement), le contentOffsets de la scrollview est également changé. Je ne comprends pas combien contentOffset a changé parce que je ne peux pas relier les changements avec la valeur zoomScale. Donc, y a-t-il des changements de contentOffset pour le zoom? Mon intention est d'obtenir la valeur des changements contentOffset pour faire glisser pendant le zoom (ce qui n'est pas le cas en raison des changements de décalage de contenu de zoom) afin que je puisse mettre à jour la sous-vue de mon scrollview en conséquence.Combien de changements de contenu dans UIScrollview pour zoomer?

Je suis coincé ici. Toute aide sera très appréciée.

grâce

Shaikot

Répondre

5

J'ai mis en place un petit projet de test, et il semble que le contentOffset est multiplié par le zoomScale. Donc, si vous voulez tenir compte de cela, il suffit de le diviser par le zoomScale avant de l'utiliser. Peut-être qu'il est préférable d'illustrer avec un petit exemple: J'ai mis en place un scrollView, et ajouté une vue qui est assez grande pour faire un panoramique et un zoom un peu. À cet égard, j'ai ajouté une petite vue rouge que je veux garder dans la même position, quoi qu'il arrive. j'observe la propriété contentOffset du ScrollView, et je l'ai mis en œuvre comme ceci:

CGPoint contentOffset = self.scrollView.contentOffset; 
CGFloat zoomScale = self.scrollView.zoomScale; 

self.moveView.frame = CGRectMake((contentOffset.x+10)/zoomScale, 
           (contentOffset.y+10)/zoomScale, 
           10, 
           10); 

Cela permet de maintenir la moveView dans la même position sur l'écran, il mise à l'échelle que lorsque l'utilisateur effectue un zoom avant.

J'espère que cela éclaircit un peu, mais laissez-moi savoir si je peux faire plus pour aider.

Questions connexes