gpt4 book ai didi

ios - 如何通过在一定时间后更改图像来创建动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:55 26 4
gpt4 key购买 nike

大家好,我是 xcode 的新手,我正在尝试通过更改图像来为触摸气球制作动画:这是我的代码:现在我面临的问题是它没有动画图像意味着动画计时器不工作:请指导我应该如何使图像随时间动画:如果我做得不正确,请指导我该怎么做通过 NSTimer?

-(void)baloonbursting:(UIButton *)button withEvent:(UIEvent *)event{
if ([[UIImage imageNamed:@"redbaloons.png"] isEqual:button.currentImage]) {
NSLog(@"em redbaloons.png");
UIImage *bubbleImage3 = [UIImage imageNamed:@"redburst.png"];
[button setImage:bubbleImage3 forState:UIControlStateNormal];
}
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView animateWithDuration:1.0f animations:^(){
// define animation
if ([[UIImage imageNamed:@"redburst.png"] isEqual:button.currentImage]) {
NSLog(@"em redbaloons.png");
UIImage *bubbleImage3 = [UIImage imageNamed:@"redburst2.png"];
[button setImage:bubbleImage3 forState:UIControlStateNormal];
}
}
completion:^(BOOL finished){
// after the animation is completed call showAnimation again
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAllowUserInteraction animations:^{

} completion:^(BOOL finished){
if (finished) {
[button removeFromSuperview];
}}];
}];

最佳答案

我要给你一个解决方案,给你指明正确的思考方向。这就是为什么我在 Xcode 中开发了一个小的测试项目并且我控制了这段代码确实有效。

首先:忘掉这个动画的 NSTimers!

这个想法是,您可以“玩” subview ,因为您可以将它们的 alpha 属性从 0.0(不可见)更改为 1.0(完全不透明),SDK 的 View 动画支持这些属性。

请根据自己的文件名更改图片名称(我这里用的是自己的)。

以下方法检查按钮的图像是否是将调用动画的图像 - 与您之前所做的完全相同。如果满足此条件,它会在视觉上以动画方式将按钮的图像更改为另一个图像:

- (IBAction)balloonBursting:(UIButton *)sender
{
BOOL doAnimate = NO;

UIImageView *ivOldBubbleImage;
UIImageView *ivNewBubbleImage;

if ([[UIImage imageNamed:@"BalloonYellow.png"] isEqual:sender.currentImage]) {
NSLog(@"will animate");
doAnimate = YES;

UIImage *newImage = [UIImage imageNamed:@"BalloonPurple.png"];
ivNewBubbleImage = [[UIImageView alloc] initWithImage:newImage];
ivNewBubbleImage.alpha = 0.0;
ivOldBubbleImage = sender.imageView;
[sender addSubview:ivNewBubbleImage];
}

if (doAnimate) {
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView animateWithDuration:1.0f animations:^(){
// define animation
ivOldBubbleImage.alpha = 0.0;
ivNewBubbleImage.alpha = 1.0;
}
completion:^(BOOL finished){
[sender setImage:ivNewBubbleImage.image forState:UIControlStateNormal];
[ivNewBubbleImage removeFromSuperview];
}];
}
}

关于ios - 如何通过在一定时间后更改图像来创建动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17591889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com