2

我设置了一个动画块,在用户执行搜索时开始。搜索完成后会推送一个新视图。这工作正常,直到用户选择后退按钮并再次尝试搜索,现在动画没有开始。

[UIView animateWithDuration:0.25
                      delay:0.0
                    options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear)
                 animations:^{

                     _collectionImage.transform = CGAffineTransformMakeRotation(M_PI);

                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

在任何人询问之前,动画只是一个旋转的圆盘,并且在推送视图加载时调用完成块。对于为什么它不会在多次搜索中产生动画的任何帮助,我们将不胜感激。

谢谢。

4

2 回答 2

5

你好,这是你的问题...

您将仿射值 x 更改为 y

所以现在你的变换值是 y 然后你又等于 y =y

那么它是如何工作的......

最初您需要存储变换值,然后在完成动画后对其进行动画处理,您需要恢复该值

viewDidLoad这样做:

initalTransform=_collectionImage.transform;


[UIView animateWithDuration:0.25
                      delay:0.0
                    options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear)
                 animations:^{

                     _collectionImage.transform = CGAffineTransformMakeRotation(M_PI);

                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
_collectionImage.transform=initalTransform;
                 }];

试试这个......这是一个你需要作为你的逻辑来实现的想法......

于 2012-09-24T13:35:55.543 回答
0

使用CGAffineTransformRotate(<#CGAffineTransform t#>, <#CGFloat angle#>) 你必须从当前变换开始旋转

于 2012-09-24T13:26:56.127 回答