三重UISwitch

时间:2010-01-27 14:11:50

标签: iphone cocoa-touch uiswitch

我想创建一个有三个位置的自定义UISwtich。有可能吗?

4 个答案:

答案 0 :(得分:10)

如果您需要标准的UI元素或配置范围为2的UISegmentedControl,则应使用UISlider

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

然后设置minimumValueImagemaximumTrackImagethumbImage以使用合适的图片。

答案 1 :(得分:4)

不使用内置的UISwitch。你需要自己动手。

答案 2 :(得分:4)

为什么不使用UISegmentedControl?

答案 3 :(得分: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];
}