resize toutes les sous-vues dans scrollViewDidZoom

Voici ma design d'écran.

entrez la description de l'image ici .

Je veux Zoom in/out in **mainView**. mainView Width & Height is 300. Zoom in/out in **mainView**. mainView Width & Height is 300. Pour effectuer un zoom avant / arrière j'ai mis en application la méthode ci-dessous et son fonctionnement bien avec ceci.

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

Tout va bien jusqu'à présent. J'ai mis scroll.minimumZoomScale=1 et scroll.maximumZoomScale=5 .

Pendant le zoom dans le time, l' mainView Frame increase depend on **scrollView.zoomScale** et j'ai check - (void)scrollViewDidZoom:(UIScrollView *)scrollView dans cette méthode.

Au zoom dans le time

 **if i get scrollView.zoomScale=2 than mainView Width & height become 600 if i get scrollView.zoomScale=3 than mainView Width & height become 900** 

Pendant ce process innerView resize en raison de la propriété autoresize.Mais la largeur et la hauteur de innerView est de 100 (ne pas changer à l'heure de zoom avant / arrière).

Pouvons-nous changer cela selon l'échelle?

Enfin ce que je veux que chaque fois que innerView & lblTest frame changent que je veux augmenter / diminuer le numberOfLine de lblTest au lblTest du zoom in/out .

J'ai essayé d'append innerView & lblTest manuellement mais en obtenant le problème que sa largeur et sa hauteur augmentent plus que sa superview (mainView).

Vraiment apprécié Si quelqu'un sait comment l'archiver.

Merci d'avance.

Lorsque vous zoomez dans la vue zoomView , le zoomView ( mainView dans votre cas) n'est pas redimensionné, juste une transformation affine appliquée sur son calque ( CALayer ). Par exemple, en cas de zoomscale 1.2, c'est: [1.2, 0, 0, 1.2, 0, 0] . Donc ses limites ne sont pas changées – tout son contenu est mis à l'échelle vers le haut / bas, il affecte aussi sa propriété frame – donc ni la vue intérieure contenue, et l'label sera redimensionnée, juste agrandie / baissée lors du rendu de mainView, c'est pourquoi leur cadre n'est pas affecté.

- (void)scrollViewDidZoom:(UIScrollView *)scrollView simplement - (void)scrollViewDidZoom:(UIScrollView *)scrollView dans le délégué et imprimez le frame, bounds, layer.affineTransform la vue principale frame, bounds, layer.affineTransform pour voir ce qui se passe lors du zoom.

Pour faire ce que vous voulez, vous devez ajuster l'label en fonction du zoomScale :

 - (void)scrollViewDidZoom:(UIScrollView *)scrollView { float zoomScale = scrollView.zoomScale; self.label.bounds = CGRectMake(0, 0, 100*zoomScale, 100*zoomScale); // supposing that label's original size is {100, 100} self.label.layer.affineTransform = CGAffineTransformMakeScale(1.0/zoomScale, 1.0/zoomScale); }