views:

3973

answers:

2

Is it possible to scale a UIView down to 0 (width and height is 0) using CGAffineTransformMakeScale?

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

Why would this throw an error of "<Error>: CGAffineTransformInvert: singular matrix." ?



Update: There is another way of scaling down a UIView to 0

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

[UIView commitAnimations];
+3  A: 

I'm not sure it's possible to do this; you'll start running into divide-by-zero issues. If you try to do this, you'll be creating a transform that looks like:

   0  0  0
   0  0  0
   0  0  1

Which, when applied to ANY other transform, will produce the above transform.

Why not just hide the view (if you want to scale it out of sight) or set the scaling factor to something like 0.001 (if you want to scale it in)?

Ben Gottlieb
+2  A: 

There are lots of times when the underlying frameworks need to invert your transform matrix. The inverse of a matrix is some matrix M' such that the product of your matrix M and the inverse matrix M' is the identify matrix 1.

1 = M * M'

The zero matrix does not have an inverse, hence the error message.

smeger