2 puntos por GN⁺ 2025-09-03 | 1 comentarios | Compartir por WhatsApp
  • La forma de seleccionar la hora en la app de Alarmas del iPhone no usa un diseño circular
  • A simple vista parece una interfaz giratoria, pero en realidad está compuesta por una lista larga
  • Hace que el desplazamiento del usuario se sienta como si no tuviera fin
  • Ha llamado la atención de desarrolladores y diseñadores UX como un caso de ilusión visual en la UI
  • Entender cómo está implementado en realidad puede servir como referencia para el desarrollo de apps

Estructura del selector de hora en la app de Alarmas del iPhone

  • El selector para ajustar la hora en la app de Alarmas del iPhone parece, en la superficie, tener una forma circular o de rueda giratoria
  • Sin embargo, en realidad está implementado como una lista muy larga con un inicio y un final definidos
  • Al desplazarse, genera la ilusión de que se puede seguir girando hacia arriba o hacia abajo indefinidamente
  • Este enfoque de implementación busca ofrecer una experiencia de usuario similar sin aplicar directamente una interfaz circular
  • El desarrollador diseña la interfaz para que parezca circular aprovechando una lista de desplazamiento infinito

Perspectiva de desarrollo y diseño UX

  • Con este método, es posible sustituir una interfaz circular compleja solo con una lista simple
  • En la práctica, no se pasa al sentido contrario en los extremos de la lista, pero como hay muchos elementos, es difícil que el usuario llegue al límite
  • Este diseño utiliza una ilusión visual en la UI para ofrecer la experiencia que el usuario espera
  • Es un ejemplo de cómo, al desarrollar una app, una implementación basada en listas puede lograr la utilidad y usabilidad de una interfaz circular

Conclusión

  • El selector de hora de la app de Alarmas del iPhone crea un efecto circular girando una lista larga
  • Esto ofrece a desarrolladores y diseñadores UI/UX una dirección de diseño de interfaces intuitiva y eficiente

1 comentarios

 
GN⁺ 2025-09-03
Opiniones de Hacker News
  • Un bug realmente incómodo en la app de Alarmas (o no sé si será una función) es que la configuración de AM/PM solo se aplica bien si esperas a que el dial de la hora rebote y se detenga. Si solo haces swipe y tocas Guardar, se queda la configuración anterior, así que puedes terminar con una alarma importante de las 7am puesta a las 7pm y llegar tarde al trabajo
    • Últimamente da la impresión de que ya ni siquiera saben programar menús. Por ejemplo, en la pantalla principal de listas de la app Recordatorios de macOS, al elegir el menú desplegable de hora, si sueltas el botón del mouse sobre la hora deseada y mueves apenas el cursor hacia arriba o abajo mientras corre la animación de flash, de repente se selecciona otra hora. No coincide en nada con la forma en que esto ha funcionado siempre en macOS desde 1984. Reporté el bug hace años, pero supongo que tienen cosas que consideran más importantes
    • Después de sufrir varias veces por este bug, al final terminé cambiando por completo al formato de 24 horas en todos mis dispositivos. Para una interfaz que se usa todos los días, la UI de dial vertical con scroll de iOS me parece realmente mala tanto en usabilidad como en estética. Aun así, me alegró mucho que agregaran la función de tocar el centro del dial para que aparezca un teclado numérico. La entrada de hora con keypad está muy bien diseñada y es eficiente
    • Pensé que solo me pasaba a mí, pero veo que no. Increíble que Apple no haya podido resolver bien ni una sola alarma en todo este tiempo
    • Este es el mayor problema que tuve al cambiar de Android a iPhone. Pero lo que más me molesta es que cuando le comentas este tipo de cosas a desarrolladores o programadores, siempre salen con algo como "¿no será que tú lo estás haciendo mal?" o "¿y eso qué tan importante es?" y lo minimizan. (¡Si es importante, por eso no quiero quedarme dormido y por eso terminamos teniendo esta conversación!) Gente que gana más de 100 mil dólares al año y aun así no puede corregir rápido ni estas cositas. Ojalá tuvieran un poco de orgullo y arreglaran con decisión los bugs simples. Mientras tanto, la UX del mundo sigue volviéndose más compleja. Hablan de simplicidad, pero luego la UI de alarmas y temporizadores es distinta aunque visualmente apenas se parezcan, o quedan visibles eventos duplicados en el calendario que podrían borrarse con una sola línea de regex, o no puedes encontrar contactos con el mismo nombre y el proceso de fusión manual está escondido; y cuando por fin logras fusionarlos, se agrega otro evento de cumpleaños que ni siquiera se puede borrar, etc. (Todo eso me pasó de verdad.) Siento que entre todos estamos empeorando el software. No creo que la IA vaya a quitarnos el trabajo porque aumente la productividad, sino porque bajamos demasiado nuestros estándares de calidad. A este punto, ya impresiona con que al menos no esté hecho en Perl o Brainfuck
    • Para eso existe la función de alarma de sueño/despertar. La UI de esa función sí está bastante bien. Puedes configurar un horario semanal y, al ajustar la hora de la alarma, la UI de reloj circular te muestra visualmente cuánto más podrás dormir
  • Hace 10 años, una buena app de alarmas para smartphone se veía así; vean la UI del reloj despertador del Nokia N9. También hay un debate en Hacker News sobre esto
    • La app Google Clock también ofrece algo parecido. Tiene un slider en la pantalla principal, un selector de hora circular (aunque en lo personal no me gusta) y una notificación tipo toast que te dice cuánto falta para la alarma. Solo le faltan las opciones de diario/desactivado
    • La app de reloj de Android está bastante bien y se parece a la app de alarmas del Nokia N9. A principios de este año me cambié a iPhone, y los distintos problemas de UI son muy molestos. Ya me cansé del dial giratorio lento, y extraño muchísimo el mensaje de confirmación de Android que dice algo como "faltan x horas para la alarma" después de configurarla. Sobre todo, el spinner numérico es pésimo. Cada vez que tengo que poner la edad de los niños en la app de Hilton, me estreso girando el dial numérico. No entiendo de dónde salió la reputación de que iOS era mágico, agradable e intuitivo. Ya me dan ganas de volver a Pixel
    • Curiosamente, en iOS la pantalla de configuración del horario de sueño a la que entras desde la app Health se parece muchísimo al despertador del Nokia N9
    • Un smartphone bien hecho sí importa. Da mucha pena que Nokia abandonara el negocio justo después de sacar uno de sus mejores productos
    • Hoy en día hay muchos jóvenes que no saben leer las manecillas del reloj, así que si vas a diseñar algo para el público general, creo que también hay que tomar eso en cuenta
  • Como mínimo, estaría bien que los minutos/segundos se configuraran con una lista corta para poder llegar rápido a 00 de una sola vez. En una app de PalmOS llamada BigClock, si tocabas la parte superior de cada dígito subía en 1, y si tocabas la parte inferior bajaba en 1; eso permitía una entrada rapidísima y predecible. Era fácil elegir la hora deseada sin necesidad de feedback visual como el rebote de una rueda de scroll. BigClock intro 1, BigClock intro 2
    • Con que hubiera un teclado, ya sea keypad en pantalla o físico, sería suficiente. Se termina en cuatro pulsaciones como máximo
  • La app Clock de iOS sí es bastante mala. Ahora que AlarmKit llega en iOS 26, me alegra muchísimo que por fin se puedan crear apps de alarma personalizadas. Faltaban funciones totalmente obvias como "mantener las alarmas repetidas pero desactivar solo la de mañana", y tampoco había cosas como alarmas integradas con el calendario
    • Si usas la función de sueño, esa opción de "desactivar solo mañana" ya existe desde hace años en lugar de la alarma normal. Al cambiar el horario de sueño, te pregunta si quieres modificar todo el calendario o solo desactivarlo una vez
    • Que Apple abra directamente el permiso para crear apps de alarma me parece un enorme agujero de seguridad
    • Si usas el horario de sueño, puedes omitir solo la siguiente alarma o tener distintas horas para despertarte según el día de la semana. Se puede configurar desde el mismo lugar que una alarma normal
    • A mí no me parece tan mala; de hecho, al ser simple, la entiendo bien como app predeterminada
  • Me pregunto si este código de verdad nunca volvió a tocarse desde que se escribió, o si sobrevivió incluso después de una reescritura del código. Los iPhone antiguos tenían mala fama porque las alarmas se desconfiguraban con la zona horaria o no sonaban bien cuando cambiaba el horario de verano: bug de alarmas del iPhone – zona horaria/horario de verano
    • Esto no es un problema de zona horaria ni de la app Clock. Creo que esta limitación viene de un componente de UI a nivel sistema llamado UIPickerView. Mi app también tiene un "bug" parecido
    • Creo que es el resultado de un crecimiento orgánico. Al principio seguramente era una lista de la A a la Z, pero alguien intentó convertirla en algo giratorio, y como a nivel de UI la solución más simple era repetir varias veces una lista finita, se quedó así. Por ejemplo, una lista finita en HTML se puede hacer facilísimo, pero una lista infinita virtualizada en JS seguramente habría que volver a portarla cada vez que cambie el framework (por ejemplo, si pasan a SwiftUI)
    • Como hacer una lista circular e infinita reutilizando una y otra vez los mismos pocos componentes es demasiado difícil, un código brutal tipo (0..60).times(50).flatten() resuelve el 99% del problema con 1% del esfuerzo. Si el único problema aparece cuando QA hace scroll hasta el final de la lista, eso solo llegaría a Product como issue. ¿A quién le importa?
  • Este es un excelente hack para evitar desarrollar un widget personalizado. Aplausos al ingeniero aleatorio que lo hizo
  • Esto estuvo escondido así por más de 10 años. Vale la pena pensar en una solución real
    • Creo que el pragmatismo es mejor que el perfeccionismo
  • Una de las cosas que me parecen interesantes es que el temporizador y la alarma tienen implementaciones separadas y muy distintas. En la alarma, los minutos se recorren en ciclo, pero en el temporizador no. No entiendo por qué, si son interfaces parecidas, están implementadas distinto. Y además ni siquiera es verdaderamente circular. Me parece código que solo agrega complejidad innecesaria
  • Como en los comentarios aquí hay mucha gente cansada de los bugs de las alarmas de iOS, dejo un tip por si a alguien le sirve: Sharp vende varios despertadores baratos y decentes. Por 5 a 12 dólares puedes liberarte de estos bugs para siempre. Y además, la mayor ventaja es que el primer dispositivo que tocas en la mañana no es el smartphone que te arruina el cerebro. Personalmente, el modelo Sharp Twin Bell que compré en Walmart era el más caro y aun así costó 12.63 dólares
    • Uso ese mismo modelo. La mejor característica, algo que nunca experimenté con los despertadores digitales anteriores, es que tienes que configurar la alarma manualmente cada noche. Solo tiene un interruptor de encendido/apagado para la alarma, y cuando suena hay que apagarla; luego tienes que volver a activarla al menos 12 horas después (o si no podría sonar a las 8pm). Así que se volvió una rutina revisar mi agenda cada noche y encender el interruptor de la alarma. Ahora ya no me preocupa olvidar poner una alarma para un día libre o para una hora temprana. Y además suena tan fuerte que nunca me he vuelto a dormir después de escucharla
  • No entiendo por qué en la alarma y en el temporizador las posiciones de los botones de posponer y detener están invertidas. En uno el botón de detener está en el centro de la pantalla, y en otro abajo. No entiendo por qué algo así no está estandarizado
    • Cuando ando tanteando el teléfono medio dormido por la mañana, ahí está el gran botón naranja brillante de posponer en el lugar donde ya estoy acostumbrado, así que termino tocándolo con facilidad. Para apagar realmente la alarma, tengo que estar lo bastante despierto como para encontrar el botón gris de detener, que además cambió de lugar; solo entonces se detiene. Si desactivas la opción de posponer en la configuración de la alarma, puedes usar el gran botón naranja de detener en el centro igual que en el temporizador. Pero escuché que en iOS 26 van a eliminar eso porque los dos botones se ven demasiado distintos. Qué pena que ahora lo más importante en una alarma sea verse bonita
    • Hermano, de verdad quiero darte las gracias. He sufrido demasiado durante años por la falta de estos pequeños detalles