Transcript
Page 1: "Introduction aux Developements iOS" in Three hours
Page 2: "Introduction aux Developements iOS" in Three hours

2

Page 3: "Introduction aux Developements iOS" in Three hours

3

Laurent Meurisse•Conception et la validation d’une application iPhone pour une grande entreprise•Dev d’une application trafficWave•Coaching agile (entreprise & mobile)

twitter @laurentmeurisse

Mélanie BessagnetConception et développement d’applications iPhone ou iPad.

Smartsy, FidelPass, L’Oréal.twitter @mbessagnet

Page 4: "Introduction aux Developements iOS" in Three hours

ekito /offre mobilité

★ Accompagnement dans toutes les phases des projets

➡ Définition de stratégie et spécifications

➡ Ergonomie & design

➡ Architecture & développement

➡ Distribution

★ Multi plateforme

➡ iOS (iPhone & iPad), Android, Windows Phone, web mobile

★ Intégration dans l’entreprise

➡ Sécurité, gestion de flotte, intégration SI

4

Page 5: "Introduction aux Developements iOS" in Three hours

ekito /Projets d’entreprise

★ Application iPad pour un grand acteur de l’aéronautique

➡ Consultation de documents marketing pour les visiteurs de salons

➡ Conseils, conception & développement

★ Application iPad pour un opérateur téléphonique

➡ Le management avait besoin d’un « dashboard » pour consulter l’état du réseau avec +80.000 antennes

➡Conseils, conception, ergonomie/design & développement

5

Page 6: "Introduction aux Developements iOS" in Three hours

ekito /Projets grand public

★ « Smartsy » (iPhone, iPad & Android)➡Applications réalité augmentée pour

consulter du contenu multimédia en accompagnement de support physique

➡ Reconnaissance d’images, site web, API

➡Distribution dans l’App Store d’Apple et le Market de Google

★ « Fidelpass » (iPhone)

➡Solution de carte de fidélité virtuelle pour smartphone

➡Mode déconnecté, génération de codes

6

Page 8: "Introduction aux Developements iOS" in Three hours

➡ introduction

8

Page 9: "Introduction aux Developements iOS" in Three hours

➡ licence développeur

➡ un iPhone ou iPad

➡ un Mac

➡ La dernière version du SDK

9

que me faut t'il pour démarrer ?

Page 10: "Introduction aux Developements iOS" in Three hours

➡ être habile en design IHM

➡ avoir des bonnes idées

➡ avoir quelques soirées de disponibles

➡ constituer une communauté d’early adopters

10

qu'est ce que je dois savoir faire ?

Page 11: "Introduction aux Developements iOS" in Three hours

partie 1

11

➡ iOS

➡ excellence ergonomique

➡App Store

succès d’iOS

Page 12: "Introduction aux Developements iOS" in Three hours

➡ iOS

12

partie 1

Page 13: "Introduction aux Developements iOS" in Three hours

13

Page 14: "Introduction aux Developements iOS" in Three hours

★ Système d’exploitation de l’iPhone/iPod Touch/iPad

★ Basé sur Mac OS X

★ Offre de nombreuses possibilités d’applications

★ Nécessite aucune notion préalable du développement Mac OS X

14

Page 15: "Introduction aux Developements iOS" in Three hours

★ Architecture iOS

15

OSX kernelpower

management

Core OS

réseau

Collection Core Location

Core Services

Carnet d'adresse

threading file system preference

SQLite

Core Audio JPEG/PNG...

Media layer

PDF

Video Quartz

Multi-touch Webkit

Cocoa Touch

accéléomètre

localisationappareil photo

baseBand bootLoader firmware

Page 16: "Introduction aux Developements iOS" in Three hours

16

ça à l'air très compliqué !!!

Page 17: "Introduction aux Developements iOS" in Three hours

➡ excellence ergonomique

17

partie 1

Page 18: "Introduction aux Developements iOS" in Three hours

➡ le doigt est roi

18

Page 19: "Introduction aux Developements iOS" in Three hours

le doigt est roi

★ iOS est déployé sur des plateformes tactiles.

➡ De nombreuses possibilités de gestes.

➡ Une application trop complexe n’est pas utilisable

➡ L’ergonomie doit être l’une des préoccupations principales.

19

Page 20: "Introduction aux Developements iOS" in Three hours

le doigt est roi

★ L’iOS est une rupture par rapport aux modèles ergonomiques traditionnels

20

Page 21: "Introduction aux Developements iOS" in Three hours

➡ patterns utilisateur

21

Page 22: "Introduction aux Developements iOS" in Three hours

★ Qu’est ce qu’un pattern utilisateur ? ➡ ex. : Possibilité de naviguer dans une

structure hiérarchique, en revenant au départ facilement

➡ ex. : possibilité de naviguer entre différentes partie sans perdre le focus

22

Page 23: "Introduction aux Developements iOS" in Three hours

➡ les principaux éléments

23

Page 24: "Introduction aux Developements iOS" in Three hours

Navigation par onglet

24

Page 25: "Introduction aux Developements iOS" in Three hours

Les listes

25

Page 26: "Introduction aux Developements iOS" in Three hours

La navigation entre vues

26

Page 27: "Introduction aux Developements iOS" in Three hours

...

27

h,p://p,rns.com/

Page 28: "Introduction aux Developements iOS" in Three hours

➡ La règle des 44 pixels

28

Page 29: "Introduction aux Developements iOS" in Three hours

La règle des 44 pixels

29

Page 30: "Introduction aux Developements iOS" in Three hours

➡ la gestuelle

30

Page 31: "Introduction aux Developements iOS" in Three hours

31

Page 32: "Introduction aux Developements iOS" in Three hours

➡ Native ou WebApp ?

32

Page 33: "Introduction aux Developements iOS" in Three hours

★ Application native

➡ Application conçue spécifiquement pour une plateforme en utilisant le SDK propre à celle ci.

★ Web app

➡ Application réalisée via un site Web optimisé pour mobile

33

Page 34: "Introduction aux Developements iOS" in Three hours

WebApp

34

Quels sont les avantages ?

➡ Indépendance à Apple.

➡ Indépendance à la plateforme.

➡Mise à jour facilitée.

➡Coût de développement.

➡Transaction e-commerce

Page 35: "Introduction aux Developements iOS" in Three hours

WebApp

35

➡Moins de visibilité.

➡Difficile à monnayer.

➡Dépendance à la connectivité.

➡ Expérience utilisateur.

➡Consommation des ressources.

Quels sont les inconvéniants ?

Page 36: "Introduction aux Developements iOS" in Three hours

iOS Human interface Guideline

http://developer.apple.com/library/IOS/documentation/UserExperience/Conceptual/MobileHIG/MobileHIG.pdf

36

Page 37: "Introduction aux Developements iOS" in Three hours

Quelques principes de base

➡ Minimiser la quantité d’information.

➡ Respecter la fluidité de l’appareil.

➡ Ne pas offrir trop de réglages à l’utilisateur.

➡ Demander de sauvegarder seulement quand c’est nécessaire

➡ Eviter les écrans «modals».

➡ Démarrer rapidement

★ Toujours faire au plus simple !37

Page 38: "Introduction aux Developements iOS" in Three hours

➡ Respecter les gestes de bases.

➡ utiliser des gestes compliqués comme «raccourcis», mais en permettant d’effectuer l’action autrement.

➡ sur iPad, possibilité d’utiliser plusieurs doigts

➡ en général éviter de définir des nouveaux gestes

38

Page 39: "Introduction aux Developements iOS" in Three hours

➡ Programme, Certificat, Profile

39

partie 1

Page 40: "Introduction aux Developements iOS" in Three hours

40

Page 41: "Introduction aux Developements iOS" in Three hours

iOS Programmes

★ iOS developer program (99$)• 100 devices (dev, tests)

➡ individuelle• nom de la personne sur l’AppStore

• un seul développeur

➡Company• nom de l’entreprise (justification nécessaire)

• nombre illimité de développeurs

• 3 rôles (agent, admin, member)

➡ attention on ne peut pas basculer d’une option à l’autre

41

Page 42: "Introduction aux Developements iOS" in Three hours

iOS Programmes

★ iOS enterprise program (299 $)➡ inHouse deployment

➡Mobile Device Management• gestion de la flote des devices iOS

➡ impossibilité de déployer sur l’AppStore

42

Page 43: "Introduction aux Developements iOS" in Three hours

Certificats

★ Certificats➡Certificat développeur

• unique pour chaque développeur

• lié à une machine

➡Certificat de distribution• un seul par programme

43

Page 44: "Introduction aux Developements iOS" in Three hours

Profiles

★ Profile de développement➡ lié à l’appli (AppId)

➡ lié à un certif de dev (pour chaque dév)

➡ lié aux devices

➡ un seul par développeur

★ Profile de distribution

➡ lié à l’appli

➡ lié à un certif de distribution

➡deux modes de distribution• app store

• adhoc

• entreprise 44

Page 45: "Introduction aux Developements iOS" in Three hours

➡ publication

45

Page 46: "Introduction aux Developements iOS" in Three hours

AppStore

➡ Il y a t’il de la place par rapport à mon application?

➡ quel prix pour les applications concurrentes ?

➡ Version gratuite / Version Payante

➡ Baisse de prix d’application (ou gratuite) .. 2h à 4h

➡ le nombre de téléchargement influes sur le classement

46

Page 47: "Introduction aux Developements iOS" in Three hours

sur l’AppStore

★ Pour publier son application, trois étapes :➡ Rédaction des détails de l’application.

➡Upload de l’exécutable.

➡Validation par Apple.

➡ La période de validation passe par un certain nombre d’états, variables suivant les cas.

★ Si l’application n’est pas validée, le développeur reçoit automatiquement un e-mail d’explications.

47

Page 48: "Introduction aux Developements iOS" in Three hours

★ De nombreuses règles sont à respecter pour qu’une application soit validée par Apple. En voici les plus courantes :

➡ Aucun crash.

➡ Pas de fuite mémoire.

➡ Description conforme à l’application.

➡ Révéler toute fonctionnalité cachée à la validation.

➡ Respecter les droits d’auteur.

➡ Uniquement utiliser les classes documentées d’Apple.

➡ Notifier les changements d’état du réseau.

➡ Apple Human Interface Guidelines.

48

★ Attention, respecter les Guideline Apple

Page 49: "Introduction aux Developements iOS" in Three hours

➡ beta testing

49

Page 50: "Introduction aux Developements iOS" in Three hours

Tester

★ Audience / Logging➡ Flurry

➡TestFlyApp• Session

• Questions in-App

• Crash reports

• Checkpoints

• Remote logging

• in-App updates

50

Page 51: "Introduction aux Developements iOS" in Three hours

pour tester

★ Autre solution pour distribuer une application iOS, la distribution Ad Hoc.

➡ Échelle réduite (maximum 100 appareils).

➡ Aucune validation par Apple.

➡ Inscription à l’iOS Developer Program également obligatoire.

51

Page 52: "Introduction aux Developements iOS" in Three hours

➡ MDM

52

Page 53: "Introduction aux Developements iOS" in Three hours

53

Page 54: "Introduction aux Developements iOS" in Three hours

54

Page 55: "Introduction aux Developements iOS" in Three hours

55

Page 56: "Introduction aux Developements iOS" in Three hours

56

Page 57: "Introduction aux Developements iOS" in Three hours

➡ iTunes Connect

57

Page 58: "Introduction aux Developements iOS" in Three hours

58

Page 59: "Introduction aux Developements iOS" in Three hours

partie 2

59

➡Concevoir

➡ L’environnementde developpement

➡ Bases de l’objective-C

➡ Les nouveautes d’iOS 5

développer

Page 60: "Introduction aux Developements iOS" in Three hours

➡ concevoir

60

partie 2

Page 61: "Introduction aux Developements iOS" in Three hours

61

je vais devoir tailler mon crayon !!

h,p://iphonemockup.lkmc.ch

Page 62: "Introduction aux Developements iOS" in Three hours

62

Page 63: "Introduction aux Developements iOS" in Three hours

Quelques Mockup

★ balsamiq

★ omniGraffle

★ Adobe Illustrator

★ le post it iphone

63

Page 64: "Introduction aux Developements iOS" in Three hours

➡ développement agile

64

Page 65: "Introduction aux Developements iOS" in Three hours

Développements Agiles

➡ deux tendances à connaitre

• lean startup

• scrum

65

Page 66: "Introduction aux Developements iOS" in Three hours

lean startup

66

Page 67: "Introduction aux Developements iOS" in Three hours

Développements Agiles

➡ ne pas surdimentioner la richesse de l’application (priorisation par la valeur), faire des user stories

➡ faire des livraisons et des tests souvent

➡ si on doit s’interfacer : bien définir ! (prévoir un niveau d’information minimal)

67

Page 68: "Introduction aux Developements iOS" in Three hours

68

USERSTORY

USERSTORY

scrum

Page 69: "Introduction aux Developements iOS" in Three hours

69

J'enregistre une réservation (carte d'embarquement)

Je consulte l'actualité d'un vol AF

Je me connecte via le n° FlyingBlue

Je consulte la liste de mes réservations

Je consulte le détail d'une réservation

Je consulte les passagers d'une réservation

Page 70: "Introduction aux Developements iOS" in Three hours

70

USERSTORY

quelle est

sa valeur

métier?

pour quel

effort à

fournir?

13

89

Page 71: "Introduction aux Developements iOS" in Three hours

71

13 1448 233

34 23355 5589 144

144 89

ordr

e de

dev

Je consulte le détail d'une réservation

J'enregistre une réservation (carte d'embarquement)

Je consulte la liste de mes réservations

Je me connecte via le n° FlyingBlue

Je consulte l'actualité d'un vol AF

Je consulte les passagers d'une réservation

Page 72: "Introduction aux Developements iOS" in Three hours

72

RELEASE 1 RELEASE 2

SP

RIN

T 1

SP

RIN

T 2

SP

RIN

T 3

SP

RIN

T 4

SP

RIN

T 5

SP

RIN

T 6

PRODPROD

TESTSTESTS

TESTS TESTS

DE

MO

SP

RIN

T 1

DE

MO

SP

RIN

T 2

DE

MO

SP

RIN

T 3

TESTS

DE

MO

SP

RIN

T 4

DE

MO

SP

RIN

T 5

Page 73: "Introduction aux Developements iOS" in Three hours

➡ base de l’Objective C

73

partie 2

Page 74: "Introduction aux Developements iOS" in Three hours

➡ écrire une classe, une méthode, un protocol

74

Page 75: "Introduction aux Developements iOS" in Three hours

écrire une classe

75

➡ implémentation➡ interface

#import <Foundation/Foundation.h>

@interface Voiture : NSObject { //déclaration des variables NSString *immat; NSInteger *gear; NSInteger *speed; }-(int)multiply:(int)a to:(int)b ;-(int)square:(int)a ;

//déclaration des méthodes@end

#import "Voiture.h"

@implementation Voiture

// implémentation des méthodes

@end

Page 76: "Introduction aux Developements iOS" in Three hours

écrire une classe

76

Page 77: "Introduction aux Developements iOS" in Three hours

écrire une méthode

77

-(int)multiply:(int)a to:(int)b { return a*b;}

-(int)square:(int)a { return [self multiply:a to:a];}

➡ [object doSomething]; au lieu de object.doSomething();

Page 78: "Introduction aux Developements iOS" in Three hours

écrire un protocol

78

#import <Foundation/Foundation.h>

@protocol Vehicule <NSObject>

@optional

-(void)klaxonner;-(void)baisserVitre;-(void)leverVitre;

@required

-(void) demarrer ;-(void) arreter;

@end

Page 79: "Introduction aux Developements iOS" in Three hours

réaliser un protocol

79

#import <Foundation/Foundation.h>#include "Vehicule.h"

@interface Voiture : NSObject <Vehicule> { //déclaration des variables NSString *immat; NSInteger *gear; NSInteger *speed; }-(int)multiply:(int)a to:(int)b ;-(int)square:(int)a ;-(void) demarrer ;

//déclaration des méthodes@end

#import "Voiture.h"

@implementation Voiture

// implémentation des méthodes

-(int)multiply:(int)a to:(int)b { return a*b;}

-(int)square:(int)a { return [self multiply:a to:a];}

-(void) demarrer { NSLog(@"Vrooum");}

-(void) arreter { NSLog(@"...");}

@end

Page 80: "Introduction aux Developements iOS" in Three hours

➡ Cocoa Fondation

80

Page 81: "Introduction aux Developements iOS" in Three hours

Cocoa Fondation

➡ Framework de base pour le développement Mac OS X et iOS.

➡ Importation dans un projet :

➡ (Par défaut dans un nouveau projet Xcode)

81

#import <Foundation/Foundation.h>

Page 82: "Introduction aux Developements iOS" in Three hours

Cocoa Foundation

★ Objets de base :

➡ NSString : Chaîne de caractères.

➡ NSArray : Tableau non modifiable.

➡ NSDictionnary : Structure fixe d’objets référencés par une clé unique.

➡ Mot clé Mutable : Indique si une instance de classe peut être modifiée après création.

➡Exemple : NSMutableArray et NSMutableDictionnary.

82

Page 83: "Introduction aux Developements iOS" in Three hours

➡ gestion de la mémoire

83

Page 84: "Introduction aux Developements iOS" in Three hours

★ Destruction d’un objet :➡ L’objet créé peut être détruit de deux

façons différentes.

➡ Autolibération : La libération de la mémoire allouée est gérée par le système. (autorealease)

➡ Libération : la libération est laissée aux soins de l’utilisateur. (release).

84

Page 85: "Introduction aux Developements iOS" in Three hours

Allocation, destruction, autolibération★ Par défaut, l’utilisateur doit s’occuper de la

libération des objets qu’il alloue :

★ Des fois, il est indispensable de laisser le système s’en occuper :

➡ retain, release et autorelease sont des méthodes de NSObject

★85

-(void)direBonjour{ NSString *maPhrase = [[NSString alloc] initWithString:@"bonjour"]; NSLog(@"%@",maPhrase);! [maPhrase release];}

-(NSString *)creerBonjour{! NSString *maPhrase = [[[NSString alloc] initWithString:@"bonjour"] autorelease];! return maPhrase;}

Page 86: "Introduction aux Developements iOS" in Three hours

Variable d’instance

★ Prototypage des variables d’instance :➡ Ajoute une couche d’abstraction pour la

gestion de la mémoire.

➡ Réduit le nombre de lignes de code.

➡ Garantie l'intégrité des données.

★ Dans l’interface :

★ Dans l’implémentation :

86

@property (nonatomic, retain) Moteur *moteur;

@synthesize moteur;

Page 87: "Introduction aux Developements iOS" in Three hours

➡retain;

➡assign :

retain, assign

87

Page 88: "Introduction aux Developements iOS" in Three hours

★ La règle du comptage par référence est la suivante :

➡ On incrémente le compteur lorsque l’on fait appel aux méthodes +alloc, -retain ou -copy de l’objet.

➡ On décrémente le compteur lorsque l’on fait appel à la méthode - release de l’objet.

➡ Lorsque le compteur atteint 0, l’objet et donc son espace mémoire alloué sont libérés automatiquement.

88

Page 89: "Introduction aux Developements iOS" in Three hours

➡ UIKit

89

Page 90: "Introduction aux Developements iOS" in Three hours

UIKit

➡ Framework supplémentaire pour le développement iOS. Ajoute les fonctions nécessaires pour l’interaction tactile.

➡ Importation dans un projet :

➡ (Par défaut dans un nouveau projet Xcode)

90

#import <UIKit/UIKit.h>

Page 91: "Introduction aux Developements iOS" in Three hours

91

UIButton

Page 92: "Introduction aux Developements iOS" in Three hours

➡ Connections Synchrone et Asynchrone

92

Page 93: "Introduction aux Developements iOS" in Three hours

★ Requête synchrone➡ application en attente du résultat

➡ application non réactive, figée

urlString = [NSString stringWithFormat:@"http://webaddress/trafficservlet?sendTagWave=1&id=%@&posLo=%@&posLa=%@&version=1&course=%@&idSession=%@", ! ! ! ! [userId stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],! ! ! ! [textLongitude stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],! ! ! ! [textLatitude stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],! ! ! ! ! ! ! ! [textCourse stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]! ,! ! ! ! [textIdSession stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]! ! ! ! ];!! NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];

93

Page 94: "Introduction aux Developements iOS" in Three hours

★ Requête asynchrone

- (void)viewDidLoad {[super viewDidLoad];

! // Effectuer la requête dans un autre thread ! [NSThread detachNewThreadSelector:@selector (chargerXML) toTarget:self withObject:nil]; }- (void)chargerXML { ! NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; ! // Faire la requête ! [self effectuerRequete]; ! // Notifier le thread principal que l’on a fini ! [self performSelectorOnMainThread:@selector (chargementFini) withObject:nil waitUntilDone:NO]; ! [pool release]; }

94

Page 95: "Introduction aux Developements iOS" in Three hours

➡ notifications Push

95

Page 96: "Introduction aux Developements iOS" in Three hours

notification Push

➡ Il permet d’afficher des badges, alertes et sons sans que l’application ne tourne

➡ Il ne nécessite pas de grosses infrastructures serveur

➡ Il préserve la durée de vie de la batterie (par rapport aux connections TCP/IP)

96

Page 97: "Introduction aux Developements iOS" in Three hours

➡ Cartographie et géolocalisation

97

Page 98: "Introduction aux Developements iOS" in Three hours

★ Pouvoir localiser sa position et son orientation sur une carte nécessite l’utilisation de deux frameworks :➡ CoreLocation — permettant d'utiliser les

capacités de géolocalisation de l’iPhone

➡ MapKit — permettant d’insérer des cartes géographiques complètes dans une application.

98

Page 99: "Introduction aux Developements iOS" in Three hours

CoreLocation

★ Framework pour gérer la localisation et l’orientation. ➡CLLocation

➡CLLocationManager

★ Pas d’interface utilisateur.

★ Utilise trois approches pour se situer.

➡GPS

➡Wifi

➡ Réseau Téléphonique

★ Plus la localisation se veut précise, plus elle est coûteuse en énergie.

99

Page 100: "Introduction aux Developements iOS" in Three hours

CLLocationManagerDelegate

★ // Répond aux changements de position - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;

100

Page 101: "Introduction aux Developements iOS" in Three hours

➡ pattern delegate

101

Page 102: "Introduction aux Developements iOS" in Three hours

102

Page 103: "Introduction aux Developements iOS" in Three hours

delegation

103

Page 104: "Introduction aux Developements iOS" in Three hours

➡ développement serveur

104

Page 105: "Introduction aux Developements iOS" in Three hours

exemple de plan d’architecture global

105

serveur BACKEND

cron

cache

parser

xml

rss

...

23

connecteur

eSite

14services

notification

push

json

5

Page 106: "Introduction aux Developements iOS" in Three hours

➡ L’environnement de développement XCode

106

partie 2

Page 107: "Introduction aux Developements iOS" in Three hours

107

Paramètres  de  compilaBon

Projet

Page 108: "Introduction aux Developements iOS" in Three hours

108

Page 109: "Introduction aux Developements iOS" in Three hours

➡ Nouveautés d’iOS 5

109

partie 2

Page 110: "Introduction aux Developements iOS" in Three hours

Nouveautés iOS 5

★ ARC

★ Storyboards

★ UIKit Customization

★ iCloud

★ Twitter Integration

★ Nombreux changements dans les APIs

110

Page 111: "Introduction aux Developements iOS" in Three hours

ARC (Automatic Reference Counting)

➡ARC s'occupe des libérations mémoire à la place du développeur, plus de gestion manuelle de la mémoire.

➡ Le code est allégé et la tâche du développeur est simplifié.

➡Avec ARC activé, le compilateur insère automatiquement les méthodes de retain, release et autorelease à la bonne place dans le code.

111

Page 112: "Introduction aux Developements iOS" in Three hours

StoryBoards

112

Page 113: "Introduction aux Developements iOS" in Three hours

UIKit Customization

➡ Pour sortir du lot, une application, en plus d'être fonctionnelle, doit avoir un design attrayant.

➡ La plupart des applications majeures de l'AppStore utilisent des éléments d'interfaces customisés.

➡ Avant la sortie d'iOS 5, la tâche n'était pas du tout aisée. Il fallait très souvent de nombreuses lignes de code pour changer l'apparence d'un élément standard.

➡ A présent, Apple a donné accès à de nouvelles méthodes qui facilitent ce travail.

113

Page 114: "Introduction aux Developements iOS" in Three hours

partie 3

114

➡Hello World

pratique

Page 115: "Introduction aux Developements iOS" in Three hours

code de l’appli

115

h,p://db.,/pbEhiProbasé sur le tutoriel officiel d'Apple "Your first iOS app"


Recommended