2010-01-27 50 views

回答

10

您應該使用UISegmentedControl如果你想有一個標準的UI-Element或射程爲2配置UISlider

slider.minimumValue = 0; 
slider.maximumValue = 2; 
slider.continuous = NO; 

,然後設置minimumValueImagemaximumTrackImagethumbImage使用適當的圖像。

+0

使用一個UISegmentedControl是一個偉大的想法! UISlider的問題在於你必須觸摸球才能改變價值,體驗並不好。我想我會用UISegmentedControl,謝謝! – arielcamus 2010-01-28 10:55:20

4

不使用內置的UISwitch。你需要推出自己的。

4

爲什麼不使用UISegmentedControl?

0

使用UISlider是一種很好的方法。但你還想調整你的UISlider的機制,使其更像UISwitch。也就是說,當你不完全改變它的位置時,它應該反彈回原位。

這裏是我落得這樣做(使用FelixLam的答案的一部分):

UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(screenRect.size.width*0.5-width/2, screenRect.size.height*0.95-height, width, height)]; 

slider.minimumValue = 0; 
slider.maximumValue = 2; 
slider.continuous = NO; 
slider.value = 1; 

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

隨着...

- (void)sliderAction:(UISlider *)slider { 
    float origValue = slider.value; 
    [UIView beginAnimations:nil context:NULL]; 
    if (slider.value<1.9 && slider.value>0.1) slider.value=1; 
    else if (slider.value>1.9) slider.value=2; 
    else slider.value=0; 
    [UIView setAnimationDuration:0.2*fabs(slider.value-origValue)]; 
    [UIView commitAnimations]; 
}