2013-07-13 49 views
0

我有一個UISlider,我想在它下面滑動3個UILabel以及滑塊,並更新它們的值,這取決於滑塊的值。拖動滑塊時,該位置會在應該出現的位置和返回到中心位置之間來回閃爍。插入一個斷點,只需很少的時間,sliderValueDidChange方法會被調用多次,sliderValue會顯示不同的值。有任何想法嗎?sliderValueDidChange多次調用

- (IBAction)sliderValueDidChange:(UISlider *)sender { 
// Update the labels 
float sliderValue = sender.value; 
percentSplitLabel.text = [NSString stringWithFormat:@"%.0f%@", sliderValue * 100, @"%"]; 
themSplitValueLabel.text = [NSString stringWithFormat:@"%@%.2f", @"$", totalToBeAddedToTabValue]; 
meSplitValueLabel.text = [NSString stringWithFormat:@"%@%.2f", @"$", totalBillValue - totalToBeAddedToTabValue]; 

// Reposition the numbers below 
CGRect sliderFrame = splitBillSlider.frame; 
percentSplitLabel.center = CGPointMake(sliderFrame.origin.x - sliderFrame.size.width/2.0 + sliderFrame.size.width * sliderValue + 150, percentSplitLabel.center.y); 
themSplitValueLabel.center = CGPointMake(percentSplitLabel.center.x + percentSplitLabel.frame.size.width + 10, percentSplitLabel.center.y); 
meSplitValueLabel.center = CGPointMake(percentSplitLabel.center.x - percentSplitLabel.frame.size.width, percentSplitLabel.center.y); 
+0

不是Xcode的問題。 -------- IIRC「UISlider」上有一個「連續」屬性,您可以設置爲「否」。 – 2013-07-13 19:49:44

+0

但我希望它不斷更新,以便在滑動時滑動下面的值。 –

+0

你在視圖中使用自動佈局嗎? – Hejazi

回答

2

如果您在視圖中使用自動佈局,請嘗試禁用它(文件檢查器>取消選中「啓用Autolayout」)。

+0

哇...我是(雖然無意中)。將自動佈局關閉立即固定。謝謝!你有解釋爲什麼這是問題嗎? –

+1

@JamesPMason,Autolayout是爲什麼自動佈局是問題。如果默認情況下沒有啓用它,那麼更好......一個好的做法是在所有新項目上禁用它,除非您知道您需要它(如果您不確定是否需要它,則不需要它)。 – foundry

+1

啓用自動佈局時,子視圖的「框架」會根據約束自動設置。所以發生的事情是你的代碼和自動佈局正在改變你製作閃光燈的標籤的位置。 – Hejazi