2015-07-27 2 views
0

Basic Анимация:Как поворачивать изображение на 360 градусов?

[UIView animateWithDuration:7.75 
       animations:^{ 

        self.transform = CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI); 
       } 
       completion:^(BOOL finished){ 

        [UIView animateWithDuration:7.75 
             animations:^{ 

              self.transform = CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI); 
             } 
             completion:^(BOOL finished){ 

             }]; 
       }]; 

Я хотел бы, чтобы повернуть изображение на 360 градусов, а затем снова поверните ее на 360 градусов, но по какой-то причине он не выполняет второй поворот.

Почему? Что возможно могло пойти не так?

+1

-M_PI - это то же самое, что и 180 градусов, а не 360 ... И установка преобразования дважды на одно и то же значение, конечно, не будет анимировать второе «изменение», потому что оно не одно. Почему бы вам по-другому вращаться по-разному? В принципе, вы не сможете сделать это с помощью блоков анимации UIView, вы должны использовать CABasicAnimations. – luk2302

+0

@matt мы, видимо, сделали, похоже, я пошел вправо;) – luk2302

+0

Я должен был пойти к этому! - Но я действительно вижу проблему; использование 2 * M_PI ненадежно. Во всяком случае, этот вопрос неоднократно хешировался; Я связан с дубликатом с множеством подходов. – matt

ответ

2

«Проблема» в том, что, когда мы получаем вторую анимацию, вы пытаетесь установить функции представления transform к CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI) - но вид-х transform является ужеCGAffineTransformRotate(CGAffineTransformIdentity, -M_PI), потому что это то, что вы установите его в первом анимация! Таким образом, ничего не происходит, потому что вы не просите внести какие-либо изменения; вы не можете анимировать значение для себя.