2008-10-19 15 views
10

¿Es posible escalar un UIView a 0 (ancho y alto es 0) usando CGAffineTransformMakeScale?Escala UIView a 0 usando CGAffineTransformMakeScale

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

¿Por qué arrojaría un error de "<Error>: CGAffineTransformInvert: singular matrix."?



Actualización: Hay otra manera de escalar por una UIView a 0

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

[UIView commitAnimations]; 

Respuesta

10

Hay muchas ocasiones en que los frameworks subyacentes necesitan invertir su matriz de transformación. La inversa de una matriz es alguna matriz M 'de tal manera que el producto de su matriz M y la matriz inversa M' es la matriz identificar 1.

1 = M * M'

La matriz de cero no tiene un inverso, de ahí el mensaje de error.

8

No estoy seguro de que es posible hacer esto; Comenzará a encontrar problemas de división por cero. Si intenta hacer esto, podrás crear una transformación que parece:

 
    0 0 0 
    0 0 0 
    0 0 1 

que, al aplicarse a cualquier otra transformada, producirá lo anterior transformada.

¿Por qué no ocultar la vista (si quiere escalarla de la vista) o establecer el factor de escala en algo como 0.001 (si desea escalarlo)?

1

usted podría intentar:

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

o en línea todo el asunto.

Cuestiones relacionadas