gpt4 book ai didi

ios - 递归动画无法正常工作

转载 作者:行者123 更新时间:2023-11-29 01:44:34 28 4
gpt4 key购买 nike

我有一个动画,一旦点击按钮就会首先调用它,一旦它完成,我就会通过再次调用动画所在的方法并传递一个“TRUE”值来再次运行动画。但是,当我停止动画并在需要时再次调用它时,即使我有相同的代码,它也会运行得越来越快(它会在不到 1 秒的时间内完成整个循环,它应该需要大约10-20 秒。)谁能解释我需要做什么才能让动画在我需要停止后自行重置?

此外,在我传递一个应该停止动画的“FALSE”之后,我重置了我正在移动的标签的框架,但是当我再次运行动画时似乎没有显示,因为有时它从中间开始当它应该从屏幕左侧开始时。

代码如下:

-(void)updateLabel:(BOOL)startStop
{
CGFloat CGRectGetMinY ( CGRect rect );
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;

if(startStop)
{
[UIView animateWithDuration:1.0f
animations:^{
progress.frame= CGRectMake(progress.frame.origin.x+20.0f, progress.frame.origin.y, progress.frame.size.width, progress.frame.size.height);
} completion:^(BOOL finished) {
[self updateLabel:true];
}];
} else {
[self.view.layer removeAllAnimations];
progress.frame= CGRectMake(0.0f, progress.frame.origin.y, progress.frame.size.width, progress.frame.size.height);
}
}

最佳答案

试试这个...不要将“false”传递给方法,而是更改它以便检查全局变量以查看它是否应该运行

//'doTask' is previously defined in your program
//set 'doTask' to false when you want the recursion to stop
//and set 'doTask' back to true before calling this again
-(void)recursiveMethod{

if(doTask){
//do something
[self recursiveMethod];
}
else{
//re-set anything that
//needs to be re-set
}
}

关于ios - 递归动画无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076782/

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