증분이 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 단위 값으로 되어 있어야 합니다.저는 다음과 같이 할 것입니다.
- 슬라이더의 범위를 0 -(최대 범위/단위 단계)로 설정합니다.
- 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.
- 마우스 왼쪽 버튼을 클릭하고 레이블과 스테퍼를 모두 뷰 컨트롤러로 끌어다 놓으십시오.
레이블을 "stepperValue"로 이름 지정
- 스테퍼를 드래그 앤 드롭하면 다시 펑크가 됩니다. 저는 제 것을 펑크라고 불렀습니다.
@IBAction funcinc(발신자:모든 개체) {
stepperValue.text = "(Int(stepper.value) * 5 )"
스테퍼를 클릭하면 5개씩 증가합니다.
언급URL : https://stackoverflow.com/questions/2519460/uislider-with-increments-of-5
'programing' 카테고리의 다른 글
기록 없이 새 분기를 푸시하는 방법 (0) | 2023.08.13 |
---|---|
UI 웹 보기에서 사용자 에이전트 변경 (0) | 2023.08.13 |
PSCustomObject의 어레이에 속성 값을 가진 인스턴스가 포함되어 있는지 확인합니다. (0) | 2023.08.13 |
선 세그먼트의 다른 두 점 사이에 점이 있는지 어떻게 확인할 수 있습니까? (0) | 2023.08.13 |
html select 요소의 선택된 옵션 값을 검색하고 설정하기 위한 jQuery (0) | 2023.08.08 |