4

初めてUIsliderを使用しています。まず、値の範囲が0〜10の場合にスライダー位置の値を取得する方法を知りたいです。

次に、スライダーを5つの異なる値に設定します。1、2、3、4、5のように

スライダーはラベル付けされた値の間に設定しないでください ここに画像の説明を入力してください

4

3 に答える 3

4

最初にテキストファイルを設定し、この関数をコードに追加します

-(IBAction)changeSlider:(id)sender 
{
    text_field .text= [[NSString alloc] initWithFormat:@" Value %d ", (int)slider.value];
}
于 2012-12-07T11:31:52.487 に答える
3

私はこのチュートリアルに従って、最大数やスライダーが毎回どれだけ増えるかなど、コードで設定できる変数があると非常に役に立ちました。リンク:http ://www.xprogress.com/post-35-uislider-tutorial-example-how-to-use-slider-in-iphone-sdk-xcode/

于 2012-07-23T09:48:27.597 に答える
0

この場合、XCodeのスライダーを0〜3の値に設定しました。ただし、スライダーの値はfloat:0.000〜3.000です。

// **** Cylinder Volume Slider ****

- (NSInteger) normalizeValueCylinderVolumeSlider:(float) value
{
NSInteger normalizedValue = 0;

if (value>1.5)
{
    if (value>2.5)
        normalizedValue = 3;
    else
        normalizedValue = 2;
}
else if (value>0.5)
    normalizedValue = 1;

return normalizedValue;

}

- (IBAction)valueChangedCylinderVolumeSlider:(UISlider *)sender
{
float value = [sender value];
NSInteger normalizedValue;

// Step 1:

normalizedValue = [self normalizeValueCylinderVolumeSlider:value];

// Step 2:

if (normalizedValue>value)
{
    if ((normalizedValue-value)<0.3)
        sender.value = normalizedValue;
}
else if ((value-normalizedValue)<0.3)
    sender.value = normalizedValue;

}

- (IBAction)touchUpInsideCylinderVolumeSlider:(UISlider *)sender
{
float normalizedValue = 0;

normalizedValue = [self normalizeValueCylinderVolumeSlider:[sender value]];

sender.value = normalizedValue;

}

- (IBAction)touchUpOutsideCylinderVolumeSlider:(UISlider *)sender
{
float normalizedValue = 0;

normalizedValue = [self normalizeValueCylinderVolumeSlider:[sender value]];

sender.value = normalizedValue;

}


valueChangedアクションで、(ステップ1)値をリジッド値に設定します:0、1、2、3。そして(ステップ2)リジッド値から0.3に近づく場合は、スライダーサムをリジッド値に固定します。

touchUpInsideとtouchUpOutsideで、valueChangedアクションから「ステップ1」コードを繰り返して、ドラッグアクションがスティック範囲外で終了する場合のスライダー値を修正します(「ステップ2」)。


最善の方法は、このすべてのコードをSliderのサブクラスに配置することです。しかし、これは私の唯一の最初の週/iOS開発の試みです。

于 2014-08-27T11:27:22.190 に答える