2016-06-08 14 views
0

我在我的應用程序中使用UISlider,我添加滑塊的最大和最小圖像。每件事情都很好,但請看下面的圖片。當我點擊按鈕時,動畫開始,標籤上的值發生變化,但滑塊上的動畫直接跳到6,您可以看到它,當滑塊達到最大值(100)時,會發生同樣的情況,滑塊最小圖像(橙色顏色)消失,標籤繼續顯示值97..98..99..100。 enter image description hereUISlider不想要的行爲,同時動畫

下面是引用的代碼片段:

- (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]; 
    } 
}]; 
} 
+0

您需要強制刷新UI組件... setNeedsDisplay – Dominic

+0

@Dominic我如何設置它,並在哪裏!你可以詳細說明你的解決方案plz – iDeveloper

+0

把這個設置後,你可以設置文本... [self.lblSliderValue setNeedsDisplay] – Dominic

回答

0

試試這個:

[slider addTarget:self 
    action:@selector(roundValue:) 
    forControlEvents:UIControlEventValueChanged]; 

而在roundValue功能設置的值:

- (void)roundValue{ 

    [slider setValue:((int)((slider.value + 0)/1) * 1) animated:NO]; 

    } 
+0

沒有成功的隊友!如果動畫設置爲NO,則它移動得更快。但是如果它的設置是/ true,它會跳過前5個值和最後5個值 – iDeveloper

+0

您設置了最小值和最大值..這是正確的....也請設置slider.value = 0; ...可能是在設置此值之後..從0 –

+0

開始,我已將值設置爲0.並且確實從0開始。動畫部分跳過0-5條並直接跳到6,然後順利地繼續直到95並且對於其餘5個值再次相同 – iDeveloper