2012-03-06 43 views
1

我正在嘗試使用像UISwitch這樣的UISlider,因爲我可以自定義UISlider和其他東西。 我想模仿UISwitch力學完美。UISlider - 類似於UISwitch的機制

改變了一點耐心,改變了你在拖動和東西時通過中間點。

我已經設置了一個UISlider,使用我想要的圖像,min 0 max 1,默認爲0,連續屬性爲OFF;觸摸裏面的方法起火。

我寫了下面的算法,但只有一件事情是行不通的。 當您將旋鈕從一端拖動到另一端時,它會反彈回來。 (例如1.0到0.0)

你能幫我完善嗎? 謝謝!

算法:

- (void)sliderChanged:(UISlider *)slider { 

    [UIView animateWithDuration:0.2 animations:^{ 
     if ((slider.value >= 0.50 || slider.value == 0.0 || slider.value <= 0.10) && slider.value != 1.0) slider.value = 1.0; 
     else if ((slider.value < 0.50 || slider.value == 1.0 || slider.value >= 0.90) && slider.value != 0.0) slider.value = 0.0; 
    }]; 
} 
+0

如果你想模擬一個「UISwitch」「完美」,爲什麼不直接使用'UISwitch'?你想改變的「UISwitch」是什麼? – 2012-03-06 20:17:10

回答

1

在編程被告訴它 「反彈」

從1.0至0.0拖動它的邏輯:

[滑塊值] = 0

你說過: if value == 0 and value!= 1 then value value to 1

同樣與你的第二個邏輯路徑 如果值== 1和值!= 0,則將該值設置爲0

- (void)sliderChanged:(UISlider *)slider { 

    [UIView animateWithDuration:0.2 animations:^{ 
     if (slider.value >= 0.50) 
      slider.value = 1.0; 
     else if (slider.value < 0.50) 
      slider.value = 0.0; 
    }]; 
} 

還有,爲什麼你不希望使用UISwitch?

0

我一直在經歷UIKit併爲我一直在努力的幾個應用程序定製所有東西。我發現了UISwitch的解決方案是創建自己的基於關閉的UIControl

從這一點來說我處理通過

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

的阻力

你可以別人o實施輕擊手勢以允許像本地交換機那樣輕敲交換機。

我創建了我自己的UIControl,因爲我覺得我無法用UISlider實現這種「原生」捕捉感覺。