关于UISlider动画速度问题

探讨了在iOS开发中,如何优化UISlider的动画效果,通过分段执行动画解决底色与指示标不同步的问题,实现更平滑的动画过渡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图所示,这个问题困扰了我很久,原因就在于IOS系统自带的UISlider的动画代码只有一句:

[slider setValue:xx animated:YES];//duration depends on distance 

就是说,自带的动画方法并不能自定义动画时长,只能由距离所决定,而且动画效果一闪而过。而我们的需求呢,就想要动画效果慢点,动作顺滑。在不自定义的情况下,我开始寻找其他方法去实现需求。

经过尝试,发现

[UIView animateWithDuration:1 animations:^{
        [self.slider setValue:progress animated:YES];
    } ];

这种方法能做出一定动画效果,但是会出现下面如图的问题

橙色底线跟指示标动画不同步。一个是从左往右移动,一个是从右往左移动。这样子效果还是有点瑕疵。只能继续改进。

然后我想到了把这个动画分段执行。

[UIView animateWithDuration:0.01 animations:^{
        [self.slider setValue:progress/100.0 animated:YES];
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:0.99 animations:^{
           [self.slider setValue:progress animated:YES];
        }];
    }];

先让底色同步到指示标位置,然后再一同开始右移动画。从而实现需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值