У меня проблема с объектом подкласса UIView, который я вращаю с помощью Core Animation в ответ на UISwipeGesture.
Чтобы описать контекст: у меня есть круглый циферблат, который я нарисовал в компьютерной графике и добавил к основному виду в качестве подпредставления. В ответ на жесты смахивания я приказываю ему повернуться на 15 градусов в любом направлении, в зависимости от того, проведено ли это влево или вправо.
Проблема в том, что он будет вращаться в каждую сторону только один раз. Последующие жесты распознаются (очевидно, по другим запускаемым действиям), но анимация не повторяется. Я могу один раз пойти налево, затем один раз направо. Но попытка пойти в любом направлении несколько раз не сработает. Вот соответствующий код, дайте мне знать, что вы думаете ...
- (IBAction)handleLeftSwipe:(UISwipeGestureRecognizer *)sender
{
if ([control1 pointInside:[sender locationInView:control1] withEvent:nil])
{
//updates the display value
testDisplay.displayValue = testDisplay.displayValue + 0.1;
[testDisplay setNeedsDisplay];
//rotates the dial
[UIView animateWithDuration:0.25 animations:^{
CGAffineTransform xform = CGAffineTransformMakeRotation(radians(+15));
control1.transform = xform;
[control1 setNeedsDisplay];
}];
}
2 ответа
CGAffineTransform xform = CGAffineTransformMakeRotation (радианы (+15));
Вы держите в общих чертах, насколько далеко заходит ротация. CGAffineTransformMakeRotation не являются аддитивными. Используются только самые свежие. Таким образом, вы устанавливаете его на 15 каждый раз, а не на 15 больше каждый раз.
Вот супер простой пример кумулятивного поворота вида. Это поворачивает вид на 180 градусов при каждом нажатии кнопки.
- (IBAction) onRotateMyView: (id) sender
{
[UIView animateWithDuration:0.3 animations:^{
myView.transform = CGAffineTransformMakeRotation(M_PI/2*rotationCounter);
} completion:^(BOOL finished){
//No nothing
}];
++rotationCounter;
}
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.