programing

증분이 5인 UI 슬라이더

testmans 2023. 8. 13. 09:34
반응형

증분이 5인 UI 슬라이더

내 것을 어떻게 가지고 있습니까?UISlider에서.1-100의 점증적으로5?

다음과 같은 대상을 추가합니다.

slider.continuous = YES;
[slider addTarget:self
      action:@selector(valueChanged:) 
      forControlEvents:UIControlEventValueChanged];

그리고 valueChanged function에서 값을 5로 나눌 수 있는 가장 가까운 값으로 설정합니다.

[slider setValue:((int)((slider.value + 2.5) / 5) * 5) animated:NO];

따라서 5 이외의 간격이 필요한 경우 다음과 같이 설정합니다.

float interval = 5.0f;//set this
[slider setValue:interval*floorf((slider.value/interval)+0.5f) animated:NO];

Swift에서 조금 더 우아한 솔루션은 다음과 같은 것일 수 있습니다.

let step: Float = 5
@IBAction func sliderValueChanged(sender: UISlider) {
  let roundedValue = round(sender.value / step) * step
  sender.value = roundedValue
  // Do something else with the value

}

이렇게 하면 5단계를 얻을 수 있습니다.당신은 내 게시물에서 설정에 대해 더 읽을 수 있습니다.

스테퍼 기능을 활성화하는 다른 방법이 있습니다.일반적인 경우에 있어서의 저작물.

예:

데이터 범위는 0 - 2800이며 증분이 25 단위 값으로 되어 있어야 합니다.저는 다음과 같이 할 것입니다.

  1. 슬라이더의 범위를 0 -(최대 범위/단위 단계)로 설정합니다.
  2. value changeed method가 실행되는 경우 (int)int.value * 단위 스텝을 사용합니다.

위의 예제에서 내 슬라이더는 IB에서 0 - 112 범위로 설정되며, 내 코드는 (int)slider.value * 25입니다.

직접 입력을 위해 수정할 수 있는 텍스트 필드가 있는 경우 슬라이더 값을 [textfield.text intValue]/ 단위 단계로 설정하면 됩니다.

스위프트 구문을 찾는 사람은...

override func viewDidLoad() {
    super.viewDidLoad()
    mySlider.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
}

func sliderValueDidChange(sender:UISlider!)
{
    //Set value to the nearest 5...
    print((Float)((Int)((sender.value + 2.5) / 5) * 5))
    sender.setValue((Float)((Int)((sender.value + 2.5) / 5) * 5), animated: false)
}

또는 Assistant Editor(보조 편집기)를 사용하여 Action(작업) 기능을 만듭니다(최종적으로 수행한 작업).

@IBAction func mySliderValueChanged(sender: UISlider) {
    //Set value to the nearest int
    sender.setValue(Float(roundf(sender.value)), animated: false)

}

스위프트 3에서 슬라이더의 증분 +/- 7:

@IBOutlet weak var sldComponent: UISlider!

...

sldComponent.addTarget(self, action:  #selector(_sldComponentChangedValue),for: .valueChanged)

...

func _sldComponentChangedValue(sender: UISlider!) {

        self.sldComponent.setValue((round(sender.value / 7) * 7), animated: false)
        print("\(sender.value)")

}

왜 그냥:

@IBAction func onSlider(_ sender: UISlider) {
    let value = Int(sender.value)
    if value % 5 == 0 {
        // handle(value) ... 
    }
}
1. In storyboard mode, drag and drop a stepper and label.  the label will show the stepper values. 
  1. 마우스 왼쪽 버튼을 클릭하고 레이블과 스테퍼를 모두 뷰 컨트롤러로 끌어다 놓으십시오.

레이블을 "stepperValue"로 이름 지정

  1. 스테퍼를 드래그 앤 드롭하면 다시 펑크가 됩니다. 저는 제 것을 펑크라고 불렀습니다.

@IBAction funcinc(발신자:모든 개체) {
stepperValue.text = "(Int(stepper.value) * 5 )"

스테퍼를 클릭하면 5개씩 증가합니다.

언급URL : https://stackoverflow.com/questions/2519460/uislider-with-increments-of-5

반응형