gpt4 book ai didi

animation - 查询 UISlider 的表示层

转载 作者:行者123 更新时间:2023-11-28 17:48:05 25 4
gpt4 key购买 nike

我正在设置一个简单的 UISlider 来动画它的进度:

[UIView animateWithDuration:songLength
delay:0.0
options:UIViewAnimationOptionRepeat|
UIViewAnimationOptionAllowUserInteraction|
UIViewAnimationOptionBeginFromCurrentState
animations:^{
[UIView setAnimationDuration:10.0];
[myUISlider setValue:10.0];
} completion:nil
];

[UIView commitAnimations];

当用户按下按钮时,我想在该位置停止动画。

我知道我需要查询表示层来找出值,但是,表示层的类型是 CALayer 而不是 UISlider。因此,它具有图层属性,例如它在屏幕上的 x/y 位置,但不是 slider 本身的值。

通过设计表示层可以访问层的所有当前动画数据是有道理的,但我不确定如何在代码中解决这个问题。

有什么想法吗?

最佳答案

我想出了一个解决这个问题的方法,以防你遇到同样的问题。按照设计,没有明显的方法来查询 UISlider 的动画缩略图。动画查询适用于图层,因此一种方法是创建您自己的背景并为拇指图层制作动画。

我解决这个问题的方法是使用 NSTimer 类。一旦我想让进度条开始动画,我将 NSTimer 设置为 0.1s 间隔并调用一个函数来更新拇指位置。拇指前后的动画(随着它的前进,左边的部分是蓝色的,剩下的部分仍然是白色的)会自动为你处理。

代码如下:

updateTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateCurrentTime) userInfo:p repeats:YES];

因此每 .01 秒调用此方法并重新绘制拇指,从而创建动画。不需要动画 block 。

效果很好,我对结果很满意。我关心性能并将衡量此实现的资源密集程度。选择我上面提到的第一个选项可能是个好主意。

关于animation - 查询 UISlider 的表示层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099787/

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