Guide Technique sur les Bundles iOS : Création et Intégration

Définition et Propriétés des Bundles

Un bundle iOS est un paquet de ressources statiques utilisé pour regrouper des fichiers tels que des images, des fichiers XIB et des documents texte. Il ne participe pas à la compilation du projet et ne peut contenir de code exécutable ; il sert uniquement de conteneur pour des données binaires interprétées lors de l'exécution.

Processus de Création d'un Bundle

  1. Initailiser un nouveau projet bundle via Xcode en sélectionnant Fichier > Nouveau > Projet.
  2. Inclure les fichiers ressources souhaités, comme des images ou des fichiers XIB, dans le projet.
  3. Configruer les options de compilation : désactiver l'installation, supprimer les chemins d'installlation, cibler le système iOS, et appliquer des paramètres spécifiques pour éviter que les images ne soient au format TIFF.
  4. Compiler le bundle pour les appareils génériques iOS et un simulateur, puis vérifier que le fichier .bundle apparaît en noir dans le dossier Produits de l'explorateur de projets.

Intégration du Bundle dans un Projet Cible

Ajouter directement le fichier .bundle compilé, par exemple MonBundle.bundle, au projet iOS où il sera utilisé.

Accès aux Ressources du Bundle

Chargement d'un Nib pour un ViewController

Pour instancier un contrôleur de vue depuis le bundle :

NSString *cheminBundle = [[NSBundle mainBundle] pathForResource:@"MonBundle" ofType:@"bundle"];
NSBundle *bundleRessource = [NSBundle bundleWithPath:cheminBundle];
UIViewController *ctrlVue = [[UIViewController alloc] initWithNibName:@"nom_nib" bundle:bundleRessource];

Chargement d'Images

Première méthode avec imageNamed :

UIImageView *vueImage = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
UIImage *imageBundle = [UIImage imageNamed:@"MonBundle.bundle/ressource_image"];
[vueImage setImage:imageBundle];

Seconde méthode avec imageWithContentsOfFile :

UIImageView *vueImage = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
NSString *cheminImage = [cheminBundle stringByAppendingPathComponent:@"ressource_image.png"];
UIImage *imageFichier = [UIImage imageWithContentsOfFile:cheminImage];
[vueImage setImage:imageFichier];

Utilisation de Macros Précompilées

Pour simplifier les références au bundle dans le code :

#define NOM_BUNDLE @"MonBundle.bundle"
#define CHEMIN_BUNDLE [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: NOM_BUNDLE]
#define BUNDLE_RESSOURCES [NSBundle bundleWithPath: CHEMIN_BUNDLE]

Étiquettes: iOS Bundle Objective-C Xcode Ressources Statiques

Publié le 30 mai à 14h51