10

是否可以使用 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];
4

3 回答 3

10

很多时候底层框架需要反转你的变换矩阵。矩阵的逆矩阵是某个矩阵 M',这样矩阵 M 和逆矩阵 M' 的乘积就是识别矩阵 1。

1 = M * M'

零矩阵没有逆矩阵,因此出现错误消息。

于 2008-10-19T12:59:49.680 回答
8

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

   0  0  0
   0  0  0
   0  0  1

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

为什么不直接隐藏视图(如果您想将其缩放到看不见的地方)或将缩放因子设置为 0.001(如果您想将其缩小)?

于 2008-10-19T11:55:07.753 回答
1

你可以试试:

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

或内联整个事情。

于 2011-10-23T21:32:43.200 回答