Как оживить одновременное вращение и масштабирование вида? - PullRequest
2 голосов
/ 17 апреля 2010

У меня есть это представление, и я делаю некоторые преобразования вращения, используя что-то вроде

myView.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
//The view was originally at 0 degrees.

в каком-то другом месте моего кода, я хотел бы масштабировать представление, анимирующее его, поэтому я делаю

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
myViews.transform = CGAffineTransformMakeScale(2.0f, 2.0f);
[UIView commitAnimations];

но когда я это делаю, анимация выполняется, когда вид находится под 0 градусов, игнорируя предыдущее преобразование. Он просто предполагает, что вид еще на нуле градусов, поэтому эта анимация масштабирует вид и поворачивает его обратно на 0 градусов (!!!! ?????)

Это какая-то ошибка или я что-то упустил? спасибо.

Ответы [ 2 ]

3 голосов
/ 17 апреля 2010

После обсуждения с KennyTM я пришел к лучшим решениям для обоих абсолютных преобразований ...

на метод зума, я делаю:

// notice that both transformations are absolute
CGAffineTransform rotation = CGAffineTransformMakeRotation(degreesToRadian(viewAngle));
CGAffineTransform zoom = CGAffineTransformMakeScale(zoomFactor, zoomFactor);
myView.transform = CGAffineTransformConcat(rotation, zoom);

Я сохраняю viewAngle при повороте вида.

2 голосов
/ 17 апреля 2010

Поскольку назначение .transform не подразумевает, что новое будет объединено со старым. В вашем новом преобразовании вы указываете только 200% масштабирование, но не поворачиваете, поэтому представление вернется к 0 & deg;.

Попробуйте вместо этого:

myViews.transform = CGAffineTransformScale(myViews.transform, 2.0f, 2.0f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...