UIView使用CGAffineTransformMakeScale缩放为0

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];
3个回答

10

有很多时候底层框架需要反转您的变换矩阵。矩阵的逆是某个矩阵M',使得您的矩阵M和逆矩阵M'的乘积为单位矩阵1。

1 = M * M'

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


7
我不确定是否能够实现这一点;你将开始遇到除以零的问题。如果你尝试这样做,你将创建一个看起来像这样的转换:
   0  0  0
   0  0  0
   0  0  1
无论应用于任何其他转换,都会产生上述转换。
为什么不只是隐藏视图(如果你想把它缩放到看不见)或者将缩放因子设置为0.001(如果你想缩小它)呢?

1

你可以尝试:

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

或者将整个内容内联。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接