我想创建一个具有三个位置的自定义 UISwtich。是否可以?
1005 次
4 回答
10
UISegmentedControl
如果您想要标准 UI 元素或配置UISlider
范围为 2 的a,则应该使用:
slider.minimumValue = 0;
slider.maximumValue = 2;
slider.continuous = NO;
然后设置minimumValueImage
,maximumTrackImage
并thumbImage
使用合适的图像。
于 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 回答