Ich erstelle einen benutzerdefinierten Schieberegler in WatchKit. Ich habe eine Variable sliderPosition
vom Typ CGFloat
, die ihre Position auf UI auf didSet
setzt. Ich ändere den Wert des Sliders mit Digital Crown.Einen Bereich einem variablen Typ geben 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
}
}
ich für einige native Funktionen suchen Bereich meiner var sliderPosition zwischen 0 bis 1.
In obigen Verfahren geben isValidRange
gibt es einige Fehler in der Logik. Denn wenn der Wert 1,00 ist und ich versuche, den Wert zu erhöhen, wird er auf 1,01 gesetzt, und gleich, wenn 0,00 den Wert -0,01 festlegt.
Werfen Sie einen Blick auf http://stackoverflow.com/questions/36110620/standard-to-clamp-a-number-two-values-in-swift für verschiedene Methoden, um einen Wert auf einen bestimmten Bereich zu beschränken ("clamp"). –
@MartinR Thnx als Referenz. –