【发布时间】:2016-06-08 06:12:42
【问题描述】:
我在我的应用程序中使用 UISlider,为滑块添加最大和最小图像。一切都很好,但请看下面的图片。当我单击按钮时,动画开始并且标签上的值发生变化,但滑块上的动画直接跳转到 6,您可以看到它,当滑块从 96 滑块最小图像(橙色)达到最大值(100)时,也会发生同样的事情color) 消失,标签继续显示值 97..98..99..100.
这里是代码 sn-p 供参考:
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *sliderMinimum = [[UIImage imageNamed:@"slider_max"] stretchableImageWithLeftCapWidth:14 topCapHeight:0];
[self.slider setMinimumTrackImage:sliderMinimum forState:UIControlStateNormal];
UIImage *sliderMaximum = [[UIImage imageNamed:@"slider_min"] stretchableImageWithLeftCapWidth:14 topCapHeight:0];
[self.slider setMaximumTrackImage:sliderMaximum forState:UIControlStateNormal];
}
- (IBAction)btnClicked:(id)sender
{
[self.slider setValue:0 animated:true];
[self setSliderValue:2];
}
- (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];
}
}];
}
【问题讨论】:
-
您需要强制刷新 UI 组件... setNeedsDisplay
-
@Dominic 我如何设置它以及在哪里!你能详细说明你的解决方案吗?
-
在你设置文本后放这个... [self.lblSliderValue setNeedsDisplay]
-
我还建议包装你的 [self setSliderValue:value+1];行内: dispatch_async(dispatch_get_main_queue(), ^{ 你的代码在这里 });将下一个动画延迟到当前运行循环完成之后。
-
@Dominic 让我说清楚!标签在动画开始时显示完美值,即 1-100 我的概率是直接跳到 6 的滑块动画。您可以在我的问题中看到 gif 图像
标签: ios objective-c cocoa-touch uislider