gpt4 book ai didi

iphone - 自动滚动 UISlider

转载 作者:行者123 更新时间:2023-11-29 10:57:30 26 4
gpt4 key购买 nike

所以目前我在 UIViewcontroller 中有一个 UISlider,它意味着当用户滑动时在 subview 中启动动画。基本上,当用户滑动时,我有这个电池,里面有一个填充物,用一个条来填充空电池图像指示电池内的电量,用户可以滑动查看电池在一天中特定时间的电量。

目前,当加载 View 时,我希望 UISlider 自动从 slider 的开头开始滑动,并在 5 秒内滚动到结尾。

我实现了一个循环,使用这个循环遍历 uislider 的所有值

for (int i = 0; i < [anObject count] - 2; i++)
{
sleep(.25);
NSUInteger index = (NSUInteger)(slider.value + 0.5); // Round the number.
[slider setValue:index animated:YES];
}

[anObject count] - 2 在一天中的这个时间等于 62,但会每 15 秒更改和递增一次,因为我正在从服务器获取数据。

但除此之外,为什么这行不通?循环?

编辑:

下面是我用 NSTIMER 做的

[NSTimer timerWithTimeInterval:0.25 target:self selector:@selector(animateSlider) userInfo:nil repeats:NO];

animateSlider 看起来像这样:

- (void)animateSlider:(NSTimer *)timer
{
NSLog(@"Animating");
NSUInteger index = (NSUInteger)(slider.value + 0.5); // Round the number.
[slider setValue:index animated:YES];
}

但运气不佳......为什么 NSTimer 不“触发”......我模糊地记得有一种方法可以触发 nstimer 方法但不确定是否需要......

编辑:

啊,它确实需要“火”......

NSTimer *timer = [NSTimer timerWithTimeInterval:0.25 target:self selector:@selector(animateSlider) userInfo:nil repeats:NO];
[timer fire];

但由于某种原因它只触发一次......有什么想法吗?

最佳答案

“出于某种原因,它只触发一次……”

如果您将 NSTimer 设置更改为:

NSTimer *timer = 
[NSTimer scheduledTimerWithTimeInterval:0.25
target:self
selector:@selector(animateSlider:)
userInfo:nil
repeats:YES];

这会立即在当前运行循环上安排计时器。

并且由于“repeats”参数为“YES”,您将每四分之一秒重复一次计时器,直到您使计时器无效(当达到结束条件时,您应该这样做,例如当 slider 到达其目的地时).

附言您需要稍微更改计时器目标的选择器方法声明。 According to Apple's documentation , "选择器必须对应于返回 void 并采用单个参数的方法。计时器将自身作为参数传递给此方法。"

所以像这样声明“animateSlider”:

- (void)animateSlider: (NSTimer *) theTimer;

关于iphone - 自动滚动 UISlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17559081/

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