私はwatchKitでカスタムスライダを作成しています。私は1つの変数sliderPosition
タイプCGFloat
を持っています。これはUIの位置をdidSet
に設定しています。 Digital Crownを使用してスライダの値を変更します。可変型CGFloatに範囲を与える
func didCrown(value: Double, rps: Double) {
if isValidRange() {
if value > 0 {
ring.sliderPosition = ring.sliderPosition + 0.01
} else if value < 0 {
ring.sliderPosition = ring.sliderPosition - 0.01
}
}
}
func isValidRange() -> Bool {
if ring.sliderPosition >= 0.00 && ring.sliderPosition <= 1.00 {
return true
} else if ring.sliderPosition <= 0.0 {
ring.sliderPosition = 0
return false
} else {
ring.sliderPosition = 1
return false
}
}
私は上記の方法では1
に0〜私のvar sliderPositionに範囲を与えるために、いくつかのネイティブ関数を探していますisValidRange
ロジックでは多少の誤差があります。値が1.00で値を増やそうとすると、1.01に設定され、0.00に設定すると-0.01に設定されるためです。
http://stackoverflow.com/questions/36110620を見てください/標準的なウェイからクランプへの2つの値の間で、ある範囲に値を制限( "クランプ")するためのさまざまな方法のための迅速な方法です。参照のために –
@ MartinR Thnx。 –