滑块动画时更新标签上的滑块值

Posted

技术标签:

【中文标题】滑块动画时更新标签上的滑块值【英文标题】:Update slider value on label when slider animates 【发布时间】:2016-06-07 09:43:12 【问题描述】:

我在我的应用程序中使用滑块。我已经完成了所有设置,我面临的唯一问题是我想要滑块值的标签没有更新。看看我的代码。 我有一个按钮,单击时会为滑块设置动画。我无法更新我的标签,因为它在整个动画中显示为 0.0。 任何帮助将不胜感激。

- (IBAction)btnClicked:(id)sender
 
[UIView animateWithDuration:10 animations:^
        [self.slider setValue:0.0 animated:true];
      completion:^(BOOL finished) 
        [UIView animateWithDuration:10 animations:^
            [self.slider setValue:100.0 animated:true];
        ];
    ];
 

【问题讨论】:

您是否将滑块值设置为标签文本? 标签的文字在哪里设置? yes ... in - (IBAction)sliderChanged:(id)sender if (sender == self.slider) self.lblSliderValue.text = [NSString stringWithFormat:@"%0.0f" , self.slider.value];这仅适用于我手动移动滑块@Bluewings 你确定sliderChanged: 方法会在你为滑块设置动画时被调用吗? label.text = [NSString stringWithFormat:@"%0.2f", self.slider.value]; 【参考方案1】:

您的代码无法正常工作,因为您尝试将最大值设置为滑块,以便仅使用动画设置最大值。试试我的代码可能对你有帮助。

用这个改变你的 btnClicked

 - (IBAction)btnClicked:(id)sender 
      [self.slider setValue:0 animated:true];
      [self setSliderValue:1];
 

添加这个 setSliderValue 方法

- (void)setSliderValue:(float)value 
    [UIView animateWithDuration:0.2 animations:^
    [self.slider setValue:value animated:true];
     completion:^(BOOL finished) 
        self.lblSliderValue.text = [NSString stringWithFormat:@"%0.0f", self.slider.value];
        if (self.slider.value != self.slider.maximumValue) 
            [self setSliderValue:value+1];
        
    ];

希望这会对你有所帮助。

【讨论】:

你之前的 btnClicked 代码替换成我的代码了吗?【参考方案2】:

试试这样:

    - (IBAction)btnClicked:(id)sender
 
            [self.slider setValue:0.0 animated:true];
[UIView animateWithDuration:10 animations:^
[slider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];

      completion:^(BOOL finished) 
        [UIView animateWithDuration:10 animations:^
            //[self.slider setValue:100.0 animated:true];
        ];
    ];
 

sliderChanged方法是这样的:

 - (void)sliderChanged:(UISlider *)slider 
    self.label.text = [NSString stringWithFormat:@"%0.2f", slider.value];

【讨论】:

不工作的伙伴 :( 改变一件事把这一行 [self.slider setValue:0.0 animated:true];在 uiview 动画块上方并删除此行 [self.slider setValue:100.0 animated:true];从当前位置到 [self.slider setValue:0.0 animated:true];旧职位。 @AjayGabani 现在滑块停止了。它不工作:( @iDeveloper .....设置滑块的最大值和最小值..还设置初始值...然后像上面一样...并检查 @SurajSukale 我按照你说的做了,但还没有成功。选择器没有被调用!不知道是什么问题

以上是关于滑块动画时更新标签上的滑块值的主要内容,如果未能解决你的问题,请参考以下文章

反应:带有自定义钩子的滑块无法正常工作

我的用户默认值没有保存我的滑块值 - Swift 3

如何在 jquery mobile 中获取释放点击事件的滑块值?

WPF - 将滑块值数据绑定到 StoryBoard?

iOS 使用步进器控制滑块值和文本标签值

如何使用按钮将 4 个滑块值相加?