Objective C Animation 我想在屏幕上移动动画

Posted

技术标签:

【中文标题】Objective C Animation 我想在屏幕上移动动画【英文标题】:Objective C Animation I want to move an animation across the sceen 【发布时间】:2014-06-07 01:31:26 【问题描述】:

我的动画运行良好的代码。问题是我希望整个动画移动到屏幕的左侧,然后停止并重新开始。基本上它是一只熊动画,但我需要整个动画在屏幕上向左移动。我不希望它以不同的方式制作动画,我只需要改变它的 x 值,但我被卡住了。有人可以帮忙吗。这是我到目前为止所拥有的。

(void)viewDidLoad

[超级viewDidLoad];

NSArray *imageNames = @[@"bear1.gif", @"bear2.gif", @"bear3.gif", @"bear4.gif",
                        @"bear5.gif", @"bear6.gif"];

NSMutableArray *images = [[NSMutableArray alloc] init];
for (int i = 0; i < imageNames.count; i++) 


    [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];


// Normal Animation

UIImageView *animationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(60, 95, 50, 50)]; animationImageView.animationImages = 图像; animationImageView.animationDuration = 0.5;

[self.view addSubview:animationImageView];
[animationImageView startAnimating];
// Do any additional setup after loading the view, typically from a nib.

【问题讨论】:

【参考方案1】:

在您发布的代码下方添加:

[UIView animateWithDuration:5 delay:1 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^
    [UIView setAnimationRepeatCount:4];
    animationImageView.frame = CGRectMake(160, 95, 50, 50);
 completion:^(BOOL finished) 
    animationImageView.frame = CGRectMake(60, 95, 50, 50);
];

这会将熊沿 x 轴向右移动,完成每个动画循环需要 5 秒,并重复动画 4 次。它还会在完成每个循环后自动将动画反转到其原始位置。

如果您不希望它平稳地反转,而希望在完成每个循环后让它恢复到原始位置,只需删除 UIViewAnimationOptionAutoreverse 标志。

尝试使用显示的选项以获得所需的结果。

【讨论】:

这绝对有效。我将不得不再玩一些。我希望它在完成在屏幕上移动后消失。我还需要一个碰撞功能。你对此有什么见解吗?如果不是希望我能弄清楚。谢谢@JamesDonald 要让它消失,只需在completion 块中添加animationImageView.hidden = YES;。碰撞函数确实是一个完全独立的东西,值得自己提出问题。

以上是关于Objective C Animation 我想在屏幕上移动动画的主要内容,如果未能解决你的问题,请参考以下文章

无法在快速单元测试中使用 Objective-C 类

我想在 Objective-c 中将 base64 转换为 blob

Objective C 共享类的只读实例

在Objective C中导航到下一页[重复]

LATEX 列表中的 Objective C 代码

从 Objective C 类调用 Swift 方法