Corner radius est un paramètre d'arrondi des coins des éléments d'interface utilisateur, mesuré en pixels logiques (pt sur iOS, dp sur Android) qui définit le rayon du cercle inscrit dans le coin d'un rectangle. Le bon choix du corner radius affecte la perception de l'interface : les grands arrondis créent un ton doux et amical, les petits — strict et formel. Selon les Material Design Guidelines (Google, 2026), le radius recommandé pour les cartes est de 8–16 dp, pour les boutons — 4–8 dp. En savoir plus sur la gestion de l'apparence des éléments dans l'article sur les ombres en UI.
Points clés
Corner radius est une valeur numérique qui détermine le degré d'arrondi des coins d'un élément rectangulaire. Plus la valeur est élevée, plus le coin devient arrondi. À la valeur 0, le coin reste droit (90°) ; à une valeur égale à la moitié du côté le plus court, l'élément se transforme en cercle (pour un carré) ou en rectangle arrondi avec des côtés droits (capsule).
Dans le design mobile, corner radius est utilisé pour : les cartes et tuiles, les boutons, les champs de saisie, les fenêtres modales, les images et avatars, les indicateurs de progression, les chips et badges. Chaque type d'élément a une plage recommandée d'arrondi basée sur les directives Material Design et Human Interface Guidelines.
Selon Material Design 3 (Google, 2026), l'arrondi des coins est classé en trois niveaux : petit (4 dp) pour les boutons et champs de saisie, moyen (8–12 dp) pour les cartes et feuilles, grand (16–28 dp) pour les dialogues et bottom sheets. Apple HIG (2025) recommande un corner radius uniforme de 10–12 pt pour les éléments système (UIButton, UITextField) et 20+ pt pour les présentations modales.
Sur iOS, l'arrondi des coins est implémenté via la propriété cornerRadius de CALayer. Dans UIKit, chaque UIView a une couche dont le cornerRadius peut être défini. Pour les arrondis plus complexes (différents rayons pour différents coins), on utilise maskedCorners et CACornerMask en combinaison avec UIBezierPath.
// UIKit : arrondi via CALayer
import UIKit
let cardView = UIView()
cardView.backgroundColor = .systemBackground
cardView.layer.cornerRadius = 12
cardView.layer.maskedCorners = [
.layerMinXMinYCorner,
.layerMaxXMinYCorner
]
Dans SwiftUI, l'arrondi est défini via le modificateur cornerRadius() ou via ClipShape avec RoundedRectangle. SwiftUI prend également en charge l'arrondi individuel des coins via UIRectCorner en combinaison avec clipped() et overlay().
// SwiftUI : arrondi via RoundedRectangle
import SwiftUI
VStack {
Text("Corner Radius 16")
.padding()
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color.blue)
)
}
// Arrondi individuel des coins
RoundedRectangle(
cornerSize: CGSize(width: 16, height: 16),
style: .continuous
)
Continuous corner radius est un style d'arrondi utilisé par Apple dans iOS depuis iOS 7. Contrairement au rayon classique (circulaire), le rayon continu crée un arrondi plus lisse en utilisant une courbe de Bézier du troisième ordre au lieu d'un arc de cercle. SwiftUI prend en charge ce style via le paramètre style: .continuous dans RoundedRectangle. Apple recommande continuous corner radius pour tous les éléments système car il est visuellement plus naturel.
Sur Android, l'arrondi des coins est traditionnellement implémenté via des ressources XML shape dans le dossier res/drawable. Shape définit la forme du fond avec les paramètres cornerRadius et solid. Pour différents coins, on utilise <corners android:bottomLeftRadius="..." />. Dans Material Design 3, MaterialShapeDrawable a été ajouté avec la prise en charge des thèmes et des formes dynamiques.
<!-- res/drawable/bg_card.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>
Dans Jetpack Compose, l'arrondi est défini via le paramètre shape de Modifier. Compose fournit RoundedCornerShape avec la prise en charge de différents rayons pour chaque coin et style (CircularShape ou CutCornerShape). Compose prend également en charge continuous corner radius via RoundedCornerShape en combinaison avec un trait graphique.
// Jetpack Compose : arrondi via RoundedCornerShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
Card(
shape = RoundedCornerShape(
topStart = 16.dp,
topEnd = 16.dp,
bottomStart = 4.dp,
bottomEnd = 4.dp
),
elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
) {
Text(text = "Card avec arrondi personnalisé")
}
MaterialShapeDrawable dans le système View d'Android permet de modifier dynamiquement le corner radius sans recréer le drawable. Utilisez ShapeAppearanceModel pour une configuration précise : définissez cornerFamily (rounded ou cut) et cornerSize pour chaque coin individuellement.
Choisir le corner radius dépend du type d'élément, du contexte d'utilisation et de la plateforme. Il n'existe pas de règle universelle, mais Material Design et Apple HIG fournissent des recommandations claires pour les composants standard. Le principe principal : l'arrondi doit être visible mais ne pas interférer avec le contenu.
| Type d'élément | Radius recommandé | Plateforme | Notes |
|---|---|---|---|
| Boutons | 4–8 dp / 8 pt | iOS, Android | Plus le bouton est grand, plus le radius est grand |
| Cartes | 8–16 dp / 10–12 pt | iOS, Android | Material Design : 12 dp par défaut |
| Champs de saisie | 4–8 dp / 8 pt | iOS, Android | Un arrondi excessif semble contre nature |
| Fenêtres modales | 16–28 dp / 20+ pt | iOS, Android | iOS 18 : 24 pt par défaut |
| Avatars | 50 % de la taille | iOS, Android | Pour les avatars circulaires radius = moitié du côté |
| Chips / Badges | 16–20 dp / 14 pt | Android | Forme de capsule avec grand arrondi |
Règle de contraste : les éléments avec un corner radius différent dans la même interface doivent différer d'au moins 4 dp pour que la différence visuelle soit perceptible. N'utilisez pas 3 niveaux d'arrondi sur un écran — cela crée un bruit visuel. Material Design 3 recommande de ne pas utiliser plus de deux niveaux d'arrondi par écran : un pour les conteneurs (cartes, dialogues) et un pour les éléments interactifs (boutons, champs).
Dans Flutter, l'arrondi des coins est implémenté via la classe BorderRadius, qui accepte les valeurs Radius.circular() ou Radius.elliptical(). Flutter prend en charge l'arrondi individuel via BorderRadius.only() et BorderRadius.horizontal()/vertical(). Le widget ClipRRect découpe l'élément enfant selon le BorderRadius donné.
// Flutter : arrondi via ClipRRect et Container
import 'package:flutter/material.dart';
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.0),
topRight: Radius.circular(16.0),
bottomLeft: Radius.circular(4.0),
bottomRight: Radius.circular(4.0),
),
),
child: Text('Arrondi personnalisé des coins'),
)
// ClipRRect avec Image
ClipRRect(
borderRadius: BorderRadius.circular(12.0),
child: Image.network(
'https://example.com/image.jpg',
fit: BoxFit.cover,
),
)
ClipRRect dans Flutter est utilisé lorsque vous devez découper une image ou un widget complexe le long d'une bordure arrondie. Pour les conteneurs d'arrière-plan simples, BoxDecoration avec borderRadius suffit — cela est plus performant car cela ne crée pas de couche de découpage séparée. Material Flutter 3.22+ prend en charge continuous corner radius via ContinuousRectangleBorder.
Questions fréquentes
dp (density-independent pixels) sur Android et pt (points) sur iOS sont des unités logiques qui correspondent à la taille physique à l'écran indépendamment de la densité de pixels. 1 dp ≈ 1 pt ≈ 1/160 pouce. Les valeurs numériques du corner radius en dp et pt peuvent être utilisées de manière interchangeable lors du transfert de conception entre plateformes.
Sur iOS, utilisez maskedCorners avec CACornerMask : layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]. Dans Android XML — . Dans Jetpack Compose — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp). Dans Flutter — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)).
Continuous corner radius est un style d'arrondi où le coin est formé non pas par un arc de cercle mais par une courbe de Bézier du troisième ordre. Apple utilise ce style depuis iOS 7 pour tous les éléments système. Visuellement, l'arrondi continu semble plus lisse et plus naturel par rapport au style circulaire classique.
10–12 pt sur iOS (comme le clavier système) et 8–12 dp sur Android sont recommandés. Les touches à l'intérieur du clavier peuvent avoir un radius plus petit (4–6 dp) ou aucun arrondi. Pour augmenter la zone tactile, utilisez un padding de 4–8 dp entre la bordure arrondie et le bord du bouton.
UITableViewCell n'hérite pas automatiquement de cornerRadius de contentView car le fond de la cellule est dessiné dans backgroundView. Pour arrondir une cellule, définissez cornerRadius à la fois sur contentView.layer et backgroundView.layer simultanément. Dans SwiftUI, utilisez .listRowBackground() avec RoundedRectangle.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi