Шкала UIView до 0 с использованием CGAffineTransformMakeScale

Можно ли масштабировать UIView до 0 (ширина и высота - 0), используя CGAffineTransformMakeScale?

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];

Ответ 1

Существует много раз, когда базовые фреймворки должны инвертировать вашу матрицу преобразования. Обратной матрицей является некоторая матрица M 'такая, что произведение вашей матрицы M и обратной матрицы M' является идентифицирующей матрицей 1.

1 = M * M '

Нулевая матрица не имеет обратного, поэтому сообщение об ошибке.

Ответ 2

Я не уверен, что это можно сделать; вы начнете использовать проблемы с разделением на нуль. Если вы попытаетесь сделать это, вы создадите преобразование, которое выглядит следующим образом:


   0  0  0
   0  0  0
   0  0  1

Который при применении к ЛЮБОМУ другому преобразованию произведет вышеуказанное преобразование.

Почему бы просто не скрыть представление (если вы хотите его уменьшить из поля зрения) или установить коэффициент масштабирования примерно на 0,001 (если вы хотите его масштабировать)?

Ответ 3

вы можете попробовать:

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

или встроить все это.