Estoy implementando un UISlider que un usuario puede manipular para establecer una distancia. Nunca he usado CocoaTouch UISlider, pero he usado otros controles deslizantes de marcos, generalmente hay una variable para configurar el "paso" y otras propiedades de "ayuda".¿Cómo hacer que UISlider produzca bonitos números redondeados exponencialmente?
La documentación para el UISlider trata solo con un valor máximo y mínimo, y la salida es siempre un flotante decimal 6 con una relación lineal con la posición del "control deslizante nob". Supongo que tendré que implementar la funcionalidad deseada paso a paso.
Para el usuario, los valores mín/máx variar de 10 a 999 m Km, estoy tratando de implementar esto en una forma exponencial, que se sentirá natural para el usuario. Es decir. el usuario experimenta una sensación de control sobre los valores, grandes o pequeños. También que el "resultado" tiene valores razonables. Valores como 10m, 200m, 2.5km, 150 km, etc. en lugar de 1.2342356 o 108.93837756 km.
Me gustaría que el tamaño del escalón aumente en 10 m durante los primeros 200 m, luego en 50 m hasta 500 m, luego al pasar el valor de 1000 m, comienza a ocupar Kilómetros, entonces es paso tamaño = 1 km hasta 50 km, luego tal vez pasos de 25 km, etc.
De cualquier forma que vaya sobre esto termino haciendo un montón de redondeos y muchos cálculos envueltos en forrest de declaraciones if y conversiones NSString/Number , cada vez que el usuario mueve el control deslizante solo un poco.
Esperaba que alguien me pudiera prestar un poco de inspiración/ayuda matemática o hacerme consciente de un enfoque más sencillo para resolver este problema.
Mi última idea es poblar y una matriz con valores de 100 de cuerda, y luego tener el valor deslizador int corresponden a una cadena, esto no es muy flexible, pero factible.
Gracias de antemano por cualquier ayuda dada :)
Por ahora he usado Números de manzanas para hacer los números reales que quería (ingresando algunos números, seleccione y arrastre. Esto hace que Numbers genere números en el mismo intervalo) Hice unos 75 números. Luego exporté como CSV, lo ejecuté a través de Textmate e hice algunas expresiones regulares para obtener los números como cadenas @ "number", Pegué el número en una matriz e hice que el control deslizante los extraiga: \t NSInteger numberLookup = lroundf ([control deslizante valor]); \t NSString * distanceString = [sliderNumbers objectAtIndex: numberLookup]; Configuré mi control deslizante mínimo a 0 y máximo a [conteo de números deslizantes]. Todavía estoy interesado en escuchar ideas :) – RickiG