У меня есть приложение, и мне нужно воспроизвести анимацию кубиков. Каждый раз, когда раздаются кубики, я должен немного изменить его положение по оси X и его вращению.Поворот и изменение позиции просмотра в одно и то же время?
Кубик UIButton
внутри UIView
с 16 пикселями больше! Когда пользователь катит, я создаю анимацию для вращения и в одно и то же время изменяю значение представления X. Когда анимация закончена, я пытаюсь зафиксировать случайную позицию остановки.
Взгляните на мой код, чтобы лучше понять.
Это моя вращающаяся анимация:
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 0.2;
animation.repeatCount = 2;
[dice.layer addAnimation:animation forKey:@"SpinAnimation"];
int min = -20;
int maxim = 20;
int rndValue = min + arc4random() % (maxim - min);
// Here I change x value;
CGRect rct = dice.superview.frame;
rct.origin.x = n + rndValue;
rct.size.width = dice.superview.bounds.size.width;
rct.size.height = dice.superview.bounds.size.height;
[UIView animateWithDuration:0.4 animations:^{
dice.superview.frame = rct;
}completion:^(BOOL finished){
//Here, after the animation is done, i want to put a random rotation value.
float degrees = arc4random() % 30;
dice.superview.layer.anchorPoint = CGPointMake(0.5, 0.5);
dice.superview.transform = CGAffineTransformMakeRotation(degrees * M_PI/180);
}];
Моя проблема, чем каждый раз (ожидается первый, когда я качусь) кубики (вид тоже) становится меньше, так как размер просмотра кадра меняется, и я могу «Не нашли проблему или какое-либо другое решение. PS: Если я использую только одно из них (вращающееся или изменяющееся значение оси X), кубики сохраняют одинаковый размер.
Я ищу уже много онлайн, но ничего полезного для меня. У кого-нибудь есть идея, пожалуйста? Большое спасибо!