5 씩 증가하는 UISlider
증분으로 UISlider이동하려면 어떻게해야 합니까?1-1005
다음과 같은 대상을 추가하십시오.
slider.continuous = YES;
[slider addTarget:self
action:@selector(valueChanged:)
forControlEvents:UIControlEventValueChanged];
그리고 valueChanged 함수에서 값을 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 단위 값이되기를 원합니다. 나는 다음을 할 것이다
- 슬라이더의 범위를 0-(maxRange / unitsteps)로 설정합니다.
- 값 변경 메서드가 실행되면 (int) slider.value * unitsteps 사용하십시오.
위의 예에서 내 슬라이더는 IB에서 0-112 범위로 설정되며 내 코드는 (int) slider.value * 25입니다.
그런 다음 직접 입력을 위해 수정할 수있는 텍스트 필드가있는 경우 슬라이더 값을 [textfield.text intValue] / unitsteps로 설정하면됩니다.
Swift 구문을 찾는 사람을 위해 ...
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)
}
또는 어시스턴트 편집기 (내가 궁극적으로 한 작업)로 액션 함수를 생성하십시오.
@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)")
}
1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values.
- 왼쪽 클릭하고 라벨과 스테퍼를 모두 콘센트로 뷰 컨트롤러로 드래그하십시오.
이름 레이블을 "stepperValue"로
- 스테퍼를 다시 끌어서 놓아 func- 저는 "func"라고 불렀습니다.
@IBAction func inc (sender : AnyObject) {
stepperValue.text = "(Int (stepper.value) * 5)"
스테퍼를 클릭하면 5 씩 증가합니다.
참고URL : https://stackoverflow.com/questions/2519460/uislider-with-increments-of-5
'program story' 카테고리의 다른 글
| 수신기에서 android : process =“: remote”를 사용해야합니까? (0) | 2020.11.07 |
|---|---|
| 저장된 텍스트 영역에서 표시 줄 바꿈 반응 (0) | 2020.11.06 |
| DBNull의 요점은 무엇입니까? (0) | 2020.11.06 |
| jQuery DataTables를 사용할 때 마지막 열에서 정렬 비활성화 (0) | 2020.11.06 |
| System.Collections.Generic.IEnumerable '에'ToList '에 대한 정의가 없습니다. (0) | 2020.11.06 |