Articles

Divers

Confidence : l'effet de "flou" d'iOS 7 qui rend fou les développeurs

Par Didier Pulicani - Publié le

iOS 7 a radicalement changé l'interface de nos applications : plus plates, plus colorées, Apple a revu ses guidelines destinées aux développeurs pour garder une bonne homogénéité entre l'OS et les programmes tiers.

Parmi les nouveautés, Cupertino a présenté un effet de flou (blurry, en anglais) qui permet d'avoir un aperçu de l'arrière plan à travers une vue supérieure (souvent modale, d'ailleurs). C'est notamment le cas pour le Centre de Contrôle :

Confidence : l'effet de "flou" d'iOS 7 qui rend fou les développeurs


Mais n'avez-vous jamais remarqué que rares sont les applications à utiliser ce procédé ? Depuis la WWDC 2013, Comment reproduire l'effet de flou d'iOS 7 ? fait même partie des questions les plus populaires sur les sites spécialisés. Et pour cause : Apple interdit aux développeurs d'utiliser sa bibliothèque privée.

Pourquoi est-ce si compliqué ?



Confidence : l'effet de "flou" d'iOS 7 qui rend fou les développeurs
Pour comprendre la problématique, il faut savoir que cet effet de flou est loin d'être anodin. Il demande une grosse puissance de calcul et la principale difficulté est d'arriver à générer l'image en temps-réel. Malgré la puissance de l'A7 et de nouveaux outils dans iOS 7, l'opération est pratiquement impossible avec des algorithmes standards sollicitant GPU et CPU.

Lors de WWDC 2013, les ingénieurs d'Apple ont donc été sollicités sur la question par plusieurs développeurs, qui nous ont livré quelques pistes. Il semblerait que la principale raison soit liée à la sécurité. En effet, pour arriver à ses fins (surtout sur les vieux iPhone), Apple utiliserait directement l'image à la sortie du GPU pour réaliser son traitement. Ces données sont donc (pour le moment) trop sensibles pour être utilisés directement par les développeurs. D'autres évoquent aussi un problème de fiabilité : le calcul semblant être réalisé directement dans la boucle de rendu par CoreAnimation, il est possible que suivant la hiérarchie des vues, le résultat ne soit pas encore 100% garanti.

Dans tous les cas, il s'agit aujourd'hui d'une API privée, interdite d'usage et réservée aux seules applications d'Apple.

Quelles solutions ?



A presque 10 mois de la présentation d'iOS 7, les développeurs ont donc trouvé quelques parades.

Apple propose notamment sur son site et dans les vidéos de la WWDC, plusieurs moyens pour brouiller une image. Mieux, elle permet désormais de réaliser des captures d'écran très rapidement (une phrase importante pour appliquer l'effet en question).

D'autres programmeurs un peu plus exigeants utilisent des bibliothèques tierces (il en existe plusieurs, la plupart gratuites), qui permettent souvent un paramétrage plus fin et un traitement parfois plus rapide que les solutions d'Apple. Mais rapide, ne signifie pas instantané pour autant.

Confidence : l'effet de "flou" d'iOS 7 qui rend fou les développeurs


Il existe aussi un moyen un peu sale, mais bien connu des développeurs : utiliser une barre d'outil, capable de gérer nativement l'effet demandé. Problème : il semble qu'Apple rejette bon nombre d'applications l'utilisant. Mais c'est un peu normal : une barre d'outil n'a pas vocation à se retrouver à tous les étages d'une application, notamment en plein écran.

Comble de l'ironie, tous ces contournements restent un brin complexes à mettre en place et sont (sauf pour l'UIToolBar) encore bien loin de la vitesse obtenue par Apple, surtout de manière dynamique (là, c'est mission impossible). C'est d'autant plus difficile à comprendre que la firme encourage largement l'usage de l'effet de flou dans iOS 7, mais ne donne pas les armes à ses développeurs pour le mettre en place efficacement. Résultat, les programmes sont à la peine et ne proposent pas le même niveau de fluidité que ceux des ingénieurs de Cupertino.

On espère que la firme trouvera une solution élégante dans iOS 8, qui soit accessible à l'ensemble des développeurs, et donc, des utilisateurs.