¿Cómo hacer que la salida UISlider genere números redondeados de manera exponencial?

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 frameworks, por lo general hay una variable para configurar el "paso" y otras propiedades "auxiliares".

La documentación para el UISlider trata solo con un valor máximo y mínimo, y la salida es siempre un flotador de 6 decimales 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ínimos / máximos varían de 10 ma 999 Km. Estoy tratando de implementar esto de una manera 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 la "salida" tiene valores razonables. Valores como 10m 200m 2.5km 150 km etc. en lugar de 1.2342356 mo 108.93837756 km.

Me gustaría que el tamaño del paso aumente en 10 m durante los primeros 200 m, luego tal vez en 50 m hasta 500 m, luego, al pasar el valor de 1000 m, comienza a tratar con Kilómetros, por lo que es el tamaño del paso = 1 km hasta 50 km, luego quizás 25 km escalones, etc.

Cada vez que hago esto termino haciendo muchos redondeos y muchos cálculos envueltos en un forrest de declaraciones if y conversiones NSString / Number, cada vez que el usuario mueve el control deslizante solo un poco.

Esperaba que alguien pudiera prestarme un poco de inspiración / ayuda matemática o hacerme consciente de un enfoque más ágil para resolver este problema.

Mi última idea es llenar y agrupar con 100 valores de cadena, luego hacer que el valor int del deslizador corresponda a una cadena, esto no es muy flexible, pero factible.

Gracias de antemano por cualquier ayuda brindada :)

Respuestas a la pregunta(6)

Su respuesta a la pregunta