Existe-t-il un moyen d'augmenter exponentiellement les valeurs produites par un UISlider dans une application iPhone? Par exemple, le premier tiers génère 1 -10, le deuxième tiers génère 11 à 100 et le dernier tiers génère 101 à 1000?Utiliser UISider pour générer une échelle logarithmique de valeurs
Répondre
Vous pouvez calculer vous-même la valeur log/exp à partir du curseur et afficher cette valeur!
Mais si vous voulez une valeur comprise entre 1 à 1000, vous pouvez définir min du curseur à 0, max à 3 et faire la puissance de 10:
powf(10.0,mySlider.value)
haha un peu génie, n'a pas pensé à cela: P quel est le code obj-c pour cela? Y at-il une fonction ou est-ce que j'écris moi-même les maths? Utilisez les instructions if pour déterminer combien multiplier chaque valeur ou y a-t-il une méthode plus propre? – espekia
C'est la fonction, en C. Où que vous vouliez extraire la valeur du curseur comme exponentielle, utilisez cet extrait là. N'oubliez pas de marquer la réponse de Benôit comme acceptée. – JoePasq
I dérivés de ces méthodes objectives C de cette après: Logarithmic slider
-(double) wpmForSliderValue: (double) sliderValue {
// Input will be between min and max
static double min = WPM_SLIDER_MIN;
static double max = WPM_SLIDER_MAX;
// Output will be between minv and maxv
double minv = log(WPM_SCALE_MIN);
double maxv = log(WPM_SCALE_MAX);
// Adjustment factor
double scale = (maxv - minv)/(max - min);
return exp(minv + (scale * (sliderValue - min)));
}
-(double) sliderValueForWpm: (double) wpm {
// Output will be between min and max
static double min = WPM_SLIDER_MIN;
static double max = WPM_SLIDER_MAX;
// Input will be between minv and maxv
double minv = log(WPM_SCALE_MIN);
double maxv = log(WPM_SCALE_MAX);
// Adjustment factor
double scale = (maxv - minv)/(max - min);
return (((log(wpm) - minv)/scale) + min);
}
+1 pour résoudre mon cauchemar – btype
cela ressemble plus exponentielle que logarithmique ... – Vladimir
je ne savais pas qu'il était le bon mot, mais wikipedia dit « un exemple simple est quand incréments sur l'axe vertical d'un graphique sont étiquetés 1 , 10, 100, 1000, au lieu de 1, 2, 3, 4. " – espekia