Два изменения свойств в одном и том же блоке анимации имеют разную продолжительность.Зачем? - PullRequest
0 голосов
/ 21 октября 2010

В следующем анимационном блоке UIView я делаю CGAffineTransformMakeScale и CGAffineTransformMakeRotation, и хотя duration установлен на 1.0f,, масштаб идет очень быстро, и вращение идет примерно за 1 секундудолжен.

Должно быть, у меня нет понимания о том, как применяются AffineTransforms, но я не могу понять это.

Что дает?

РЕДАКТИРОВАТЬ: Владимир ответотлично работалЯ менял одно и то же свойство дважды, а не менял два свойства.Чтобы сделать два изменения в свойстве transform, вы должны сделать transform с первоначальным изменением, затем добавить второе изменение к этому transform и затем оттуда установить transform вашего объекта.Таким образом, вы можете связать столько, сколько хотите.


CGColorRef color = [[colorArray objectAtIndex:colorIndex] CGColor];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0f];
[[self layer] setFillMode:kCAFillModeForwards];
[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];
[[self layer] setBackgroundColor:color];
[UIView commitAnimations];

1 Ответ

2 голосов
/ 21 октября 2010
[self setTransform:CGAffineTransformMakeScale(2.0, 2.0)];
[self setTransform:CGAffineTransformMakeRotation(M_PI / 4)];

2-я строка отменяет эффект 1-й строки. Вы должны построить целое преобразование, а затем применить его к своему виду:

CGAffineTransform tr = CGAffineTransformMakeScale(2.0f,2.0f);
tr = CGAffineTransformRotate(tr, M_PI/4);
[self setTransform: tr];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...