UIView масштабировать до 0 с помощью CGAffineTransformMakeScale


Можно ли масштабировать UIView до 0 (ширина и высота равны 0) с помощью CGAffineTransformMakeScale?

Вид.transform = CGAffineTransformMakeScale(0.0 f, 0.0 f);

Почему это приведет к ошибке " <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

3 ответа:

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

1 = M * M '

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

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

{[0]}

Который, будучи применен к любому другому преобразованию, произведет вышеупомянутое преобразование.

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

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

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

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