gpt4 book ai didi

ios - 在 UIImageView 开始/完成动画后更改图像

转载 作者:行者123 更新时间:2023-11-28 22:39:49 25 4
gpt4 key购买 nike

我需要我的 ImageView 在每个动画的开始和结束时更改其 .image。

这是动画:

- (void)performLeft{

CGPoint point0 = imView.layer.position;
CGPoint point1 = { point0.x - 4, point0.y };

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position.x"];
anim.fromValue = @(point0.x);
anim.toValue = @(point1.x);
anim.duration = 0.2f;
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

// First we update the model layer's property.
imView.layer.position = point1;
// Now we attach the animation.
[imView.layer addAnimation:anim forKey:@"position.x"];
}

我知道我可以调用...

[anim animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)];

但我不知道如何使用动画来改变imView 的图像?那么如何使用动画来更改 ImageView 的 .image 呢?

谢谢!

最佳答案

简短的回答是您不能使用 Core Animation 来更改 ImageView 的图像。 Core Animation 在层上运行,而不是在 View 上运行。此外,Core Animation 仅创建变化的外观。底层实际上根本没有改变。

我建议使用 UIView 动画而不是 CAAnimation 对象。然后您可以使用您的完成方法来更改图像。

UIImage 动画更容易实现,它确实会改变您正在制作动画的图像的属性。

基于 UIImage 动画的代码看起来像这样:

- (void)performLeft
{
CGFloat center = imView.center;
center.x = center.x - 4;
imView.image = startingImage; //Set your stating image before animation begins
[UIView animateWithDuration: 0.2
delay: 0.0
options: UIViewAnimationOptionCurveEaseIn
animations:
^{
imView.center = center;
}
completion:
^{
imView.image = endingImage; //Set the ending image once the animation completes
}
];
}

关于ios - 在 UIImageView 开始/完成动画后更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865790/

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