Iphone 三联开关
我想创建一个具有三个位置的自定义UISwtich。是否可能?不使用内置UI开关。您需要自己启动。为什么不使用UISegmentedControl?如果您想要标准UI元素或配置范围为2的Iphone 三联开关,iphone,cocoa-touch,uiswitch,Iphone,Cocoa Touch,Uiswitch,我想创建一个具有三个位置的自定义UISwtich。是否可能?不使用内置UI开关。您需要自己启动。为什么不使用UISegmentedControl?如果您想要标准UI元素或配置范围为2的UISlider,您应该使用UISegmentedControl: slider.minimumValue = 0; slider.maximumValue = 2; slider.continuous = NO; 然后设置minimumValueImage、maximumTrackImage和thumbIma
UISlider,您应该使用UISegmentedControl
:
slider.minimumValue = 0;
slider.maximumValue = 2;
slider.continuous = NO;
然后设置minimumValueImage
、maximumTrackImage
和thumbImage
以使用适当的图像。使用UISlider是一种很好的方法。但是,您还需要调整UISlider的机制,使其更像UISwitch。也就是说,当你不完全改变它的位置时,它应该反弹回原位
以下是我最后做的事情(使用FelixLam的部分答案):
连同
- (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];
}
-(void)滑块动作:(UISlider*)滑块{
float origValue=slider.value;
[UIView beginAnimations:nil上下文:NULL];
如果(slider.value0.1)slider.value=1;
如果(slider.value>1.9)slider.value=2;
else滑块。值=0;
[UIView设置动画持续时间:0.2*fabs(滑块值或值)];
[UIView委员会];
}
使用UISegmentedControl是个好主意!UISlider的问题是你必须触球才能改变球的价值,而这种体验并不是很好。我想我会使用UISegmentedControl,谢谢!
- (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];
}