如何为 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 6.1 - 验证时出现 CFBundleVersion 和 CFBundleShortVersionString 错误