2009-12-08 4 views
0

Je souhaite utiliser deux vues dans UIScrollView. Dans la première vue, lorsque je redimensionnerai jusqu'à 50% de sa taille, la deuxième vue s'affichera, puis la première vue se cachera et la seconde continuera à défiler vers le bas. Maintenant, mon problème est comment puis-je faire défiler la deuxième vue?Deux sous-vues dans UIScrollView

Merci.

Répondre

1

Vous pouvez superposer autant de vues (cachées ou non) que vous le souhaitez sur un UIScrollView (c'est-à-dire pour qu'elles défilent toutes et soient zoomables).

La question est, voulez-vous que votre deuxième vue soit mise à l'échelle à 1.0 lorsque la première vue est mise à l'échelle à 0.5? Vous pouvez probablement y parvenir en définissant la transformation pour la deuxième vue sur un scaler 2x. Puis attrapez l'événement de zoom (désolé, vous n'avez pas le nom exact à portée de main) et si l'échelle descend à 0,5 ou moins, cachez la première vue et montrez la seconde (et vice-versa, bien sûr) .

[modifier]

Pour redimensionner la deuxième vue que vous feriez quelque chose comme ça juste une fois lors de sa mise en place:

view2.alpha = 0; 
[view2 setTransform:CGAffineTransformMakeScale(2, 2)]; 

ensuite passer outre après l'événement de zoom:


-(void) scrollViewDidEndZooming: (UIScrollView*) scrollView 
         withView: (UIView*) view 
         atScale: (float) scale 
{ 
    if(scale <= 0.5 and prevScale > 0.5) 
    { 
    view1.alpha = 0; 
    view2.alpha = 1; 
    } 
    else 
    { 
    view1.alpha = 1; 
    view2.alpha = 0; 
    } 
    prevScale = scale; 
} 

Bien sûr, toutes les mises en garde habituelles concernant le code non testé s'appliquent.

+0

Merci. Comment puis-je transformer la deuxième vue, alors que la première vue est mise à l'échelle? Et comment la deuxième vue va gérer le pincement ou élargir les gestes? – domlao

+1

Je ne suis pas proche de mon Mac, donc je ne peux pas vous donner le code exact, mais vous pouvez définir la propriété transform de la vue sur une transformée affine 2x scaler et la garder comme ça tout le temps. Fondamentalement, la deuxième vue serait juste cachée jusqu'à ce que vous deviez le changer. – philsquared

+0

Merci beaucoup. Si je passe à la deuxième vue, est-ce que je peux aussi faire un geste de pincement ou d'expansion avec cette deuxième vue? – domlao