UIView animateWithDuration仅动画一次

时间:2012-09-24 13:16:17

标签: iphone ios animation uiimageview

我已设置动画块以在用户执行搜索时启动。搜索完成后,将推送新视图。这工作正常,直到用户选择后退按钮并再次尝试搜索,现在动画无法启动。

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

                     _collectionImage.transform = CGAffineTransformMakeRotation(M_PI);

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

在任何人询问之前,动画只是一个旋转的光盘,并且在推送视图加载时调用完成块。任何有关它不会在多次搜索中制作动画的帮助都将不胜感激。

感谢。

2 个答案:

答案 0 :(得分: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;
                 }];

尝试这个....这是你需要实现的逻辑......

答案 1 :(得分:0)

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