2008-10-19 7 views
10

Est-il possible de redimensionner un UIView à 0 (largeur et hauteur de 0) en utilisant CGAffineTransformMakeScale?Echelle UIView à 0 en utilisant CGAffineTransformMakeScale

view.transform = CGAffineTransformMakeScale (0,0f, 0,0f);

Pourquoi une erreur de "<Error>: CGAffineTransformInvert: singular matrix." aurait-elle été détectée?



Mise à jour: Il y a une autre façon de mise à l'échelle vers le bas un UIView à 0

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.3]; 
view.frame = CGRectMake(view.center.x, view.center.y, 0, 0); 

[UIView commitAnimations]; 

Répondre

10

Il y a beaucoup de cas où les frameworks sous-jacents ont besoin d'inverser votre matrice de transformation. L'inverse d'une matrice est une matrice M « de telle sorte que le produit de votre matrice M et la matrice inverse M » est la matrice identité 1.

1 = M * M »

La matrice zéro n'a pas un inverse, d'où le message d'erreur.

8

Je ne suis pas sûr qu'il est possible de le faire; vous commencerez à vous lancer dans des problèmes de division par zéro. Si vous essayez de le faire, vous allez créer une transformation qui ressemble à:

 
    0 0 0 
    0 0 0 
    0 0 1 

qui, lorsqu'il est appliqué à toute autre transformation de, produira ci-dessus transform. Pourquoi ne pas simplement masquer la vue (si vous voulez la mettre hors de vue) ou régler le facteur d'échelle à quelque chose comme 0,001 (si vous voulez le mettre à l'échelle)?

1

vous pouvez essayer:

CGAffineTransform transform = myView.transform; 
myView.transform = CGAffineTransformScale(transform. 0.0f, 0.0f); 

ou en ligne l'ensemble.