↰ voltar ao início

tmergulhao/interface


Ambience

Quase todas as pessoas atualmente lêem em telas de cristal líquido com cores e alta definição. Infelizmente elas não se adaptam muito bem a condições adversas de luminosidade.

Apesar de telas de e-Ink terem sido desenvolvidas elas não estão presentes nos aparelhos mais versáteis e multitarefa. Em vista disso estou desenvolvendo uma biblioteca para iOS chamada Ambience que é baseada na transição do aplicativo iBooks nos modos dia e noite.

iBooks dia, sepia e noite

Modos de tela e legibilidade do iBooks para iOS 8

Vários aplicativos na App Store já fazem isso mas levam em consideração o horário local, a posição solar e até preferências do usuário. A minha proposta inicial foi usar o sensor de luminosidade presente nos aparelhos para determinar limites de legibilidade em determinadas condições de luz. Infelizmente a querida Apple não permite o uso dessa API em frameworks para distribuições na App Store então resolvi usar uma proposta sintomática.

Quase todos os iPhones que vejo na rua tem uma preferência que é quase inalterada: o brilho de tela. É muito comum as pessoas usarem o brilho automático pois ele é inteligente, versátil e economiza muita bateria. Apesar da luminosidade não poder ser aferida, o brilho de tela possui uma API aberta tanto para leitura quanto para edição. Usando limites de brilho de tela é possível inferir o quanto de luz está sobre a tela do aparelho.

Discriminei então três classes de situações onde o brilho pode se comportar melhor:

  1. No escritório, num shopping, em casa, na academia;
  2. Andando na rua de dia;
  3. Ao acordar, no meio da noite, no cinema.

Para cada uma dessas situações desenhei um modelo de interface propício para boa leitura.

iBooks dia, sepia e noite

Modos de tela e legibilidade propostos no Ambience

A idéia não é só uma troca no jogo de cores. A saturação, o brilho, a grossura dos vetores; todos tem de se alinhar com o estilo para gerar uma experiência de leitura melhor.

Para fazer isso funcionar ainda estou estudando a melhor implementação seja ela uma extensão ao UIView, uma classe semelhante aos TraitCollections ou um esquema de notificação de subclasses de elementos.