UIView使用CGAffineTransformMakeScale缩放为0

时间:2008-10-19 05:54:23

标签: iphone objective-c cocoa-touch

是否可以使用CGAffineTransformMakeScale将UIView缩小为0(宽度和高度为0)?

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

为什么会抛出错误“<Error>: CGAffineTransformInvert: singular matrix.”?



更新: 还有另一种将UIView缩小到0

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

[UIView commitAnimations];

3 个答案:

答案 0 :(得分:10)

很多时候,底层框架需要反转您的转换矩阵。矩阵的逆是一些矩阵M',使得矩阵M和逆矩阵M'的乘积是识别矩阵1。

1 = M * M'

零矩阵没有反转,因此出现错误信息。

答案 1 :(得分:8)

我不确定这样做是否可行;你将开始遇到被零除的问题。如果您尝试这样做,您将创建一个如下所示的转换:

   0  0  0
   0  0  0
   0  0  1

当应用于任何其他变换时,将产生上述变换。

为什么不隐藏视图(如果你想要将视图缩小)或将缩放系数设置为0.001(如果你想缩放它)?

答案 2 :(得分:1)

你可以尝试:

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

或内联整个事情。