409
Propriété de Albiri Sigue <[email protected]> customer 27921 at Fri Mar 11 19:30:39 +0100 2011 PROGRAMMEZ iPhone, iPod touch, iPad avec iOS 4 pour iPuP

27246 Programmez Pour iPhone iPod Touch iPad 9782744041686

Embed Size (px)

Citation preview

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    PROGRAMMEZiPhone,iPod touch, iPadavec iOS 4

    pour

    iPuP

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    PROGRAMMEZ POURIPHONE, IPOD TOUCH, IPAD

    AVEC IOS 4

    IPUP

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    Pearson Education France a apport le plus grand soin la ralisation de ce livre afin de vous fournir une information complte et fiable. Cependant, Pearson Education France nassume de responsabilits, ni pour son utilisation, ni pour les contrefaons de brevets ou atteintes aux droits de tierces personnes qui pourraient rsulter de cette utilisation.

    Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour illustrer les descrip tions thoriques. Ils ne sont en aucun cas destins une utilisation commerciale ou professionnelle.

    Pearson Education France ne pourra en aucun cas tre tenu pour responsable des prjudices ou dommages de quelque nature que ce soit pouvant rsulter de lutilisation de ces exemples ou programmes.

    Tous les noms de produits ou marques cits dans ce livre sont des marques dposes par leurs pro pritaires respectifs.

    Publi par Pearson Education France47 bis, rue des Vinaigriers75010 PARISTl. : 01 72 74 90 00www.pearson.fr

    Collaboration ditoriale : Herv Guyader

    Ralisation PAo : La B.

    ISBN : 978-2-7440-4168-6

    Copyright 2010 Pearson Education FranceTous droits rservs

    Aucune reprsentation ou reproduction, mme partielle, autre que celles prvues larticle L. 122-5 2 et 3 a) du code de la proprit intellectuelle ne peut tre faite sans lautorisation expresse de Pearson Education France ou, le cas chant, sans le respect des modalits prvues larticle L. 122-10 dudit code.

    00_TDM_iPhone.indd 2 18/08/10 11:43

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    III

    Table des matires

    Programmez pour iPhone, iPod touch, iPad avec iOS 4

    Chapitre 1 Configurer son environnement . . . . . . . . . . . . . . . . 11 Pourquoi dvelopper pour cette plate-forme ? . . . . . . . . . . . . . . . . . . 32 Par o commencer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 O trouver les ressources adquates ? . . . . . . . . . . . . . . . . . . . . . . 13

    Chapitre 2 Le Hello iPuP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Introduction Xcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Coder quelques lments simples . . . . . . . . . . . . . . . . . . . . . . . . . 256 Premiers pas dans Interface Builder . . . . . . . . . . . . . . . . . . . . . . . . 277 Compiler sur simulateur ou sur iPhone ? . . . . . . . . . . . . . . . . . . . . . 30

    Chapitre 3 Apprhender quelques lments dinterface . . . . . . 318 Un catalogue des lments dinterface . . . . . . . . . . . . . . . . . . . . . . . 339 Ajouter un fond dcran Hello iPuP . . . . . . . . . . . . . . . . . . . . . . . 4410 Ragir aux vnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4811 Crer un delegate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6012 Prsenter des listes de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . 7013 Utiliser une scroll view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    Chapitre 4 Utiliser les fonctionnalits de liPhone . . . . . . . . . . . 8714 Services autour du GPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8915 Jouer de la musique en secouant . . . . . . . . . . . . . . . . . . . . . . . . . . 10516 Multitche et notifications locales. . . . . . . . . . . . . . . . . . . . . . . . . . 11517 Communiquer par Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12318 Jouer une vido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14019 Les notifications Push . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14720 Utiliser des photos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15621 LIn App Purchase (achat intgr). . . . . . . . . . . . . . . . . . . . . . . . . . 164

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    IVTable des matires

    Chapitre 5 Aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18722 Comprendre la gestion des vues . . . . . . . . . . . . . . . . . . . . . . . . . . 18923 Navigation entre vues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20124 Utiliser un tab bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21225 Utilisation dun timer pour dplacer une vue . . . . . . . . . . . . . . . . . . . 21926 Core Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22427 Passer des variables un serveur (GET/POST) . . . . . . . . . . . . . . . . . . 24128 Utiliser le carnet dadresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25229 Accder votre calendrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26830 Intgrer de la publicit : iAd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    Chapitre 6 Gestion des ressources . . . . . . . . . . . . . . . . . . . . . 28531 Traduire votre application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28732 La mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29633 Utilisation de SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31034 Parser des fichiers XML et JSON. . . . . . . . . . . . . . . . . . . . . . . . . . 32335 Sauvegarder des donnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34036 Utiliser Core Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    37 Et du ct de liPad ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

    Lexique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    V

    Vous tes dsireux de programmer sur iPhone ? Louvrage que vous tenez entre les mains vous suivra tout au long de votre apprentissage.

    Que vous soyez simple dbutant ou dj sensibilis au dveloppement dapplications pour iPhone, iPod Touch ou iPad, vous dcouvrirez, au travers des fiches thmatiques, des exemples concrets de ralisation dapplications sous forme de tutoriels. Cet ouvrage vous guidera pas pas pour appr-hender les diffrentes fonctionnalits ncessaires llaboration dapplications performantes, varies et ergonomiques pour les utilisateurs du monde entier.

    Les premires fiches aideront les dbutants trouver les ressources ncessaires avant de se lancer dans laventure. Notez que nous ne couvrirons pas ici une formation spcifique en Objective-C, le langage de programmation objet utilis dans le dveloppement dapplications iPhone, iPod Touch et iPad. Nous avons effectivement choisi de vous guider au travers dexemples concrets, pendant lesquels vous apprhenderez peu peu le langage, que vous pourrez approfondir travers les ressources rendues disponibles par Apple, notamment. Il est donc primordial de raliser les fiches dans lordre.

    Ensuite, dans la seconde partie, vous raliserez votre premire application, un Hello iPuP, le point de dpart de bien des langages. Puis, vous dcouvrirez dans une troisime partie les lments dinterfaces mis votre disposition pour permettre votre application dexploiter toutes les possi-bilits graphiques de la plate-forme.

    Dans un quatrime temps, nous apprendrons ensemble utiliser les fonctionnalits natives des appareils, comme la lecture de la bibliothque musicale ou lutilisation du GPS. Arriv ce stade, votre soif non tanche dapprofondir vos connaissances vous amnera la cinquime partie, qui traitera daspects ncessaires mais plus complexes du dveloppement. Vous y apprendrez, entre autres, grer les vues, crer des animations, communiquer avec un site web travers les webser-vices. Enfin, la dernire partie traitera des aspects non visibles de votre application, comme la gestion des ressources ou la sauvegarde de donnes. La dernire fiche vous donnera les diffrences entre liPad et liPhone, le systme dexploitation tant quasiment le mme !

    Le SDK iOS est bien trop riche pour tre totalement couvert dans un mme tenant. Le matre mot est donc curiosit !

    En supplment cet ouvrage, vous trouverez un espace ddi lchange autour de chaque fiche sur notre forum communautaire : http://www.ipup.fr/forum. Cet espace contiendra tous les codes sources crs partir de chaque projet, et les mises jour ou corrections ventuelles. De plus, vous pourrez partager avec plus dun millier de membres, tous dveloppeurs iPhone, et poser toutes vos questions !

    Note de lecture : vous trouverez beaucoup danglicismes comme label, table view, thread, push, dele-gate. Cest un parti pris, en ce sens o les ressources en franais sur le Web sont encore trop peu nombreuses pour vous permettre de trouver des rponses en crivant dans votre moteur de recherche prfr : ajouter contrleur de navigation iPhone (qui vous donnera des rsultats concer-nant le contrle parental...). Le ton style forum employ tout au long de cet ouvrage est volontaire, par souci de convivialit dans un domaine o le partage et lentraide sont ncessaires.

    Programmez pour iPhone, iPod touch, iPad avec iOS 4

    Introduction

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    VI

    Certains passages pourront tre droutants si vous tes novice en programmation Mac ou iPhone, et donc non familier avec lObjective-C. Cest pourquoi vous trouverez un lexique expliquant certains termes utiliss dans leur contexte, ainsi quun index qui vous permettra dapprofondir certaines notions.

    Notez par ailleurs que lcriture du code suit ces conventions :

    s Un code en gras de ce type : Code, signale des lignes modifier.

    s Un code gristre : Code, indique les fichiers modifier.

    s Un code plus clair : Code, dsigne des mthodes.

    IPUPLquipe iPuP, ce sont quatre amis et jeunes entrepreneurs, frachement diplms dcole ding-nieur, Loann Fraillon, Aurlien Hibert, Jrmy Lagrue et Marian Paul. Ces quatre associs ont mis leur passion pour lunivers iPhone au service des autres : en commenant par la cration dun forum dentraide entirement ddi la programmation sur iPhone, pour dboucher ensuite sur la fondation dune entreprise.

    Les auteurs, Marian Paul et Jrmy Lagrue, que vous retrouverez sur le forum sous les pseudos respectifs ipodishima (Twitter : @ipodishima) et Bidou (Twitter : @mrbidoux), ont rdig cet ouvrage.

    Marian et Jrmy, 23 ans, sont tous deux ingnieurs diplms de lcole nationale suprieure des Mines de Saint-tienne, cycle Ingnieur spcialis en microlectronique, informatique et nouvelles technologies (ISMIN). Leur cursus les a amens dcouvrir la programmation informatique, et plus particulirement lunivers iPhone, travers un projet ralis dbut 2009 dans le cadre de leurs tudes, en partenariat avec une PME spcialise en traitement du signal et interaction vocale (Voxler).

    REMERCIEMENTS

    MARIAN PAULMes tout premiers remerciements vont Anas, qui a su supporter et endurer ces longues soires me voir travailler derrire mon cran. Je tiens galement remercier Jrmy pour ses lectures attentives, ses remarques et conseils sans lesquels cet ouvrage ne serait pas le mme. Merci Aurlien et Loann pour avoir support ce projet et aid la relecture.

    Mes derniers remerciements vont Patricia Moncorg des ditions Pearson pour son implication et son exprience apportes tout au long de ce projet, ainsi qu Amandine.

    JRMY LAGRUEJe tiens remercier Marian pour son implication dans la ralisation de ce livre, ainsi que tous les membres du forum ipup.fr qui, chaque jour, nous apportent notre petite dose de bonne humeur. Merci galement lquipe des ditions Pearson pour nous avoir suivis patiemment durant le processus de rdaction et correction.

    Programmez pour iPhone, iPod touch, iPad avec iOS 4

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    CHAPITRE 1

    CONFIGURER SON ENVIRONNEMENT

    01_BlocN_iPhone.indd 101_BlocN_iPhone.indd 1 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    Avant de commencer dvelopper pour iPhone, iPod Touch ou iPad, il faut comprendre les enjeux du march des applications mobiles et les rgles respecter. Ensuite, et une fois ces notions assimiles, vous aurez besoin dinstaller les outils ncessaires pour raliser votre projet. Le langage utilis est lObjective-C ; nanmoins nous ne reviendrons pas dessus dans cet ouvrage, mais vous trouverez la Fiche 2 le rappel des documents pouvant vous aider lapprendre.

    01_BlocN_iPhone.indd 201_BlocN_iPhone.indd 2 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    3

    1

    Pourquoi dvelopper pour cette plate-forme ?1

    Pourquoi dvelopper pour cette plate-forme ?

    1 Pourquoi dvelopper pour cette plate-forme ?

    a y est, vous venez de franchir une nouvelle tape dans votre qute du dveloppement dapplications pour les appareils mobiles dApple. Besoin de vous motiver encore un peu ?

    QUELQUES CHIFFRESRien ne vaut quelques chiffres pour se reprsenter un march ! LiPhone a t annonc pour la premire fois le 9 janvier 2007, et commercialis aux tats-Unis partir du 29 juin de la mme anne. Nomm iPhone Edge, il suscita un vritable engouement malgr ses quelques limitations techni ques. Vendu aux tats-Unis 200 000 exemplaires en trois semaines, le succs fut au rendez-vous et conforta Apple quant son implication sur le march du tlphone mobile. Et depuis 2007, Apple sort chaque anne un nouvel iPhone. Le 24 juin 2010, la quatrime version de liPhone a t prsente.

    LApp Store est la plate-forme dApple qui distribue les applications. Il existe depuis le lancement de la deuxime gnration diPhone en 2008. Les chiffres le concernant sont eux aussi loquents :

    5 000 000 000 : le nombre de tlchargements dapplications depuis la cration de lApp Store.

    1 000 000 000 dollars : la somme reverse aux dveloppeurs depuis les premires ventes dappli-cations.

    100 000 000 : le nombre dappareils fonctionnant sous iOS vendus dans le monde depuis juin 2007.

    2 000 000 : le nombre diPad vendus sous 59 jours aprs sa commercialisation (soit un toutes les 3 secondes).

    225 000 : le nombre dapplications disponibles sur lApp Store.

    20 000 : le nombre moyen de tlchargements par jour dune application en premire position dans le top 100 gratuit en France.

    15 000 : le nombre dapplications soumises chaque semaine Apple.

    800 : le nombre moyen de tlchargements par jour pour entrer dans le top 10 payant en France.

    95 % : le pourcentage dapplications acceptes sous une semaine aprs lenvoi aux services dApple.

    80 : le nombre moyen de tlchargement dapplications par seconde.

    28 % : la part de march aux tats-Unis pour liPhone.

    10 : le ratio du nombre de tlchargements application gratuite/application payante.

    Ces chiffres proviennent majoritairement de la keynote (prsentation) dApple lors de la Worldwide Developer Confrence (WWDC) de juin 2010 et de retours dexpriences de dveloppeurs franco-phones.

    01_BlocN_iPhone.indd 301_BlocN_iPhone.indd 3 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    4 Pourquoi dvelopper pour cette plate-forme ?1

    UNE FACILIT DE DISTRIBUTIONLorsque vous aurez achet la licence (que nous verrons la Fiche 2), vous pourrez distribuer votre application sur lApp Store. part lacquisition de la licence et le pourcentage prlev par Apple, aucun frais supplmentaire dhbergement ou de distribution ne vous seront demands. Cependant, avant dapparatre sur lApp Store, votre application doit tre valide par Apple et se conformer aux rgles annonces par la socit. Ces guidelines sont disponibles dans la documentation, point que nous aborderons la Fiche 3.

    Une fois votre application disponible sur lApp Store, il ne vous restera plus qu suivre son volution et proposer des mises jour en fonction des commentaires des utilisateurs, le reste tant gr par Apple.

    TROIS CIBLES DUTILISATEUREn apprenant programmer pour iPhone, iPad et iPod Touch, vous serez mme de toucher des publics diffrents. En effet lutilisateur de liPhone est trs nomade et souhaite avoir sa porte des applications simples et trs pratiques. De plus, certains jeux lorsquils sont trs bien penss et raliss deviennent vite addictifs. Lutilisateur va alors facilement y jouer lors dun trajet en mtro par exemple. Ces jeux, tels Doodle Jump ou Angry Birds, peuvent rester plusieurs mois dans le top 100 des appli-cations vendues dans le monde.

    Par contre, liPad se veut plus familial et prsentera des applications plus volues, perfectionnes en terme de design. Lcran de liPad (9,7 pouces, 1 024 768 pixels contre 3,5 pouces pour liPhone) permet de prsenter une application en crant des designs labors et soigns. Les applications iPad portent gnralement le suffi xe HD (Haute Dfi nition), signe de la qualit de linterface.

    UN MARCH MOBILEIl faut toujours garder lesprit que liPhone est un tlphone mobile. Ces appareils prsentent des contraintes dont voici une liste non exhaustive :

    Performances. Un tlphone mobile na pas la puissance, la mmoire, la vitesse de calcul, laffi -chage graphique dun ordinateur. Il faudra donc repenser votre manire de grer les ressources si vous tes dveloppeur sur plate-forme fi xe. Cette adaptation est un peu droutante au dbut, mais les limites de lappareil simposeront si vous ny prtez pas attention.

    Connexion rseau. La plupart du temps, liPhone sera connect un rseau mobile qui impose des contraintes de qualit du signal, de dbit maximum et de quota de trafi c. Si votre application ncessite un accs Internet, il faudra donc vrifi er que le rseau est disponible et, le cas chant, avertir lutilisateur. Labsence de cet avertissement est une raison de refus de validation de la part dApple.

    Autonomie. Lautonomie de votre appareil est limite. Faites donc toujours attention lutilisa-tion des ressources pour ainsi minimiser la consommation de la batterie. Par exemple, si vous avez besoin de rcuprer la position GPS de lutilisateur, pensez dsactiver le GPS lorsque vous ne vous en servez plus ! Il en est de mme pour lacclromtre ou le gyroscope.

    01_BlocN_iPhone.indd 401_BlocN_iPhone.indd 4 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    5 Pourquoi dvelopper pour cette plate-forme ?1

    Qualit dune application. Vous ne pourrez pas proposer de version bta de votre application qui devra ncessairement tre un produit fi ni (en attente ventuellement de mises jour). Cette contrainte impose donc de travailler de manire correcte et fournir une application exempte de tout bogues. Une application qui crash ou qui utilise des librairies prives du systme sont aujourdhui les principaux motifs de refus de validation de la part dApple.

    FAIRE LA DIFFRENCETout cela est trs joli, mais pour vous dmarquer de toutes ces applications, il faudra ncessairement avoir le plus qui vous propulsera littralement vers le succs. Certaines applications trs compltes mais mal vendues ne seront jamais visibles et peu tlcharges. Dautres, car moins volues et utilises trs peu de temps, seront propulses dans le top 100 sans aucun effort, car leur objectif sera principalement de cibler un utilisateur dsireux de consommer beaucoup sans chercher la qualit. Cest un peu le phnomne du snack !

    Le nom de votre application ainsi que les mots-cls sont trs importants. Lutilisateur doit directe-ment se faire une ide des fonctionnalits avec ces quelques informations. Les descriptions sont en gnral trs peu lues, placez donc votre message accrocheur dans les premires lignes. .

    Libre vous de reprendre un concept existant, mais la rgle de base est de proposer encore mieux que ce qui existe.

    Laspect marketing de votre application est trs important et ne doit aucunement tre nglig si vous souhaitez percevoir une rmunration. Vous apprendrez petit petit, en exprimentant, car ce qui est droutant, cest que chaque cas est unique.

    Je vous conseille par ailleurs de vous procurer Le Guide du Marketing des Applications iPhone crit par les responsables du site francophone applicationiphone.com1. Ce petit guide vous donnera, entre autres, des conseils pour mettre en valeur votre application sur lApp Store, les dmarches pour contacter les sites les plus infl uents, pouvant vous procurer 1 000 tlchargements l annonce de votre application, et bien dautres choses !

    1. http://www.applicationiphone.com/marketing-application-iphone/.

    01_BlocN_iPhone.indd 501_BlocN_iPhone.indd 5 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    62 Par o commencer ?2 Par o commencer ?

    Il ne suffi t pas davoir de la bonne volont pour dvelopper sa premire application mobile, il faut aussi le matriel...

    LE MAC ET LAPPAREILPour dvelopper pour iPhone, iPad ou iPod Touch, un Mac est ncessaire... Cest clair, net et sans dtour ! Vous naurez pas besoin dun modle de course, par contre un grand cran est apprci pour affi cher le simulateur iPad correctement.

    Les anciennes versions Mac avec un processeur PowerPC ne sont pas supports. Il faudra donc un modle nouvelle gnration avec Mac OS10.6.2 ou ultrieur pour faire fonctionner Xcode 3.2.3 qui est la version actuelle lheure o ces quelques lignes sont rdiges.

    Les tests sur simulateur ne suffi ront pas, car le systme ne fait qumuler iOS sur votre machine. lutilisation, vous verrez que trs souvent, tout marche correctement sur le simulateur, mais ds lors que vous le compilez sur un appareil, quelques dsagrables surprises peuvent arriver. Je vous conseille donc trs fortement davoir ct de vous les appareils concerns par le dveloppement de votre application. De plus, le simulateur ne permet pas de simuler lacclromtre, le gyroscope...

    Astuce

    Le temps de lancement dune application en mode debug1 est souvent plus long sur appareil que sur simulateur. Nhsitez donc pas dvelopper sous simulateur et faire des vrifi cations rgulires sur votre appareil si vous ntes pas patient !

    LE LANGAGELe mtier de dveloppeur nest pas inn et, ce titre, tout dbutant en programmation devra travailler pour matriser le dveloppement iPhone, iPad ou iPod Touch. Cependant, rien nest insurmontable si vous tes patient et curieux.

    Le langage de programmation utilis est lObjective-C, un langage objet surcouche du langage C. Il faudra donc imprativement matriser ce langage. Vous pourrez tout dabord suivre les tutoriels du site du Zro http://www.siteduzero.com/ qui seront une bonne base pour dbuter. Ensuite, vous trouverez des ressources sur Developpez.com2. Adaptez votre apprentissage en fonction de votre niveau.

    Une fois ces bases acquises, vous pourrez commencer apprendre lObjective-C, qui est un langage objet.

    Info

    Si vous avez des connaissances de programmation oriente objet (POO) car venant du monde web par exemple, vous devrez imprativement matriser le langage C pour poursuivre laventure car certaines notions, comme les pointeurs, vous manqueront. .

    1. Les termes souligns de cette faon sont expliqus dans le lexique en fi n douvrage.2. http://c.developpez.com/cours/?page=lang-c

    01_BlocN_iPhone.indd 601_BlocN_iPhone.indd 6 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    7 Par o commencer ?2

    Vous trouverez dans la documentation offi cielle trois documents lire obligatoirement :

    Object-Oriented Programming with Objective-C vous expliquera ce quest la programmation oriente objet.

    Learning Objective-C: A Primer vous donnera les bases de lObjective-C en quelques lignes. The Objective-C Programming Language dcrit le langage de manire prcise. IND-ISP-ENSABLE !

    Info

    Si vous avez des connaissances en C++ et/ou Java, vous pourrez lire les documents suivants :

    De C++ Objective-C par Pierre Chatelier, vous permettra de faire la transition si vous venez du monde C++ (http://chachatelier.fr/programmation/objective-c.php).

    De Java Cocoa par Sylvain Gamel pour aller de Java lObjective-C ! (http://sylvain-gamel.developpez.com/tutoriel/mac/cocoa/java/)

    TLCHARGER XCODE Xcode est lIDE (Integrated Development Environment) ncessaire pour dvelopper votre application. Xcode permet entre autres, de dvelopper pour iPhone, iPad et iPod Touch. Il est disponible gratuite-ment sur le Web. Pour cela, crez un compte iTunes ou prenez celui que vous possdez dj (cela simplifi era les dmarches dacquisition de licence par la suite). Vous trouverez la dernire version de Xcode en tlchargement ladresse suivante : http://developer.apple.com/iphone/index.action.

    Figure 2.1 : Bienvenue jeune

    dveloppeur !

    Info

    Nhsitez pas vous rendre cette adresse, qui vous permettra de grer votre compte (voir Figure 2.2) http://developer.apple.com/membercenter/index.action.

    01_BlocN_iPhone.indd 701_BlocN_iPhone.indd 7 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    8 Par o commencer ?2

    Figure 2.2 : Lespace membre.

    Cette version gratuite, idale pour dbuter, vous permettra de dvelopper et de tester votre applica-tion sur simulateur. Si vous souhaitez la distribuer ou la tester sur un appareil, il vous faudra acqurir la licence, ce que nous verrons par la suite.

    Linstallation crera par dfaut un dossier Developer dans Macintosh HD. Xcode sera alors accessible par le chemin Developer > Applications.

    ACHETER LA LICENCE Un jour ou lautre, si vous poursuivez laventure, vous serez oblig dacheter la licence. Elle vous donnera un accs complet la documentation et aux forums de dveloppeurs Apple (en anglais) o les ingnieurs de la socit pourront vous rpondre. De plus, cest le seul moyen pour tester votre application sur votre appareil, et la distribuer sur lApp Store. Vous aurez galement accs aux versions bta (versions en test interne) lorsquil y en a.

    La licence gratuite est un bon dbut pour sinitier au dveloppement. Cependant, je ne peux que vous conseiller de lacqurir le plus rapidement possible, ds vous tes sr de continuer dvelopper sur ces plates-formes. Je le rpte, vous verrez au fi l de votre exprience que le simulateur est un pige, car il ne ragit pas exactement comme la plate-forme.

    Il existe deux types de licence :

    le programme Standard (iPhone Program Standard) au prix de 99 $ ou de 79 par an ; le programme Entreprise (iPhone Developer Enterprise Program) vendu 299 $ par an.

    Attention

    Ne confondez pas. Le programme Entreprise permet simplement de distribuer des applications en interne dans votre entreprise, jusqu 500 employs, sans passer par lApp Store. Le programme Standard permet de tester vos applications sur les appareils (dans la limite de 100 par an) et propose la distribution sur lApp Store. Vous pouvez vous inscrire ce dernier titre individuel ou au nom dune entreprise.

    01_BlocN_iPhone.indd 801_BlocN_iPhone.indd 8 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    9 Par o commencer ?2

    Pour adhrer au programme Standard, il faut se rendre ladresse suivante : http://developer.apple.com/programs/start/standard/ puis suivre les indications.

    Si vous souhaitez travailler pour une entreprise, le seul moyen pour que son nom dditeur apparaisse est quelle vous enregistre en tant que dveloppeur sur sa licence.

    Info

    Si vous dveloppez titre personnel, vous pouvez adhrer ce programme en tant quindividu mais vous serez le seul dveloppeur autoris utiliser ce compte, soumettre des applications...Dans le cas dune entreprise, vous pourrez crer une quipe de dveloppeurs auxquels vous transf-rerez certains droits.

    Aprs votre adhsion, vous aurez accs au portail iTunes Connect qui vous permettra de grer vos applications. Pour cela, rendez-vous cette adresse https://itunesconnect.apple.com.

    Figure 2.3 : iTunes Connect.

    De plus, sur le portail dveloppeur, vous aurez notamment accs au iPhone Provisioning Portal qui grera les certifi cats pour vos applications.

    01_BlocN_iPhone.indd 901_BlocN_iPhone.indd 9 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    10 Par o commencer ?2

    Figure 2.4 : Lantre des certifi cats.

    CRER UN CERTIFICAT La premire tape est de crer un certifi cat qui sera transmis Apple et vous permettra dinstaller des applications sur vos appareils. Pour cela :

    1. Lancez lapplication Trousseau daccs que vous trouverez dans Applications > Utilitaires.

    2. Cliquez sur le menu Trousseau daccs puis Assistant de certifi cation > Demander un certifi cat une autorit de certifi cat...

    3. Remplissez ensuite les informations comme la Figure 2.5, nous allons enregistrer cette demande de certifi cat sur le disque. Ce fi chier aura pour extension .certSigningRequest.

    4. Vrifi ez que la fentre suivante est la mme que la Figure 2.6.

    Comme je lai dit, les certifi cats se grent sur le portail dveloppeur.

    5. Rendez-vous http://developer.apple.com/iphone/ puis cliquez sur iPhone Provisioning Portal et Certifi cates.

    6. Faites ensuite add Certifi cates et envoyez le fi chier que nous venons de crer.

    7. Vos dveloppeurs valident le certifi cat. Ils doivent cliquer sur Approve dans Team Signing Requests.

    8. Tlchargez le certifi cat et installez-le sur votre ordinateur (en double-cliquant dessus).

    01_BlocN_iPhone.indd 1001_BlocN_iPhone.indd 10 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    11 Par o commencer ?2

    Figure 2.5 : Demandez un certifi cat de dvelopeur.

    Figure 2.6 : Scurisez le tout.

    Figure 2.7 : Votre nouveau

    certifi cat.

    01_BlocN_iPhone.indd 1101_BlocN_iPhone.indd 11 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    12 Par o commencer ?2

    Info

    Le certifi cat est li votre machine. Si vous souhaitez dvelopper sur plusieurs machines, il faut vous rendre dans le Trousseau daccs puis cliquer sur Cls. Ensuite, reprez la cl correspondant votre certifi cat de dveloppeur puis cliquez du bouton droit et Export Votre Nom (voir Figure 2.8). Enregistrez le fi chier .p12 puis ajoutez un mot de passe.Cette tape est trs importante et je vous conseille de sauvegarder ce fi chier mme si vous ne possdez quune machine. Vous continuerez ainsi signer des applications depuis un autre ordinateur si le vtre est en maintenance par exemple.

    Figure 2.8 : La cl sauver.

    GNRER DES PROVISIONINGS Bien, cela tant fait, vous avez maintenant le droit de signer des applications pour les installer sur des appareils. Encore faut-il autoriser votre appareil pour le dveloppement et crer un provisioning de dveloppement. Cette tche, un peu complique, a t simplifi e depuis Xcode 3.2.3, alors profi tez-en !

    Branchez votre appareil votre ordinateur puis lancez Xcode. Rendez-vous dans Window > Organizer o vous devriez le voir apparatre. Cliquez dessus puis sur Use for Development. Les actions suivantes vont se raliser :

    envoi de lidentifi ant de lappareil sur le Provisioning Portal (une identifi cation vous sera demande) ; un provisioning profi le incluant lappareil va tre tlcharg dans Xcode ; les membres de lquipe pourront dvelopper sur cet appareil une fois que Xcode aura rapatri

    le nouveau provisioning.

    Vous pouvez nanmoins raliser ces oprations la main, depuis le portail developer si vous souhaitez notamment nautoriser de signer votre application que sur certains appareils.

    01_BlocN_iPhone.indd 1201_BlocN_iPhone.indd 12 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    13

    3

    O trouver les ressources adquates ? 3

    O trouver les ressources adquates ?

    3 O trouver les ressources adquates ? Le Web regorge de ressources pour rpondre toutes vos questions. En voici une vue densemble.

    Avant toute chose, il est bon de rappeler certains rfl exes adopter. Lorsque vous vous posez une question, commencez par chercher dans la documentation fournie par Apple qui est trs bien ralise et facile daccs. Elle ncessite cependant un petit temps dadaptation pour lexploiter de manire performante. La plupart de vos interrogations y trouveront leurs rponses. Si rien ne correspond, rendez-vous sur le Net.

    Info

    Beaucoup de ressources sont en anglais, vous ny couperez pas et devrez matriser cette langue. Les ressources en franais existent, dont le forum iPuP, mais vous devrez approfondir par vous-mme, dans la langue de Shakespeare...

    LES PREMIERS DOCUMENTS LIREComme spcifi la Fiche 2, commencez par lire les guide s Apple concernant lObjective-C :

    Object-Oriented Programming with Objective-C. Learning Objective-C: A Primer. The Objective-C Programming Language.

    Ensuite, vous devrez vous familiariser avec lenvironnement iPhone. De plus, votre application devra se conformer ce document avant dtre valide et vendue sur le Store : iPhone Human Interface Guidelines qui dcrit le modle que vous devez calquer en terme dergonomie et dinterface utilisateur. Lisez galement iPad Human Interface Guidelines si vous souhaitez dvelopper sur cette plate-forme.

    Attention

    Noubliez pas que vous ne disposez que dune seule fentre. De plus, linterface graphique et les interactions utilisateurs doivent imprativement tre penses avant dcrire la moindre ligne de code. Votre application devra tre utilisable de manire intuitive.

    Une fois ces quelques pages lues, vous pouvez vous attaquer iPhone Application Programming Guide qui vous donnera des conseils pour la ralisation de votre application et iPhone Development Guide pour apprendre vous servir des outils de dveloppement.

    Je vous conseille galement de vous procurer la bible des dveloppeurs Cocoa : Programmation Cocoa sous Mac OS X par Aaron Hillegass1. Certes, ce livre traite de la programmation Mac OS X, mais vous ferez facilement le lien entre Cocoa et Cocoa Touch utilis par iOS.

    1. http://www.pearson.fr/livre/?GCOI=27440100726260

    01_BlocN_iPhone.indd 1301_BlocN_iPhone.indd 13 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    14 O trouver les ressources adquates ? 3

    LA DOCUMENTATION Une fois ces quelques documents lus, vous pourrez dmarrer votre projet. Vous aurez trs souvent besoin daccder la documentation. De plus, faites cette recherche avant de venir poser votre ques-tion sur un forum surtout si cette dernire est du type : Bonjour, jaimerais savoir comment changer la couleur du texte dans un label ? La rponse sera immdiate : Merci de chercher dans la documen-tation ! Regardons comment faire.

    Vous accdez la documentation de plusieurs manires :

    En ligne. Vous la trouverez sur votre portail dveloppeur aprs identifi cation ou sur ce site : http://developer.apple.com/iphone/library/navigation/index.html.

    Dans Xcode. Une copie de la version en ligne est disponible directement sous Xcode. Pour cela, se rendre dans Help > Developer Documentation ou faire le raccourci A+a+?.

    Astuce

    Pour accder plus rapidement la documentation, cliquez du bouton droit sur un mot-cl comme UILabel ou shouldAutorotateToInterfaceOrientation puis choisissez Find Text in Documentation.Si vous ne souhaitez pas lancer lAide, reprez llment sur lequel vous souhaitez vous renseigner, appuyez sur la touche a puis double-cliquez. Vous aurez ainsi une fentre contextuelle comme la Figure 3.1

    Figure 3.1 : Laide contextuelle.

    01_BlocN_iPhone.indd 1401_BlocN_iPhone.indd 14 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    15 O trouver les ressources adquates ? 3

    Si vous cherchez par exemple vous renseigner sur UILabel, vous devriez obtenir une fi gure analogue la Figure 3.2.

    12

    3

    45

    6

    7

    8

    9

    10

    Figure 3.2 : Se familiariser avec laide.

    En , vous trouverez la liste de tous les documents o apparat UILabel. Dans la colonne reprsente par le numro sont listes toutes les mthodes, les proprits et les explications pour exploiter un objet de la classe UILabel.

    En , vous trouverez lhritage de la classe UILabel puis en le framework importer pour lutiliser. Llment reprsent en est trs important car spcifi e la version minimum de lOS pour pouvoir lutiliser.

    En , vous trouverez une liste de tous les exemples de code employant la classe UILabel.

    Info

    Ces exemples de code (samples code) sont trs importants car ils vous montrent comment utiliser un objet. Nhsitez donc pas les tlcharger puis les compiler et vous inspirer du code source.

    En , vous trouverez une description de la classe et en la liste des mthodes et proprits dtaille. Enfi n, vous pourrez accder rapidement un endroit avec la liste droulante pointe par le numro .

    Le champ de recherche dans la documentation est reprsent par le numro .

    01_BlocN_iPhone.indd 1501_BlocN_iPhone.indd 15 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    16 O trouver les ressources adquates ? 3

    Attention

    La documentation Xcode ne concerne pas unique ment liPhone. Pour viter de chercher dans la docu-mentation Mac des lments qui nexistent pas sur liPhone, ne recherchez que dans la documentation iPhone comme la Figure 3.3.

    Figure 3.3 : Ne donner la parole qu liPhone

    Astuce

    Vous ne vous rappelez plus dune proprit dun lment ou du nom dune mthode ? Lautocompltion na pas suffi t ? Appuyez sur la touche Esc de votre clavier. Par exemple, Figure 3.4 aprs avoir dclar UILabel *monLabel puis tap mo, vous aurez un choix parmi lesquels le nom de votre objet. Figure 3.5, aprs avoir crit monLabel., vous aurez une liste des proprits disponibles pour ce label. Enfi n, aprs avoir tap [monLabel set, vous aurez une liste des mthodes commenant par set (Figure 3.6)

    Figure 3.4 : La liste des objets ou variables.

    Figure 3.5 : La liste des proprits de UILabel. Figure 3.6 : La liste des mthodes de UILabel.

    01_BlocN_iPhone.indd 1601_BlocN_iPhone.indd 16 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    17 O trouver les ressources adquates ? 3

    LES RESSOURCES SUR INTERNET Avant de vous rendre sur le Net pour poser votre question, retournez encore une fois la documen-tation pour vrifi er que la rponse votre question ny est pas. Ensuite, vous pourrez vous rendre sur des forums spcialiss. Vous trouverez en anglais :

    Le forum developer dApple accessible depuis votre portail. Ce forum de trs bonne qualit vous permettra dchanger avec les ingnieurs Apple qui sy rendent trs rgulirement.

    Le forum iphonedevsdk.com ou stackoverfl ow.com sont galement deux sources de qualit et trs actives. Vous recevrez des rponses dans lheure, voire moins.

    Il existe galement des ressources en franais dont le site spcialis ipup.fr avec son forum http://www.ipup.fr/forum. Ce site a t cr suite une constatation trs simple : les ressources en fran-ais pour le dveloppement iPhone taient rares. Les rdacteurs de ce livre, qui sont aussi les fonda-teurs du site, ainsi que le millier de membres trs actifs seront toujours prts aider les dbutants.

    Une rubrique spciale est mise en place pour changer autour du livre et tlcharger les codes sources de chaque fi che. Nhsitez pas vous inscrire, la bonne humeur ncessaire pour coder sur iPhone, iPad ou iPod Touch sera l ! De plus, vous trouverez gnralement rponse votre interroga-tion dans lheure.

    Attention

    Jinsiste. Les dveloppeurs sont en gnral toujours prts expliquer et partager leurs connaissances. Cependant, les questions de dbutants sont souvent poses sur le forum et reviennent rgulirement. Vrifi ez toujours avec une recherche avant de poster pour viter trop de redondance sur un mme sujet ! Vous nobtiendrez jamais une rponse une question du type : Pourriez-vous me faire a ?. Par contre, si vous montrez dans votre post que vous avez cherch, essay des solutions mais que vous ny arrivez pas, la rponse sera immdiate, cordiale et explique !Petite astuce : si vous passez par Google et que vous ne trouvez pas de fonction recherche sur le site concern, vous pouvez essayer de taper dans le champ de recherche la requte suivante : site:ladresse du site votre interrogation. Par exemple : site:www.ipup.fr changer la couleur dune table view.

    01_BlocN_iPhone.indd 1701_BlocN_iPhone.indd 17 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    CHAPITRE 2

    LE HELLO IPUP

    01_BlocN_iPhone.indd 1901_BlocN_iPhone.indd 19 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    a y est, vous tes dcid vous lancer dans laventure iPhone ! Mais par o commencer ? Dans ce chapitre, vous dcouvrirez les outils ncessaires pour dmarrer et concevoir une premire application trs simple.

    Pour dvelopper, vous avez besoin dun IDE (Environnement de Dvelop-pement Intgr) appel Xcode. Ce logiciel nest pas uniquement ddi au dveloppement iPhone, vous pouvez aussi lemployer pour dvelopper des applications en Java ou en C++. Dans notre cas, nous allons crire nos applications avec le langage Objective-C.

    01_BlocN_iPhone.indd 2001_BlocN_iPhone.indd 20 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    21

    4

    Introduction Xcode4

    Introduction Xcode

    4 Introduction Xcode Xcode sinstalle partir du DVD dinstallation systme reu avec votre Mac. Aprs installation, il sera rang par dfaut dans le dossier Macintosh HD/Developer/Applications. Dans notre cas, il a d sins-taller en mme temps que le SDK (voir Fiche 2).

    En lanant cet outil, vous devriez avoir une fentre ressemblant la Figure 4.1 :

    Figure 4.1 : La fentre daccueil de Xcode.

    Comme cest votre premire utilisation de Xcode, la fentre Recent Projects est vide. Pour vous familiariser avec Xcode, puis avec Interface Builder, vous allez construire votre premire application : un Hello iPuP !

    Commenons par crer un nouveau projet : ouvrez File > New project ou cliquez, dans la fentre douverture, sur Create a new project (*+A+N). Vous avez le choix entre plusieurs modles (templates). Ce sont en fait des projets avec une architecture toute prte. Ils sont trs utiles lorsque vous dbutez, car ils vous aident comprendre et construire correctement une architecture de vue.

    En voici le dtail :

    Navigation-based Application. Ce projet contient une navigation bar (barre de navigation) dj mise en place. Une barre de navigation (UINavigationBar gre par un UINavigationController) est trs pratique quand vous affi chez des listes de donnes (table view), linstar de celle du carnet dadresses sur votre iPhone (UITableView).

    OpenGL ES Application. Une vue OpenGL ES dj confi gure, avec un carr rempli dun dgrad qui tourne sur lui-mme.

    Tab Bar Application. Un tab bar ou barre donglets est une barre situe en bas de lcran vous permettant de choisir parmi plusieurs vues par un simple clic. Lapplication iPod par exemple en compte un. Un tab bar est gr par un UITabBarController.

    Utility Application. Vous aurez trs certainement besoin de faire des transitions entre vos vues, et cette base de projet vous propose une solution afi n de raliser une animation de type fl ip (retournement 3D de 180).

    01_BlocN_iPhone.indd 2101_BlocN_iPhone.indd 21 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    22 Introduction Xcode4

    View-Based Application. En commenant par ouvrir un projet de ce type, vous aurez une vue qui saffi chera par-dessus la fentre (UIWindow). Cette vue sera gre par un viewController (UIViewController) charg depuis un fi chier .xib (fi chier utilis avec Interface Builder).

    Info

    Vous trouverez parfois crit fi chier nib. Cest un fi chier .xib, mais avec lancienne dnomination pour NextStep Interface Builder.

    Window-based Application. Le projet de base, compltement pur.

    Pour notre part, nous allons crer un projet Window-based Application, que nous nommerons HelloiPuP. Vous arrivez sur la fentre de la Figure 4.2.

    1

    23

    Figure 4.2 : Fentre daccueil

    du projet Hello iPuP.

    Examinons la barre de menu (zone ) :

    Overview. Permet de choisir la cible de compilation, ainsi que les modes de compilation : debug. Ce mode utilise les points darrts et excute le code pas pas. release. Lexcution est plus rapide que le mode debug, mais la diffrence nest pas

    toujours visible.

    distribution. Cre lexcutable en vue de la distribution sur lApp Store.

    Action. Propose quelques actions comme Reveal in Finder (pour ouvrir lemplacement o est rang votre fi chier), galement accessibles en cliquant du bouton droit dans lditeur.

    Breakpoints. Active le mode debug avec les points darrts. Build and run. Compile et lance votre application. Tasks. Arrte le droulement de lapplication. Info. Champ de recherche.

    Descendez votre regard... mais quoi correspondent tous ces fi chiers (zone ) ?

    CoreGraphics.framework, Foundation.framework, UIKit.framework. Vous vous en doutez peut-tre, ce sont les librairies fournies par Apple que vous allez utiliser dans votre application.

    HelloiPuP.app. Cest lapplication que vous pourrez installer sur liPhone, si vous avez pay votre licence...

    01_BlocN_iPhone.indd 2201_BlocN_iPhone.indd 22 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    23 Introduction Xcode4

    HelloiPuP_Prefi x.pch. Cest un autre fi chier include. Vous navez cependant pas besoin de lin-clure dans vos fi chiers, car il est compil sparment.

    HelloiPuPAppDelegate.h. Cest un fi chier den-tte trs proche de ce que vous trouvez en C ou C++. Il contient toutes les dclarations.

    HelloiPuPAppDelegate.m. Cest ici que vous allez commencer. Ce fi chier va contenir les instructions de votre programme.

    HelloiPuP-Info.plist. Ce fi chier contient diverses informations propos de votre programme. Vous nallez pas vous en servir avant de compiler votre application sur votre iPhone, iPod Touch ou iPad.

    main.m. Comme dans beaucoup de langages, ce fi chier contient la fonction main. Cest l o lexcution du programme dbute. Typiquement, ce main lance le programme. Vous ne devriez pas avoir besoin de lditer.

    MainWindow.xib. Ce fi chier contient linterface graphique de votre fentre. En double-cliquant dessus, vous lancerez Interface Builder pour dessiner votre interface.

    Regardons ensuite la colonne de gauche (zone ), nomme Groups & Files. Vous y trouvez notamment :

    Votre projet HelloiPuP. Dans ce projet, plusieurs dossiers : Classes. Vos classes. Il ny a ici que votre application delegate. Other sources. Le prefi x header et le main. Ressources. Les ressources pour votre projet. Il vous faudra glisser ici les ressources

    dont vous aurez besoin dans votre application (images, vidos, fi chiers xib...).

    Frameworks. Les frameworks ajouter votre projet. Products. Typiquement, votre .app qui contient lexcutable.

    Targets. La cible lorsque vous compilez. Executable. Lexcutable de lapplication aprs compilation. Find Results. Lhistorique de vos recherches. Bookmarks. Liste lensemble des rfrences ajoutes manuellement votre code. SCM (Software Control Management). Sert quand vous souhaitez utiliser un outil de gestion

    de version (Subversion, Perforce et SCV sont supports).

    Project symbols. Liste tout ce qui est utilis dans votre projet : lments dinterface, classes, noms de mthode, instances dobjets...

    Des dossiers intelligents. Ils regroupent vos fi chiers dimplmentation (.m) ou les fi chiers interface builder (.xib).

    01_BlocN_iPhone.indd 2301_BlocN_iPhone.indd 23 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    24 Introduction Xcode4

    Cliquez sur Classes puis sur HelloiPuPAppDelegate.m, qui se trouve dans le dossier slectionn. Du code apparat dans la fentre ddition comme la Figure 4.3, et la barre de fonction sactive.

    Vous y trouvez, de gauche droite, des fl ches pour naviguer dans lhistorique des fi chiers consults , lhistorique , la liste des mthodes , la liste des signets (Edit/Add to Bookmarks (A+D)) , la liste des points darrts , les classes et superclasses, ainsi que les catgories (ex. : MaClasse(Animation)) , la liste des fi chiers utilisant la classe dite , le bouton vous permettant de naviguer aisment entre .h/.m .

    1 2 3 45 7

    6 8

    Figure 4.3 : Explication des boutons intgrs.

    Maintenant que les bases sont poses, codons un peu !

    01_BlocN_iPhone.indd 2401_BlocN_iPhone.indd 24 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    25

    5

    Coder quelques lments simples5

    Coder quelques lments simples

    5 Coder quelques lments simplesNous allons ajouter le label UILabel notre vue afi n daffi cher le texte HelloiPuP.

    Pour cela, il faut modifi er le fi chier HelloiPuPAppDelegate.h :

    #import

    @interface HelloiPuPAppDelegate : NSObject {

    IBOutlet UILabel *helloLabel;

    UIWindow *window;

    }

    @property (nonatomic, retain) IBOutlet UIWindow *window; @end

    Attardons-nous un peu sur ce code :

    La ligne est lquivalent de #include.

    La ligne dclare la classe HelloiPuPDelegate hritant de NSObject et qui est delegate de UIAppli-cationDelegate. La structure tant la suivante :

    @interface MaClasse : SuperClass

    la ligne , le mot-cl IBOutlet lie votre objet Interface Builder.

    La ligne est la dclaration de la premire vue dans la pile de vues : votre fentre !

    La ligne facilite lcriture et clarifi e le code grce un mcanisme trs pratique remplaant les getters et setters . Les nonatomic et atomic sont des paramtres spcifi ant le comportement de votre objet en multithreading. Concrtement, utiliser atomic sous-entend que laccs cet objet sera bloqu par le thread appelant (aucun autre ne pourra y accder si lobjet reste verrouill). Si deux threads veulent modifi er lobjet, ils le feront lun aprs lautre. Avec nonatomic, le comportement ne sera pas garanti, mais laccs sera plus rapide.

    Vous pouvez ensuite spcifi er le comportement mmoire, en choisissant parmi les paramtres retain, copy ou assign. Nous ne nous y attarderons pas ici, mais je vous invite vous y pencher le plus rapi-dement possible. En effet, il ny a pas de garbage collector sur liPhone ! Il faut donc grer votre mmoire trs prcisment !

    Info

    Garbage collector est traduit en franais par ramasse-miettes. Cest un sous-systme qui gre la mmoire : ds lors quune ressource alloue est inutilise, il la supprime de la mmoire.

    Passons maintenant au fi chier .m.

    Modifi ez-le ainsi :

    #import HelloiPuPAppDelegate.h

    @implementation HelloiPuPAppDelegate

    @synthesize window;

    01_BlocN_iPhone.indd 2501_BlocN_iPhone.indd 25 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    26 Coder quelques lments simples5

    - (void)applicationDidFinishLaunching:(UIApplication *)application {

    [helloLabel setText:@Hello iPuP];

    // quivalent : helloLabel.text = @Hello iPuP;

    [window makeKeyAndVisible];

    }

    - (void)dealloc {

    [window release];

    [super dealloc];

    }

    @end

    Les lignes permettent dimplmenter les diffrentes mthodes de la classe.

    est obligatoire lorsque vous crivez @property dans le fi chier .h.

    est une mthode automatiquement lance lorsque le chargement de lapplication est termin.

    signifi e que lon met le texte Hello iPuP dans le label helloLabel.

    rend la fentre (window) visible.

    mthode dealloc : mthode appele lorsque lobjet de classe est release, cest--dire libr de la mmoire. Par exemple, si vous aviez un objet de la classe Chien allou par une instance de la classe Ferme avec le mcanisme habituel Chien *unChien = [[Chien alloc] init];, un [unChien release]; appellera automatiquement la mthode dealloc de la classe Chien. Dans cette mthode, il faut donc librer tous les objets encore en mmoire.

    Ici, window est release , puis le dealloc de super (la classe dont on hrite, NSObject ici) est appel.

    01_BlocN_iPhone.indd 2601_BlocN_iPhone.indd 26 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    27

    6

    Premiers pas dans Interface Builder6

    Premiers pas dans Interface Builder

    6 Premiers pas dans Interface Builder Interface Builder est un outil de dveloppement propos par Apple pour faciliter les crations dInterface Homme-Machine (IHM). Bien entendu, vous pouvez tout faire en dur, cest--dire par la programmation. Parfois mme, vous naurez pas le choix, mais vous vous en rendrez compte le moment venu !

    Pour linstant, ouvrez MainWindow.xib dans Resources en double-cliquant dessus.

    1

    2

    3

    4

    A B C D

    Figure 6.1 : Fentres d Interface Builder.

    gauche , vous dcouvrez la librairie, qui contient tous les lments du UIKit que vous pourrez utiliser dans votre application.

    Au centre , votre vue (ici window) telle quelle apparatra sur votre iPhone.

    La fentre en dessous contient tout ce dont vous aurez besoin pour faire marcher correctement Interface Builder :

    Files owner (propritaire du fi chier). Cest un objet qui tablit la communication entre les fi chiers xib et les lments de votre application. Lavantage de la substitution, cest que les connexions et confi gurations faites dans le Files owner sont appliques lobjet rel quand on le charge.

    First responder. Lorsque votre objet est fi rst responder, il sera le premier intercepter les vne-ments, tels que copier/coller, manipulations de texte, actions que vous avez cres, etc. Le First responder est chang dynamiquement en fonction de la hirarchie des vues notamment. Si la vue qui est fi rst responder ne rpond pas un vnement, alors cet vnement traversera la hirarchie des vues jusqu tre intercept.

    Enfi n, droite , cest lInspecteur, avec 4 onglets : Attributs A , Connections B , Size (taille) C , Iden-tity (identit) D .

    01_BlocN_iPhone.indd 2701_BlocN_iPhone.indd 27 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    28 Premiers pas dans Interface Builder6

    Plaons notre label en faisant un glisser-dposer depuis la librairie.

    Puis centrez-le, comme la Figure 6.2.

    Attention

    Une vue iPhone fait 320 480 pixels. Avec une barre de statut, elle est rduite 320 460 pixels. Une vue iPad quant elle, fait 768 1 024 pixels.

    Figure 6.2 : Positionnement du label par un glisser-dposer.

    Figure 6.3 : L Inspecteur de la taille du label.

    Figure 6.4 : L Inspecteur des attributs du label.

    Centrons le texte en choisissant Align Centers pour loption Baseline dans longlet Attributs de lIns-pecteur (voir Figure 6.4).

    Enfi n, pour connecter le label qui est sur la vue au helloLabel qui appartient votre delegate, cliquez sur Hello iPuP App Delegate puis rendez-vous sur longlet Connections dans lInspecteur. Reprez helloLabel, et cliquez sur le rond ct. Maintenez et glissez-le jusquau label prsent dans la vue. Relchez, sauvegardez et quittez !

    01_BlocN_iPhone.indd 2801_BlocN_iPhone.indd 28 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    29 Premiers pas dans Interface Builder6

    Figure 6.5 : Connexion du label.

    De retour sous Xcode, faites un Build/Build and Run (A+R) et... Tadamm !

    Figure 6.6 : Votre premire application !

    01_BlocN_iPhone.indd 2901_BlocN_iPhone.indd 29 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    307 Compiler sur simulateur ou sur iPhone ? 7 Compiler sur simulateur ou sur iPhone ?

    Vous pouvez choisir de compiler sur simulateur ou sur device (votre iPhone, iPod Touch ou iPad). Pour cela, il faut choisir la cible dans lOverview (voir Fiche 4). Pour compiler sur device, il faut avoir pay la licence de dveloppement et fait les provisionings ncessaires (voir Fiche 2).

    Compiler uniquement sur simulateur peut se rvler trs dangereux, pour les raisons suivantes :

    Le simulateur tourne sur votre Mac, donc compar votre iPhone, ses ressources sont illimites ! Cela signifi e, par exemple, des animations (en apparence) trs fl uides, un temps de chargement trs court, aucune limite dans le nombre dimages charges en mmoire, etc.

    La gestion mmoire nest pas la mme, notamment en ce qui concerne le mcanisme dallocation/dsallocation.

    Vous navez pas accs lacclromtre et gyroscope, ni au compas, ni au capteur de proximit.

    Attention

    Au fur et mesure que vous avancez dans votre projet, il ne faut pas compiler uniquement sur simulateur, sans tester sur iPhone. Les caractristiques ne sont absolument pas les mmes. Si, lors de la phase de dveloppement, vous compiler sur simulateur uniquement, votre application risque fort de ne pas avoir le comportement attendu lorsque vous la testerez sur iPhone !

    01_BlocN_iPhone.indd 3001_BlocN_iPhone.indd 30 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    CHAPITRE 3

    APPRHENDER QUELQUES LMENTS DINTERFACE

    01_BlocN_iPhone.indd 3101_BlocN_iPhone.indd 31 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    Votre premire application iPhone en main, vous voulez aller plus loin... En effet, vous sentez bien quun simple label affi chant du texte ne suffi ra pas pour faire de votre application un futur best-seller ! Ce chapitre va donc vous ouvrir de nouveaux horizons sur les lments par dfaut fournis par Apple dans le kit de dveloppement iPhone (UIKit).

    01_BlocN_iPhone.indd 3201_BlocN_iPhone.indd 32 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    33

    8

    Un catalogue des lments dinterface8

    Un catalogue des lments dinterface

    8 Un catalogue des lments dinterfaceApple fournit par dfaut de nombreux lments dinterface que vous retrouvez dans les applications prinstalles sur votre iPhone, iPod Touch ou iPad. Parcourons-les !

    Vous tes maintenant capable de vous servir dInterface Builder pour placer vos lments dinterface. Le principe est le mme que pour le label : se servir du mot-cl IBOutlet et relier le tout sous Inter-face Builder !

    Parce que Interface Builder est trs pratique pour agencer ses vues quand on est dbutant, il faut savoir quil est possible de tout construire dans le code. Nous allons donc profi ter de cette numra-tion des lments dinterface pour vous en montrer le mcanisme !

    Info

    Nous allons donner quelques bases dutilisation des lments du UIKit. Le minimum tant de les affi cher lcran. Nhsitez pas vous rfrer leur documentation ainsi quau projet dexemple (sample code : UICatalog) pour en savoir plus. Pour lutilisation de la documentation, rendez-vous la Fiche 3.Certains lments explicits ici seront approfondis dans les fi ches suivantes.

    Figure 8.1 : Liste des lments du UIKit.

    Astuce

    Noubliez pas la touche q de votre clavier. Par exemple, aprs avoir crit unBouton., appuyez sur q pour voir la liste des proprits de votre bouton que vous pouvez modifi er. Bien entendu, tout ceci se retrouve dans la documentation !

    Info

    Dans la suite, nous allons parcourir les lments dinterfaces votre disposition. Vous pouvez crer un nouveau projet de type Window-based Application pour tester les diffrents morceaux de code qui suivent.

    01_BlocN_iPhone.indd 3301_BlocN_iPhone.indd 33 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    34 Un catalogue des lments dinterface8

    WINDOWLa particularit de liPhone ou liPad est de navoir quune fentre de disponible, contrairement aux ordinateurs o le nombre de fentres nest pas impos. Lobjet de la classe UIWindow est donc la racine de votre future hirarchie de vues. En effet, faute de pouvoir disposer de plusieurs fentres, la navigation entre les diffrentes vues de votre application se fera par empilements de vues.

    Linitialisation de cette fentre doit se trouver dans la mthode suivante, dans votre application delegate :

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Cration de la fentre

    // Noubliez pas UIWindow *window dans le .h

    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // ajouts dune ou plusieurs vue(s)

    [window addSubview:uneVue];

    // af chage lcran de la fentre et ses sous vues

    [window makeKeyAndVisible];

    return YES;

    }

    INITWITHFRAME

    initWithFrame vous permet dinitialiser une vue en lui spcifi ant sa taille. Frame tant le rectangle dans lequel elle va sinscrire.

    Info

    Pour crer votre propre rectangle : CGRectMake(xOrigine, yOrigine, largeur, hauteur). Attention au repre de liPhone (Figure 8.2). Rappelez-vous que lcran de liPhone fait 320 480 pixels...

    La mthode addSubview: permet dajouter la vue passe en paramtre la pile de vues.

    Cette ligne est indispensable pour affi cher la fentre ainsi que toutes ses sous-vues. makeKeyAndVisible est propre UIWindow seulement.

    coordonnes standard

    (0,0)

    y

    x

    Figure 8.2 : Systme de coordonnes de l iPhone pour le UIKit.

    01_BlocN_iPhone.indd 3401_BlocN_iPhone.indd 34 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    35 Un catalogue des lments dinterface8

    Info

    Gnralement, on ne cre jamais une fentre par le code. Dailleurs, vous aurez remarqu quen crant le projet de type Window-based Application, la fentre est dj instancie par le fi chier window.xib (avec le mot-cl IBOutlet).

    VIEW Une fois que votre fentre saffi che, vous pouvez lui ajouter des vues comme la Figure 8.3 (visualisez-le comme un empilement). Tous les lments du UIKit sont des vues, vous pouvez donc crer votre propre vue (par exemple votre propre liste droulante) en partant de la classe UIView.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // initialisation de la vue pour quelle remplisse le quart haut/gauche de lcran UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 160.0, 240.0)]; // on change la couleur du fond de la vue pour quil soit bleu [myView setBackgroundColor:[UIColor blueColor]]; // on ajoute la vue la window [window addSubview:myView]; [myView release]; [window makeKeyAndVisible]; return YES; }

    IMAGE VIEW Cette vue vous permet daffi cher une image lcran.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions { // initialisation de la vue UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20.0, 30.0, 100, 100.0)]; // on cre une image partir de celle mise en ressource dans le projet UIImage *logoImage = [UIImage imageNamed:@logo_ipup_losange.png]; myImageView.image = logoImage; // quivalent [myImageView setImage:logoImage]; // on ajoute la vue la window [window addSubview:myImageView]; [myImageView release]; [window makeKeyAndVisible]; return YES;}

    Figure 8.3 : Votre premire vue !

    01_BlocN_iPhone.indd 3501_BlocN_iPhone.indd 35 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    36 Un catalogue des lments dinterface8

    Pour affi cher la vue sur lcran, il faut dabord crer un objet UIImage partir dun fi chier, ici logo_ipup_losange.png.

    cet endroit, on spcifi e limage affi cher dans limage view.

    Figure 8.4 : Le logo iPuP sur le simulateur...

    Info

    Vous pouvez changer le comportement de limage pour quelle sadapte ou non votre rectangle dfi ni avec frame (voir Figure 8.5).

    myImageView.contentMode = UIViewContentModeScaleAspectFill;

    Vous pouvez galement recourir une image view pour raliser de petites animations : dans la documentation Apple : Class UIImageView > Tasks > Animating images

    Distorsion

    Pas dedistorsion

    Pas dedistorsion

    UIViewContentModeScaleAspectFill

    UIViewContentModeScaleAspectFill

    UIViewContentModeScaleAspectFit

    Figure 8.5 : Quelques modes de mise en forme de l image.

    01_BlocN_iPhone.indd 3601_BlocN_iPhone.indd 36 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    37 Un catalogue des lments dinterface8

    WEB VIEWUne Web view vous permet de charger du contenu web, depuis Internet ou localement.

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // on rcupre la taille de lcran

    CGRect webFrame = [[UIScreen mainScreen] applicationFrame];

    UIWebView *myWebView = [[UIWebView alloc] initWithFrame:webFrame];

    myWebView.backgroundColor = [UIColor whiteColor];

    myWebView.scalesPageToFit = YES;

    [window addSubview: myWebView];

    [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL

    URLWithString:@http://www.ipup.fr/]]];

    [myWebView release];

    [window makeKeyAndVisible];

    return YES;

    }

    Lorsque scalesPageToFit est YES, la page charge est directement zoome pour tre affi che entirement et le zoom par lutilisateur est autoris.

    Figure 8.6 : La page iPuP sur votre iPhone.

    01_BlocN_iPhone.indd 3701_BlocN_iPhone.indd 37 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    38 Un catalogue des lments dinterface8

    MAP VIEWCette vue est trs pratique ds lors que vous souhaitez affi cher des positions GPS sur lcran.

    Info

    Noubliez pas dinclure le framework MapKit et faire limport suivant (voir Fiche 14) : #import

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGRect mapFrame = [[UIScreen mainScreen] applicationFrame];

    MKMapView *mapView = [[MKMapView alloc] initWithFrame:mapFrame];

    mapView.showsUserLocation = YES;

    [window addSubview:mapView];

    [mapView release];

    [window makeKeyAndVisible];

    return YES;

    }

    showUsersLocation YES permet de situer directement lutilisateur quelque part dans le monde et lui montrer sa position sur la carte. Non, je ne suis pas aux tats-Unis...

    Figure 8.7 : Affi chez la position de lutilisateur sur votre cran.

    01_BlocN_iPhone.indd 3801_BlocN_iPhone.indd 38 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    39 Un catalogue des lments dinterface8

    TEXT VIEW Cette vue affi che du texte sans limite de taille. Si le texte dpasse la taille de lcran, des ascenseurs sur le ct indiqueront votre position dans la vue.

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGRect textFrame = [[UIScreen mainScreen] applicationFrame];

    UITextView *textView = [[UITextView alloc] initWithFrame:textFrame];

    textView.text = @Vous pouvez crire plusieurs lignes de texte. Pour un

    retour la ligne, utilisez simplement le caractre \\\n\. Par exemple :

    \\\n\\n\ \n\n vous donne 2 retours la ligne;

    textView.font = [UIFont fontWithName:@Helvetica size:17.0];

    [window addSubview:textView];

    [textView release];

    [window makeKeyAndVisible];

    return YES;

    }

    Info

    Noubliez pas que le caractre \ permet dchapper les caractres spciaux.Par dfaut, une textView est ditable. Vous pouvez lempcher en mettant editable NO.

    Figure 8.8 : Affi chez des lignes de texte.

    BOUTON Est-il ncessaire dexpliciter son utilit ? Voici comment est cr un bouton trs facilement :

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    button.frame = CGRectMake(20.0, 30.0, 120.0, 30.0);

    [button setTitle:@Touche moi ! forState:UIControlStateNormal];

    [window addSubview:button];

    [window makeKeyAndVisible];

    return YES;

    }

    01_BlocN_iPhone.indd 3901_BlocN_iPhone.indd 39 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    40 Un catalogue des lments dinterface8

    Vous remarquerez que cest une mthode de classe. En fait, au lieu dallouer et initialiser un bouton, puis appeler [unBouton uneMethode]; vous utilisez une mthode dite de classe de UIButton. Ainsi, lobjet UIButton retourn est en autorelease.

    Info

    Exemple dune mthode de classe : (vous remarquerez le +)+(UIButton*) buttonWithType:(UIButtonType)buttonType;

    Un bouton peut avoir plusieurs tats : UIControlStateNormal, UIControlStateSelected, UIControlStateHighlighted,... Pour chaque tat, on peut dfi nir une image, une couleur, un titre...

    Figure 8.9 : Un bouton qui attend quon le touche.

    TEXTFIELD Cet objet vous servira pour entrer du texte. Vous pouvez spcifi er le type du clavier (entier, chiffres seulement...), si lautocorrection est active ou non (autocorrectionType), si lentre du texte est dite scurise (les points) : secureTextEntry.

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UITextField *textField = [[UITextField alloc]

    initWithFrame:CGRectMake(20.0, 40.0, 160.0, 30.0)];

    textField.textColor = [UIColor blackColor];

    // on ajoute un contour rond autour du textField

    textField.borderStyle = UITextBorderStyleRoundedRect;

    textField.font = [UIFont systemFontOfSize:17.0];

    textField.placeholder = @;

    textField.backgroundColor = [UIColor whiteColor];

    // on utilise le clavier par dfaut, qui est entier

    textField.keyboardType = UIKeyboardTypeDefault;

    // on spci e le type du bouton en bas droite du clavier

    textField.returnKeyType = UIReturnKeyDone;

    // mettre un bouton x la droite pour effacer

    textField.clearButtonMode = UITextFieldViewModeWhileEditing;

    [window addSubview:textField];

    [textField release];

    [window makeKeyAndVisible];

    return YES;

    }

    Info

    Pour rtracter le clavier, rendez-vous la Fiche 10 !

    01_BlocN_iPhone.indd 4001_BlocN_iPhone.indd 40 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    41 Un catalogue des lments dinterface8

    Figure 8.10 : Un champ de texte et son clavier.

    SLIDER Le slider est un lment qui autorise lutilisateur choisir une valeur entre un maximum et un minimum en le faisant glisser du doigt.

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UISlider *slider = [[UISlider alloc]

    initWithFrame:CGRectMake(20.0, 40.0, 160.0, 30.0)];

    slider.minimumValue = 0.0;

    slider.maximumValue = 100.0;

    [window addSubview:slider];

    [slider release];

    [window makeKeyAndVisible];

    return YES;

    }

    Info

    Pour rcuprer la valeur du slider : slider.value.

    Figure 8.11 : Un simple slider.

    01_BlocN_iPhone.indd 4101_BlocN_iPhone.indd 41 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    42 Un catalogue des lments dinterface8

    ACTIVITY INDICATOR VIEW Cette vue avertit lutilisateur quun traitement est en cours, par exemple quand lapplication charge des donnes. Il est ainsi rassur et ne pense pas quil sagit dun bogue.

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // on met la window en gris pour voir lactivity indicator view

    window.backgroundColor = [UIColor grayColor];

    UIActivityIndicatorView *actView = [[UIActivityIndicatorView alloc]

    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

    actView.center = CGPointMake(40.0, 50.0);

    // on peut faire un actView.center = window.center;

    [actView startAnimating];

    [actView setHidesWhenStopped:YES];

    [window addSubview:actView];

    [actView release];

    [window makeKeyAndVisible];

    return YES;

    }

    On dfi nit ainsi le centre de la vue, qui est un CGPoint.

    On lance lanimation de lActivity indicator view.

    Lorsque lon stoppera lanimation, lActivity indicator view sera immdiatement cache (setHidden:YES).

    Info

    Vous aurez trs certainement besoin de dtacher un thread pour charger des donnes, et animer lActivity indicator view sur le thread principal. La notion de thread est assez complexe. Comprenez quavec ce mcanisme, vous serez capable de charger des donnes en tche de fond. Rappelez-vous cependant quune modifi cation dlments du UIKit (les lments graphiques donc) doit se faire sur le thread principal. La gestion des threads nest pas vidente, vous devez avoir une bonne matrise de la gestion des ressources. Nhsitez pas lire les guides proposs par Apple sy rfrant.

    Voici un exemple dutilisation des threads, qui vous sera certainement trs pratique :

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    window.backgroundColor = [UIColor grayColor];

    // dclarer actView dans le .h

    actView = [[UIActivityIndicatorView alloc]

    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

    actView.center = CGPointMake(40.0, 50.0);

    [self performSelectorInBackground:@selector(backgroundMethod) withObject:nil];

    [actView startAnimating];

    [actView setHidesWhenStopped:YES];

    Figure 8.12 : Une roue tournante.

    01_BlocN_iPhone.indd 4201_BlocN_iPhone.indd 42 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    43 Un catalogue des lments dinterface8

    [window addSubview:actView];

    [window makeKeyAndVisible];

    return YES;

    }

    - (void) backgroundMethod {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // chargement des donnes ici

    // lorsque les donnes sont charges

    [self performSelectorOnMainThread:@selector(backgroundMethodDone)

    withObject:nil waitUntilDone:NO];

    [pool release];

    }

    - (void) backgroundMethodDone {

    [actView stopAnimating];

    // et ici continue le droulement de votre programme

    }

    Attention

    Si vous recopiez ce code, rien ne saffi chera car aucune donne nest charge sur le thread dtach. Si vous souhaitez observer le comportement, crivez :

    - (void) backgroundMethod { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // chargement des donnes ici // lorsque les donnes sont charges sleep(5); [self performSelectorOnMainThread:@selector(backgroundMethodDone) withObject:nil waitUntilDone:NO]; [pool release];}

    On dtache ici un nouveau thread, en tche de fond, en appelant la mthode backgroundMethod.

    Puisque lon est dans un autre thread que le principal, il faut crer un bassin dautorelease. La rgle est la suivante : un bassin dautorelease par thread.

    Aprs avoir fi ni de charger les donnes, il faut revenir sur le thread principal pour continuer le droulement de lapplication.

    Rappelez-vous, les lments du UIKit ne peuvent tre modifi s que sur le thread principal.

    Info

    Vous pouvez galement recourir une progress view qui est une barre de chargement classique. Le principe est le mme avec la gestion des threads. Cependant, il faut modifi er manuellement la valeur de la Progress view pour la voir bouger lcran.

    01_BlocN_iPhone.indd 4301_BlocN_iPhone.indd 43 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    449 Ajouter un fond dcran Hello iPuP9 Ajouter un fond dcran Hello iPuP

    Maintenant que nous avons parcouru la plupart des lments dinterface, que diriez-vous de passer la pratique et ajouter un fond dcran notre application iPhone HelloiPuP ?

    Tout dabord, il vous faut trouver une image, de prfrence avec ces dimensions : 320 460 pixels. Ensuite, glissez-la dans Xcode directement, dans le dossier Ressources, et cochez la case Copy items into destination groups folder.

    Figure 9.1 : Cochez pour copier l image dans le projet.

    Info

    La fentre de la Figure 9.1 doit obligatoirement saffi cher. Si ce nest pas le cas, cest que vous avez fait une erreur. Ne copiez pas limage dans le dossier ressources du Finder, mais bien directement dans Xcode.

    Pour affi cher limage en fond dans votre application, il faut passer par une UIImageView. Pour vous guider, nous allons examiner les deux mthodes : par le code, ou en utilisant Interface Builder. Faites une copie de votre projet, afi n davoir un projet par mthode.

    AJOUTER LIMAGE PAR LE CODE - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [helloLabel setText:@Hello iPuP];

    // quivalent : helloLabel.text = @Hello iPuP;

    CGRect imageFrame = [[UIScreen mainScreen] bounds];

    UIImageView *backgroundImageView = [[UIImageView alloc]

    initWithFrame:imageFrame];

    [backgroundImageView setImage:[UIImage imageNamed:@backgroundImage.png]];

    [window addSubview:backgroundImageView];

    [backgroundImageView release];

    [window makeKeyAndVisible];

    return YES;

    }

    01_BlocN_iPhone.indd 4401_BlocN_iPhone.indd 44 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    45 Ajouter un fond dcran Hello iPuP9

    On alloue limage view qui fera la taille de lcran. Son retain count vaut 1.

    En ajoutant limage view la fentre (en la mettant sur la pile des vues), vous la placez implicitement dans un tableau (NSArray) de vues (accessible avec [window subviews];). Ainsi, cest ce tableau qui va grer la mmoire de lobjet plac (augmentation du retain count de lobjet plac dans le tableau de 1). Ici, la fi n de linstruction, le retain count de backgroundImageView vaut donc 2.

    Puisque lon souhaite toujours ramener les retain count des objets 1, il faut release backgroun-dImageView (dcrmenter son retain count de 1). Retain count de backgroundImageView vaut main-tenant 1.

    Info

    Lorsque le retain count dun objet vaut 0, lemplacement mmoire allou pour cet objet est libr.

    Lancez ainsi lapplication. Vous remarquerez que lon naperoit plus le label. Ce qui est normal, car rappelez-vous, les vues sont empiles.

    Lorsque lapplication sexcute, le fi chier window.xib va tre dcod (cest un fi chier XML). Les lments dinterface placs laide dInterface Builder vont tre positionns. Ainsi, le label est plac par-dessus la vue. Ensuite, la mthode applicationDidFinishLaunching de lapplication delegate va tre appele. Dans cette mthode, nous allouons une UIImageView que nous plaons sur la pile des vues, au-dessus ! Notre image cache donc notre label... Pour y remdier, plusieurs solutions :

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [helloLabel setText:@Hello iPuP];

    // quivalent : helloLabel.text = @Hello iPuP;

    CGRect imageFrame = [[UIScreen mainScreen] bounds];

    UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:imageFrame];

    [backgroundImageView setImage:[UIImage imageNamed:@backgroundImage.png]];

    // Solution 1 :

    [window addSubview:backgroundImageView];

    [window sendSubviewToBack:backgroundImageView];

    // Solution 2 :

    //[window insertSubview:backgroundImageView atIndex:0];

    [backgroundImageView release];

    [window makeKeyAndVisible];

    return YES;

    } La premire solution consiste ajouter limage view la pile, puis lenvoyer tout en dessous de la pile.

    01_BlocN_iPhone.indd 4501_BlocN_iPhone.indd 45 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    46 Ajouter un fond dcran Hello iPuP9

    La deuxime solution vous permet de choisir lindex o ajouter la vue (la position dans la pile de vues, 0 tant le plus bas).

    En relanant votre application, votre label apparat enfi n ! Mais il nest pas trs visible en noir... Qu cela ne tienne, changeons la couleur du texte en blanc !

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [helloLabel setText:@Hello iPuP];

    // quivalent : helloLabel.text = @Hello iPuP;

    [helloLabel setTextColor:[UIColor whiteColor]];

    CGRect imageFrame = [[UIScreen mainScreen] bounds];

    UIImageView *backgroundImageView = [[UIImageView

    alloc] initWithFrame:imageFrame];

    [backgroundImageView setImage:[UIImage

    imageNamed:@backgroundImage.png]];

    [window insertSubview:backgroundImageView atIndex:0];

    [backgroundImageView release];

    [window makeKeyAndVisible];

    return YES;

    }

    Vous pouvez trs facilement choisir parmi des couleurs prd-fi nies, comme whiteColor, blackColor, blueColor, grayColor, yellowColor...

    Figure 9.2 : Un label sur un fond d cran.

    Vous pouvez galement mettre des couleurs plus prcisment :

    [helloLabel setTextColor:[UIColor colorWithRed:12.0/255.0 green:100.0/255.0

    blue:200.0/255.0 alpha:1.0]];

    AJOUTER LIMAGE AVEC INTERFACE BUILDER

    Pour ajouter limage de fond avec Interface Builder, faire comme suit :

    1. Repartir du projet que vous aviez lorsque vous avez commenc cette fi che.

    2. Ouvrir MainWindow.xib et glisser-dposer une UIImage-View sur la window. Dans longlet Frame de limage view ainsi dpose, remplir comme la Figure 9.3.

    Figure 9.3 : Modifi cation de la frame de l image view.

    01_BlocN_iPhone.indd 4601_BlocN_iPhone.indd 46 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    47 Ajouter un fond dcran Hello iPuP9

    3. Cliquer dans lInspecteur sur longlet Attributes et choisir limage (voir Figure 9.4).

    Figure 9.4 : Mettez l image dans l image view.

    Il faut maintenant repositionner correctement limage view dans la pile des vues. Pour cela, ranger par liste les lments de MainWindow.xib (voir de la Figure 9.5). Dplacer ensuite limage view depuis cette fentre en la glissant-dposant au-dessus du label, toujours dans la mme fentre (voir de la Figure 9.5).

    1

    2

    Figure 9.5 : Placez l image view en fond d cran.

    Une alternative est de passer par le menu Layout > Send Backward ou Layout > Send To Back.

    Enfi n, pour changer la couleur du texte du label, cliquez dessus. Ensuite, dans lInspecteur > onglet Attributes mettre la couleur du texte en blanc (voir de la Figure 9.6).

    1

    Figure 9.6 : Changez la couleur de la police.

    01_BlocN_iPhone.indd 4701_BlocN_iPhone.indd 47 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    4810 Ragir aux vnements10 Ragir aux vnements

    Vous savez placer diffrents lments dinterface. Toutefois, si vous placez un bouton, il ne fait pas grand-chose...

    Perons le mystre des boutons. Ici encore, deux solutions : passer par le code, ou utiliser Interface Builder. Nous allons voir les deux mthodes possibles.

    UTILISER LE CODERecrons un nouveau projet Window Based Application. Nommez-le EventHandling.

    Faites ensuite Files > New File. Choisissez iPhone OS > Cocoa Touch Class > UIViewController Subclass et laissez coch With XIB for user interface. Nommez cette classe RootViewController.

    Rangez vos fi chiers comme la Figure 10.1. Pour ajouter un dossier, cliquez du bouton droit sur Classes puis Add > New Group.

    Figure 10.1 : Rangement des fi chiers.

    Dans le code de votre application delegate, modifi ez le fi chier ainsi :

    EventHandlingAppDelegate.h#import

    #import RootViewController.h

    @interface EventHandlingAppDelegate : NSObject {

    UIWindow *window;

    RootViewController *rootViewController;

    }

    @property (nonatomic, retain) IBOutlet UIWindow *window;

    @property (nonatomic, retain) RootViewController *rootViewController;

    @end

    01_BlocN_iPhone.indd 4801_BlocN_iPhone.indd 48 18/08/10 12:4718/08/10 12:47

  • Proprit de Albiri Sigue customer 27921 at Fri Mar 11 19:30:39 +0100 2011

    49 Ragir aux vnements10

    EventHandlingAppDelegate.m#import EventHandlingAppDelegate.h

    @implementation EventHandlingAppDelegate

    @synthesize window;

    @synthesize rootViewController;

    - (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    RootViewController *viewController = [[RootViewController alloc]

    initWithNibName:@RootViewController bun