Sommaire

Dessin d’une vue personnalisée

1. Présentation

Il est possible de créer une sous-classe de UIView pouvant ensuite être manipulée par un View Controller pour afficher différentes informations en fonction des paramètres qui lui sont envoyés et des méthodes qui sont appelées.

Pour cela, il est possible de composer différentes vues existantes (libellés, boutons) comme vu pour les cellules (cf. chapitre Liste d’éléments - Personnalisation). Il est aussi possible d’écrire à la main la façon dont doit être dessinée la vue.

2. Méthode draw

Il faut pour cela redéfinir la méthode draw(_:) de la classe UIView.

override func draw(_ rect: CGRect) { 
    guard let contexte = UIGraphicsGetCurrentContext() else { 
        return 
    } 
    ... 
}

Cette méthode prend en paramètre un rectangle (origine et taille) donné dans les coordonnées de la vue, un contexte graphique est créé en amont par UIKit et le corps de la méthode contient du code dessinant dans ce contexte ce que la vue doit afficher. Le rectangle rect passé en paramètre définit la zone précise que l’on peut se limiter à dessiner, pour optimiser l’opération de dessin si nécessaire.

Dans le chapitre Caméra et photos - Traitement des images, il fallait appeler UIGraphicsEndImageContext() ...