如何为 iOS 6 xcode 4.6 制作任何时间动画?

Posted

技术标签:

【中文标题】如何为 iOS 6 xcode 4.6 制作任何时间动画?【英文标题】:how make a any time animation for iOS 6 xcode 4.6? 【发布时间】:2013-03-08 18:26:58 【问题描述】:

如何为 UIViews 或 xcode 中的 UIImageViews 制作任何时间动画,但意味着当用户在应用程序中时,动画显示的任何时间,我的动画是这样的:

- (void)showAnimation



    [UIImageView beginAnimations:@"EFFECT_SHOW" context:nil];
    [UIImageView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIImageView setAnimationDuration:5.0f];

    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);

    [UIImageView commitAnimations];

& 当我调用方法时,我只做 [self showAnimation];,但在 viewDidload 中,只显示一次动画,如何随时制作?,我需要一个“while”问题吗?或者我可以在另一个虚空中吗?

感谢拉巴斯和圣克鲁斯德拉谢拉 - 玻利维亚的帮助和问候!摇滚吧!!! n_n'

【问题讨论】:

不清楚,“只显示一次动画,如何随时制作”是什么意思? ?您有多个图像视图并想为所有图像添加动画? 抱歉,我有 2 张图片,动画显示向左移动 -> 向右和向右 -> 向左移动,但我如何随时显示此动画? 任何时候??你想同时做两个动画吗?还是需要自始至终继续这样做? 【参考方案1】:

使用属于UIView 的块动画。 View Programming Guide for ios 有一个很棒的动画部分。

调用方法时

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

您可能想要的“选项”是UIViewAnimationOptionAutoreverse

例如:

[UIView animateWithDuration:5.0f delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^
    self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
    self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);
 completion:nil];

编辑:是的..它没有重复是我的错。根据文档....

UIViewAnimationOptionAutoreverse

前后运行动画。必须与 UIViewAnimationOptionRepeat 选项结合使用。

我更新了代码以包含UIViewAnimationOptionRepeat,它现在应该可以工作了。

【讨论】:

哇,好用,但是只有一次,我怎样才能让这个过程直到你退出应用程序才结束,我的意思是,动画从完全进入和退出应用程序开始,动画不应该永远停止,我需要创造一个新的虚空吗?或者我可以在哪里或如何做到这一点? 它就像我想要的无限动画 是的,它本来是一个无限动画,我只是把它搞砸了。我添加了相应的文档并进行了修复。【参考方案2】:

动画完成后再次调用showAnimation方法

 - (void) showAnimation

    //TODO: maybe reset you animation
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView animateWithDuration:5.0f animations:^()
            // define animation
            self.imageAnimation.frame = CGRectMake(400, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);
            self.imageAnimation2.frame = CGRectMake(-400, imageAnimation2.frame.origin.y, imageAnimation2.frame.size.width, imageAnimation2.frame.size.height);
        
        completion:^(BOOL finished)
            // after the animation is completed call showAnimation again
            [self showAnimation];
    ]; 

【讨论】:

谢谢,但仍然无法正常工作,仍然没有显示无限,我确实在 viewdidload 中调用了该方法,在按钮显示的另一个 IBAction 中调用了该方法,但仍然无法正常工作,还是我在 O_o 中出错了?跨度> 在方法的开头添加一个 NSLog(@"showAnimation") 并告诉我该方法多久调用一次?您是否将动画重置为开始状态?你看到了什么?动画多久播放一次? 是的,继续打印“showAnimation”但动画没有运行,只是一次,但后来什么都没有显示:S 您只需要将动画重置为其初始位置,例如self.imageAnimation.frame = CGRectMake(0, imageAnimation.frame.origin.y, imageAnimation.frame.size.width, imageAnimation.frame.size.height);

以上是关于如何为 iOS 6 xcode 4.6 制作任何时间动画?的主要内容,如果未能解决你的问题,请参考以下文章

ios 6 ios 7 xcode 4.6 xcode5 困境

CocoaLibSpotify 无法在 XCode 4.6 / iOS 6.1 中编译

针对 XCode 4.6 下的 iOS 4.x 设备

XCode 4.6:iOS 6.1 - 验证时出现 CFBundleVersion 和 CFBundleShortVersionString 错误

用于带有 ARC 的 xcode 4.6 ios 6 的 JSONKit?

如何为 Xcode 6.x 的 plist 创建自定义结构定义?