是否可以向 for 循环创建的滑块添加动画?

Posted

技术标签:

【中文标题】是否可以向 for 循环创建的滑块添加动画?【英文标题】:Is it possible to add animation to a slider created by for loop? 【发布时间】:2013-08-23 10:42:47 【问题描述】:

我创建了一个 UISlider 用于类似“解锁滑块”的元素。我写的动画只指向一个滑块时效果很好。但我需要使用 for 循环来动态创建滑块。当我创建滑块时动画不起作用为滑块添加标签并将动画功能添加到for循环中的滑块,如下所示:

for (int i = 0; i < rowCount; i++)
    ...
    UISlider *slider=[[UISlider alloc] initWithFrame:CGRectMake(5+ xInc, 25+yInc, 322, 40)];
    //give a id tag to the slider
    [slider setTag:i*10];
    //set a action to the slider
    [slider addTarget:self action:@selector(UnlocklinkSlider:) forControlEvents:UIControlEventTouchUpInside];
    ...

而动画功能是:

- (void)UnlocklinkSlider:(UISlider*)slider
 
    for (int i = 0; i < rownumber; i++)
        UIImageView *frontimg = (UIImageView *)[self.view viewWithTag:i*10+1];
        ...
        if (slider.tag==i*10) 
            if(slider.value >= 0.5)
                // user did not slide far enough, so return back to 0 position
                [UIView beginAnimations: @"SlideCanceled" context: nil];
                [UIView setAnimationDelegate: self];
                [UIView setAnimationDuration: 0.35];
                // use CurveEaseOut to create "spring" effect
                [UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
                ...
                [UIView commitAnimations];
                ...
            
            else
                ...
            
        
    
 

但是动画不能以这种方式工作。有人知道为什么吗?

【问题讨论】:

循环的目的是什么?您要为哪些属性设置动画?在什么情况下它不起作用? 其实是用来创建一个滑动按钮的,如果我滑到最左边点击,它会去网页1,如果我滑到最右边点击,它会去到网页 2,如果我既不向左也不向右侧滑动,它将返回到左侧或右侧。这些按钮是指向某些网站的链接,具有两种不同的访问方式——网页 1 和网页 2,我可以通过 uitableview 将按钮添加到不同的网站。 好的,当然,但是您通过了滑块,为什么要循环而不是使用滑块来确定要做什么? 我想给滑块写一个动画让它不会那么快返回,但是滑块的动画不起作用。 循环是创建多个滑块,每个滑块有两个访问 【参考方案1】:

您可以尝试将[UIView beginAnimations][UIView commitAnimations] 放在循环之外。

如果这不起作用,您可以尝试在视图层上使用CoreAnimations。

【讨论】:

【参考方案2】:

您应该使用更新的基于块的动画 API 来控制持续时间,同时设置滑块的值:

[UIView animateWithDuration:2 animations:^
    [slider setValue:1];

此外,您有 2 个不同的循环,但您可能应该只有 1 个。您需要一个循环来创建所有滑块并将它们添加到视图中。但是,当您从其中一个滑块获得回调时,您不需要循环。相反,您应该只与调用该操作的滑块(即用户正在与之交互的滑块)进行交互。

【讨论】:

他们没有理由不在 for 循环中工作。我仍然不明白为什么你有一个 for 循环。更有可能您有一些明确禁用动画的东西(...部分中有什么代码?)。 因为我必须为 sqlite 数据库中的所有网站创建滑块,所以我必须使用 for 循环来读取所有行并为每一行创建一个滑块。 我先将所有行保存在一个数组中,“rowCount”是数据库中的行数,然后我用for循环为每一行创建滑块

以上是关于是否可以向 for 循环创建的滑块添加动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Slider Revolution for WordPress 创建像本网站这样的滑块? - 惊奇网

我的滑块点击事件动画问题?

text 光滑的滑块动画

光滑的滑块选项会发生变化

光滑的滑块 - css 过渡无限循环错误

如何获得光滑的滑块以在循环中平滑过渡