4

3 つの位置を持つカスタム UISwitch を作成したいと考えています。出来ますか?

4

4 に答える 4

10

UISegmentedControl標準の UI 要素が必要な場合、またはUISlider2 の範囲で構成する場合に使用する必要があります。

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

そして、minimumValueImagemaximumTrackImageを設定して、thumbImage適切な画像を使用します。

于 2010-01-27T14:45:33.320 に答える
4

UISegmentedControl を使用しないのはなぜですか?

于 2010-01-27T14:43:10.657 に答える
4

組み込みの UISwitch を使用しない。自分で巻く必要があります。

于 2010-01-27T14:15:19.477 に答える
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 に答える