UIView масштабировать до 0, используя CGAffineTransformMakeScale - PullRequest
10 голосов
/ 19 октября 2008

Можно ли уменьшить 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];

Ответы [ 3 ]

10 голосов
/ 19 октября 2008

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

1 = М * М '

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

8 голосов
/ 19 октября 2008

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

0 0 0 0 0 0 0 0 1

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

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

1 голос
/ 24 октября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...