← Toutes les réalisations
Outils & applications

iMeasure

Règle de précision iOS auto-calibrée (SwiftUI)

Afficher une règle « vraie taille » (1:1) sur un écran de smartphone est piégeux : chaque modèle d'iPhone a une densité de pixels différente, si bien qu'une règle dessinée en dur serait fausse d'un appareil à l'autre. Tech Fox a conçu iMeasure, une application iOS native (Swift / SwiftUI, zéro dépendance) qui identifie automatiquement le modèle d'iPhone, récupère sa densité d'écran dans une base embarquée de plus de 25 modèles et en déduit l'échelle exacte pour tracer une règle précise à ±0,5 mm ; sans aucune calibration manuelle.

Année2025
StatutiOS · prêt App Store
Point fort±0,5 mm
Swift 5.9SwiftUISwiftUI CanvasDarwin uname/utsnameUserDefaultsiOS 16+
±0,5 mmprécision à l'échelle 1:1
25+modèles d'iPhone couverts
0dépendance externe, 0 avertissement
2unités (cm / pouces), 3 thèmes

Contexte & problème résolu

Principe de calibration d'iMeasure
Chaîne de calibration : identifiant machine → base PPI → points par pouce → espacement des graduations (échelle 1:1).

Une règle à l'écran n'a de valeur que si 1 cm affiché mesure vraiment 1 cm. Le problème central : la correspondance entre pixels et millimètres dépend de la densité de l'écran (PPI), qui varie d'un iPhone à l'autre (par exemple 326, 458 ou 460 PPI selon les modèles). La plupart des applications « règle » demandent une calibration manuelle en posant un objet de référence sur l'écran ; fastidieux et source d'erreur.

Tech Fox a supprimé cette friction : iMeasure se calibre tout seul. L'application détermine le modèle exact de l'appareil, va chercher son PPI officiel dans une base embarquée, et calcule l'échelle de tracé. L'utilisateur ouvre l'app et mesure immédiatement, sans réglage ; pour une précision cible de ±0,5 mm.

Réalisation détaillée

Architecture d'iMeasure
Architecture SwiftUI : App → Splash → ContentView → RulerView / SettingsView, avec DeviceDetector et base PPI.

La chaîne de calibration est le cœur du système : identifiant machine de l'appareil (lu via l'appel système Darwin uname, avec prise en charge du simulateur), puis base de données PPI embarquée qui associe chaque modèle à sa densité officielle (plus de 25 iPhone, de l'iPhone X au 16 Pro Max, avec une valeur de repli pour les modèles futurs). SwiftUI raisonnant en points et non en pixels, l'app calcule le nombre de points par pouce en divisant le PPI par le facteur d'échelle d'affichage, puis en déduit l'espacement des graduations.

  • Rendu vectoriel dans un Canvas SwiftUI avec hiérarchie de traits : en centimètres (trait long au cm, moyen aux 5 mm, court au mm) ; en pouces (subdivision jusqu'au 1/16, traits dégressifs).
  • Trois thèmes (Clair, Sombre, « ruban jaune » haute visibilité) et bascule instantanée cm ↔ pouces, avec recalcul immédiat des graduations.
  • Réglages persistants via un modèle observable adossé à UserDefaults ; panneau affichant le modèle détecté et son PPI pour vérifier la calibration.
  • Écran de démarrage animé, libellés d'accessibilité, code propre (zéro dépendance externe, zéro avertissement de compilation), configuration de signature prête pour TestFlight / App Store.

Fondements & compétences

Hiérarchie des graduations
Hiérarchie des traits pour les deux unités (cm : mm / 5 mm / cm ; pouce : 1/16 → pouce).

La calibration repose sur des relations d'unités physiques standard : points par pouce = PPI / échelle d'affichage ; 1 pouce = 2,54 cm ; subdivision d'1/16 de pouce ; hiérarchie des graduations selon la divisibilité de l'indice. La précision annoncée découle directement de l'exactitude des PPI constructeurs référencés et de la résolution du rendu ; d'où l'importance d'une base juste et tenue à jour.

Le projet démontre le développement iOS natif de bout en bout, le rendu graphique vectoriel (Canvas), la programmation système bas niveau (appels Darwin, prise en compte du simulateur), la rigueur métrologique (conversion d'unités, échelle 1:1, précision chiffrée) et une architecture propre prête à distribuer.

UN PROJET DU MÊME TYPE ?

Construisons-le.

Présentez le problème, même s'il est encore flou. On transforme le besoin en système clair.

Démarrer un projet