4

我想创建一个具有三个位置的自定义 UISwtich。是否可以?

4

4 回答 4

10

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

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

然后设置minimumValueImage,maximumTrackImagethumbImage使用合适的图像。

于 2010-01-27T14:45:33.320 回答
4

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

于 2010-01-27T14:15:19.477 回答
4

为什么不使用 UISegmentedControl?

于 2010-01-27T14:43:10.657 回答
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];
}
于 2012-03-31T20:52:24.680 回答