代码之家  ›  专栏  ›  技术社区  ›  Ronnie Liew

使用CGaffinetTransformMakeScale将uiView缩放为0

  •  10
  • Ronnie Liew  · 技术社区  · 18 年前

    是否可以使用CGaffinetTransformMakeScale将uiView缩小到0(宽度和高度为0)?

    view.transform=cgaffinetTransformMakeScale(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 回复  |  直到 14 年前
        1
  •  10
  •   Jason Harris    18 年前

    有时底层框架需要反转转换矩阵。矩阵的逆矩阵是一些矩阵m'这样,矩阵m和逆矩阵m的乘积就是标识矩阵1。

    1=m×m’

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

        2
  •  8
  •   Ben Gottlieb    18 年前

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

       0  0  0
       0  0  0
       0  0  1
    

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

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

        3
  •  1
  •   Christian Specht    15 年前

    你可以试试:

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

    或者把整件事都写进去。