gpt4 book ai didi

iphone - UIImageView 在 CAKeyframeAnimation 之后消失

转载 作者:行者123 更新时间:2023-12-03 19:05:48 24 4
gpt4 key购买 nike

我正在 UIView 的一个类别中尝试这段代码(在 SO 的答案中找到),并使用它在嵌套在 UITableViewCell 内的 UIImageView 上执行“弹出”动画。

- (void)attachPopUpAnimation
{
CAKeyframeAnimation *animation = [CAKeyframeAnimation
animationWithKeyPath:@"transform"];

CATransform3D scale1 = CATransform3DMakeScale(0.5, 0.5, 1);
CATransform3D scale2 = CATransform3DMakeScale(1.2, 1.2, 1);
CATransform3D scale3 = CATransform3DMakeScale(0.9, 0.9, 1);
CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1);

NSArray *frameValues = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:scale1],
[NSValue valueWithCATransform3D:scale2],
[NSValue valueWithCATransform3D:scale3],
[NSValue valueWithCATransform3D:scale4],
nil];
[animation setValues:frameValues];

NSArray *frameTimes = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0],
[NSNumber numberWithFloat:0.5],
[NSNumber numberWithFloat:0.9],
[NSNumber numberWithFloat:1.0],
nil];
[animation setKeyTimes:frameTimes];

animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.duration = 0.2;

[self.layer addAnimation:animation forKey:@"popup"];
}

动画正常工作,但完成后就消失了。我已经找到其他人解决此问题的答案,但显然设置 fillMode 在这种情况下不起作用。

最佳答案

不要使用这两行。相反,实际上在图层上设置变换。替换这两行:

animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;

最终变换状态:

[[self layer] setTransform:scale4];

当向前设置填充模式并且不删除动画时,它会导致最终状态仅可视。您需要实际更改要设置动画的属性的图层内部状态。为此,请在将动画添加到图层时使用 transform 名称覆盖变换属性的动画。这将导致动画使用您的动画而不是默认动画。

[[self layer] addAnimation:animation forKey:@"transform"];

关于iphone - UIImageView 在 CAKeyframeAnimation 之后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581804/

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