2 pontos por GN⁺ 2025-09-03 | 1 comentários | Compartilhar no WhatsApp
  • A forma de selecionar o horário no app Alarme do iPhone não usa um design circular
  • Por fora, parece uma interface giratória, mas na prática é composta por uma lista longa
  • Isso faz o usuário sentir que está rolando algo como se não tivesse fim
  • O caso chama atenção de desenvolvedores e designers de UX como um exemplo de ilusão de interface
  • Entender a forma real de implementação serve de referência para desenvolvimento de apps

Estrutura do seletor de horário do app Alarme do iPhone

  • No iPhone, o seletor usado para definir o horário no app Alarme parece, à primeira vista, ter um formato circular, como uma roda giratória
  • Porém, esse seletor na verdade é implementado como uma lista muito longa com início e fim definidos
  • Ao rolar, ele dá ao usuário a impressão de que é possível continuar girando para cima ou para baixo indefinidamente
  • Essa forma de implementação foi pensada para oferecer uma experiência parecida sem aplicar diretamente uma interface circular
  • O desenvolvedor projeta a interface para parecer circular usando uma lista de rolagem aparentemente infinita

Perspectiva de desenvolvimento e UX

  • Com esse método, é possível substituir uma interface circular complexa apenas com uma lista simples
  • Na prática, o usuário não passa de uma ponta da lista para a outra, mas como há muitos itens, é difícil alcançar o limite
  • Esse design usa uma ilusão de UI para entregar a experiência que o usuário espera
  • É um exemplo de como, no desenvolvimento de apps, uma implementação baseada em lista pode garantir a utilidade e a usabilidade de um controle circular

Conclusão

  • O seletor de horário do app Alarme do iPhone produz um efeito circular girando uma lista longa
  • Isso sugere, para desenvolvedores e designers de UI/UX, um caminho de design de interface intuitivo e eficiente

1 comentários

 
GN⁺ 2025-09-03
Opinião do Hacker News
  • O bug realmente incômodo (ou recurso, não sei) no app de Alarme é que a configuração de AM/PM só é aplicada corretamente se você esperar o seletor de hora quicar e parar. Se você só deslizar e tocar em salvar, a configuração anterior permanece, então aquele alarme importante das 7am continua como 7pm e você acaba chegando atrasado ao trabalho
    • Hoje em dia parece que nem menus conseguem mais programar direito. Por exemplo, na tela principal da lista do app Lembretes do macOS, ao escolher o menu suspenso de horário, se você soltar o botão do mouse em cima da hora desejada e mover o cursor levemente para cima ou para baixo enquanto a animação de flash ainda está acontecendo, outra hora é selecionada de repente. Isso não bate em nada com o comportamento que sempre foi igual no macOS desde 1984. Reportei o bug anos atrás, mas imagino que tenham coisas consideradas mais importantes
    • Depois de sofrer com esse bug algumas vezes, acabei migrando totalmente para o formato de 24 horas em todos os dispositivos. Para uma interface usada todos os dias, acho a UI de seletor vertical com rolagem do iOS realmente ruim tanto em usabilidade quanto em estética. Ainda bem que adicionaram a função de tocar no meio do seletor para abrir um teclado numérico. Inserir a hora pelo teclado é muito bem projetado e eficiente
    • Achei que isso só acontecesse comigo, mas pelo visto não. É impressionante que a Apple não consiga acertar nem um alarme depois de tanto tempo
    • Entre os problemas que surgiram quando troquei Android por iPhone, esse foi o maior. E o que mais irrita é que, quando você fala desse tipo de problema para desenvolvedores ou programadores, sempre respondem algo como "será que você não está usando errado?" ou "isso nem é tão importante assim". (É importante sim, porque eu também não quero perder a hora, e é por isso que essa conversa existe!) A gente ganha mais de 100 mil dólares por ano e mesmo assim não consegue corrigir rapidamente nem esse tipo de coisinha. Queria que houvesse mais orgulho no trabalho e coragem para consertar bugs simples. Mesmo assim, o mundo continua deixando a UX cada vez mais complicada. Fala-se tanto em simplicidade, mas aí a UI de alarme e timer é diferente apesar de parecer visualmente parecida, eventos duplicados no calendário continuam expostos mesmo podendo ser removidos com uma linha de regex, contatos com o mesmo nome não são encontrados e o processo de mesclagem manual fica escondido, e quando você finalmente mescla ainda ganha um evento de aniversário duplicado que nem pode apagar, etc. (Tudo isso aconteceu comigo de verdade.) Acho que todos nós estamos piorando o software. Não é que a IA vai tomar nossos empregos porque aumenta a produtividade; é porque baixamos demais o padrão de qualidade. Hoje em dia já parece até motivo de admiração só o fato de não estarmos programando tudo em Perl ou Brainfuck
    • É por isso que existe o recurso de alarme de sono/despertar. A UI dele é realmente boa. Dá para configurar uma agenda semanal e, ao ajustar a hora do alarme, a interface de relógio circular mostra visualmente quanto tempo a mais você ainda pode dormir
  • Dez anos atrás, um bom app de alarme para smartphone era assim: veja a UI do relógio de alarme do Nokia N9. E também existe um tópico de discussão no Hacker News sobre isso
    • O app Google Clock também oferece algo parecido. Na tela principal há um slider, um seletor circular de hora (do qual eu pessoalmente não gosto) e uma notificação toast informando quanto tempo falta até o alarme. Só faltam as opções de todos os dias/desativado
    • O app Relógio do Android é bem bom e lembra bastante o app de alarme do Nokia N9. No começo deste ano mudei para iPhone, e os vários problemas de UI estão me incomodando demais. Já cansei do seletor giratório lento, e sinto muita falta da mensagem de confirmação do Android do tipo "faltam x horas para o alarme" depois de configurar um alarme. Especialmente o spinner numérico é realmente péssimo. Sempre que preciso definir a idade das crianças no app da Hilton, fico estressado por ter que girar aquele seletor numérico. Não sei de onde veio a reputação de que o iOS é mágico, agradável e intuitivo. Estou até com vontade de voltar para o Pixel
    • Curiosamente, a tela de configuração de agenda de sono no iOS, acessada pelo app Saúde, é muito parecida com o relógio de alarme do Nokia N9
    • Um smartphone de verdade faz diferença. É uma pena enorme que a Nokia tenha desistido do negócio logo depois de lançar seu melhor produto
    • Hoje em dia muita gente jovem não sabe ler relógio de ponteiro, então acho que isso também precisa ser considerado ao pensar em algo voltado ao grande público
  • No mínimo, minutos/segundos deveriam ser configurados em uma lista curta para que fosse possível chegar rapidamente ao 00 de uma vez. No app BigClock do PalmOS, tocar na parte de cima de cada dígito aumentava em 1, e tocar na parte de baixo diminuía em 1, o que permitia uma entrada muito rápida e previsível. Era fácil escolher a hora desejada sem precisar de feedback visual como a quicada da roda de rolagem. BigClock 1, BigClock 2
    • Eu só queria um teclado, tanto faz se é keypad virtual ou físico. Com no máximo quatro toques já resolve
  • O app Relógio do iOS é realmente ruim. Agora que o AlarmKit chegou no iOS 26, estou muito feliz porque finalmente vou poder criar meu próprio app de alarme personalizado. Faltavam recursos muito óbvios, como "manter o alarme recorrente mas desativar só amanhã", e também não havia algo como alarmes integrados ao calendário
    • Se você usa o recurso de sono, já dava para usar essa função de "desativar só amanhã" em vez de um alarme comum desde alguns anos atrás. Ao alterar a programação de sono, ele pergunta se você quer mudar a agenda inteira ou desligar só uma vez
    • A ideia de a Apple abrir diretamente a possibilidade de criar apps de alarme parece um grande buraco de segurança
    • Se você usa a agenda de sono, dá para pular só o próximo alarme ou ter horários de despertar diferentes dependendo do dia da semana. Também dá para configurar isso diretamente no mesmo lugar dos alarmes normais
    • Eu não acho tão ruim assim; na verdade, por ser simples, faz sentido para um app padrão
  • Fico me perguntando se esse código realmente nunca mais foi revisitado desde que foi escrito, ou se sobreviveu até depois de uma reescrita. Os iPhones antigos tinham má fama por problemas com fuso horário nos alarmes ou por não tocar direito nas mudanças de horário de verão: Bug de alarme no iPhone – problemas de fuso horário/horário de verão
    • Isso é separado de problemas de fuso horário ou do app Relógio em si. Acho que essa limitação vem de um componente de UI em nível de sistema chamado UIPickerView. Meu app também tem um "bug" parecido
    • Acho que isso foi surgindo de forma orgânica. No começo talvez fosse uma lista de A a Z, mas alguém quis transformá-la em algo giratório, e a solução mais simples no nível da UI foi só repetir várias vezes uma lista finita, então isso acabou permanecendo. Por exemplo, em HTML é muito fácil fazer uma lista finita, mas uma lista infinita virtualizada em JS provavelmente precisaria ser portada toda vez que o framework mudasse (tipo quando passasse para SwiftUI)
    • Como é difícil demais construir uma lista circular e infinita reutilizando corretamente alguns poucos componentes, um código brutal do tipo (0..60).times(50).flatten() resolve 99% do problema com 1% do esforço. Se a QA só notar algo ao rolar até o fim da lista, provavelmente só o Product levantaria isso como problema. E quem vai se importar?
  • Isso foi um ótimo hack para evitar desenvolver um widget customizado. Meus aplausos para o engenheiro aleatório
  • Isso ficou escondido desse jeito por mais de 10 anos. Vale a pena pensar em uma solução de verdade
    • Acho que pragmatismo é melhor que perfeccionismo
  • Uma das coisas que acho interessantes é que timer e alarme têm implementações separadas e bem distantes entre si. No alarme, os minutos circulam; no timer, não. Não entendo por que foram implementados de forma diferente apesar de a interface ser parecida. Também é estranho que nem seja realmente circular. Para mim é código que só adiciona complexidade desnecessária
  • Como há muitas pessoas nos comentários dizendo estar cansadas dos bugs do alarme no iOS, deixo aqui uma dica para quem estiver na mesma situação. A Sharp vende vários despertadores baratos e decentes. Por 5 a 12 dólares você pode se livrar desses bugs para sempre. E, de quebra, a melhor parte é que o primeiro dispositivo que você pega de manhã não é um smartphone que destrói seu cérebro. Pessoalmente, o modelo Sharp Twin Bell que comprei no Walmart era o mais caro e mesmo assim custou só 12,63 dólares
    • Uso o mesmo modelo. A melhor característica, algo que eu nunca experimentei em despertadores digitais antigos, é que você precisa configurar o alarme manualmente toda noite. O alarme só tem uma chave liga/desliga, e quando ele começa a tocar você precisa desligá-lo e só religá-lo pelo menos 12 horas depois (senão ele pode tocar às 20h). Então virou rotina conferir minha agenda toda noite e ligar a chave do alarme; agora não corro mais o risco de esquecer um alarme de feriado ou de horário mais cedo. E ele é tão alto que nunca mais ouvi o alarme e voltei a dormir
  • Eu realmente não entendo por que as posições dos botões de soneca e parar são invertidas entre o alarme e o timer. Em um, o botão de parar fica no centro da tela; no outro, fica embaixo. Não sei por que esse tipo de coisa não é padronizado
    • Quando você está meio dormindo de manhã e apalpa o celular, acaba apertando facilmente o grande botão laranja brilhante de soneca no lugar em que já está acostumado. Para desligar de vez o alarme e realmente fazê-lo parar, é preciso estar totalmente acordado para apertar o botão cinza de parar, que fica em outra posição. Se você desativar a soneca nas configurações do alarme, pode usar o mesmo grande botão laranja de parar no centro, como no timer. Mas ouvi dizer que no iOS 26 esse design vai desaparecer porque os dois botões têm aparência diferente entre si. É uma pena pensar que agora o mais importante no alarme é parecer bonito
    • Irmão, eu realmente quero te agradecer. Sofri por anos por causa dessa falta de atenção a detalhes tão pequenos