Article
Développement mobile
18.9.2014
Perturbation continuum temporel
2 minutes
Temps d'un café
Utiliser le flou et l'éclat avec iOS 8
Utiliser le flou et l'éclat avec iOS 8
Hugo Hache
Note : Ce contenu a été créé avant que Fabernovel ne fasse partie du groupe EY, le 5 juillet 2022.

Apple avait avec iOS 7 introduit la notion de flou dans certains de ses éléments natifs (UINavigation, UITabBar, UIAlertView). Cependant les développeurs ne pouvaient dans leurs interfaces qu’uniquement imiter cet effet. Avec iOS 8 le flou natif est maintenant accessible, et nous allons nous pencher sur UIVisualEffectView pour apprendre à l’exploiter.

Le flou

Flouter l’arrière plan d’une vue est maintenant trivial avec UIVisualEffectView. Il suffit d’utiliser la méthode initWithEffect: et de bien faire attention à ajouter les sous-vues à la contentView.

UIBlurEffect * effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; UIVisualEffectView * viewWithBlurredBackground = [[UIVisualEffectView alloc] initWithEffect:effect];

L’éclat

En complément du flou, Apple a aussi introduit la notion d’éclat, utilisée pour mettre en valeur un élément contenu dans une vue floutée. L’éclat fait exception au modèle classique de couches rendues les unes par dessus les autres. Une UIVisualEffectView avec un UIVibrancyEffect, peu importe sa position dans la hiérarchie à condition qu’elle soit contenue dans la contentView de sa UIVisualEffectView parente, ajustera le flou en arrière plan pour mettre en valeur les sous-vues de sa contentView.

Si vous n’êtes pas sur de visualiser l’effet évoqué, vous pouvez simplement ouvrir le centre de notifications et sélectionner une de ses cellules.

Pour ajouter de l’éclat à partir de l’exemple précédent il vous suffit de procéder de la sorte :

UIVisualEffectView * viewInducingVibrancy = [[UIVisualEffectView alloc] initWithEffect:effect]; // must be the same effect as the blur view [viewWithBlurredBackground.contentView addSubview:viewInducingVibrancy]; UILabel * vibrantLabel = [UILabel new]; // Set the text and the position of your label [viewInducingVibrancy.contentView addSubview:vibrantLabel];

Ajustement de l’éclat pour créer d’élégants widgets Aujourd’hui

Comme vu précédemment, le centre de notifications est la partie d’iOS exploitant le plus l’éclat. Y réussir une intégration parfaite de l’état sélectionné des cellules de son widget demande 2 astuces :

UIVibrancyEffect * effect = [UIVibrancyEffect notificationCenterVibrancyEffect]; UIVisualEffectView * selectedBackgroundView = [[UIVisualEffectView alloc] initWithEffect:effect]; selectedBackgroundView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; selectedBackgroundView.frame = self.contentView.bounds; UIView * view = [[UIView alloc] initWithFrame:selectedBackgroundView.bounds]; view.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.5f]; view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; [selectedBackgroundView.contentView addSubview:view]; self.selectedBackgroundView = selectedBackgroundView;

No items found.
Pour aller plus loin :