gpt4 book ai didi

iphone - 动画后, View 位置重置

转载 作者:行者123 更新时间:2023-12-03 18:16:35 26 4
gpt4 key购买 nike

我正在尝试从上到下制作 View 幻灯片。这没什么大不了的,我为此使用了CABasicAnimation。问题是当我想删除 View 时。我使用这个动画。

CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setDelegate:self];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.view.layer.position.x, 0 - self.view.bounds.size.height / 2)];
animation.fromValue = [NSValue valueWithCGPoint:self.view.layer.position];
animation.autoreverses = NO;
animation.repeatCount = 0;
animation.duration = 0.25;
animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
[self.view.layer addAnimation:animation forKey:@"moveX"];

这完美地动画了 View 。但是,动画结束后,我的 View 再次出现。所以我添加了这一行:

[self.view removeFromSuperview];

这会删除 View ,但没有动画。所以我决定将删除代码添加到该委托(delegate)中:

-(void) animationDidStop:(CAAnimation *) animation finished:(bool) flag

现在,动画开始工作, View 消失,但有时,我可以看到 View 出现和消失的速度更快,就像动画结束后, View 出现,然后调用 animationDidStop 委托(delegate),然后 View 就消失了,显然这很糟糕。我做错了什么?

最佳答案

可能想要设置这些属性。它们会导致在动画结束时保留演示文稿。

animation.fillMode = kCAFillModeForwards;<br/>
animation.removedOnCompletion = NO;

然后可以使用“animationDidStop:”方法来移除动画结束时的 View :

-(void) animationDidStop:(CAAnimation *) animation finished:(bool) flag {
if (animation == [containerView.layer animationForKey:@"moveX"]) {
// remove view here, add another view and/or start another transition
}
}

关于iphone - 动画后, View 位置重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226555/

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