desarrollo de apps para ios aplicaciones universales
TRANSCRIPT
![Page 1: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/1.jpg)
© Santiago Pavón - UPM-DIT
Desarrollo de Apps para iOSAplicaciones Universales
IWEB,LSWC 2013-2014Santiago Pavón
ver: 2012.12.13 p1
1
![Page 2: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/2.jpg)
© Santiago Pavón - UPM-DIT
Objetivo
Adaptar nuestras aplicaciones para que ejecuten tanto en un iPhone y como en un iPad.
2
![Page 3: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/3.jpg)
© Santiago Pavón - UPM-DIT
AlternativasUna única aplicación Universal que se ejecuta tanto en iPhone como en iPad.
Crear dos aplicaciones distintas pero que comparten el mismo código.
Realizar dos desarrollos totalmente independientes.
- Para todas estas opciones, el modelo (La M del MVC) no debería cambiar.
3
![Page 4: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/4.jpg)
© Santiago Pavón - UPM-DIT
Diferencias iPhone -iPadPantallas de diferente tamaño.
- En el iPad cabe más información.
- Debemos adaptar el tipo de navegación para cada dispositivo.
Disponemos de más controladores en un iPad:
- Split View Controller, Popover Controller
En un iPad:
- hay nuevas formar de presentar pantallas modales
- hay más tipos de transiciones.
. . .
4
![Page 5: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/5.jpg)
© Santiago Pavón - UPM-DIT
Cambios a RealizarCambiar la configuración del proyecto.
- iOS Application Target - Devices
iPhone, iPad o Universal
- iPhone/iPod y iPad Deployment Info
Crear un storyboard para iPhone y otro para iPad
Crear iconos y splash imágenes para cada tipo de dispositivo
Refactorizar el código.
Adaptar otros recursos.
. . .
5
![Page 6: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/6.jpg)
© Santiago Pavón - UPM-DIT
6
![Page 7: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/7.jpg)
© Santiago Pavón - UPM-DIT
En aplicaciones universales o que compartan código:- Refactorizar para no repetir código.
Para soportar dispositivos con distintas versiones de iOS, y por tanto distintos APIs.- Preguntar si un objeto responde a un método determinado[obj respondToSelector:@selector(metodo)];
Para conocer el tamaño de la pantallaCGRect rect = [[UIScreen mainScreen] bounds];
Para saber que tipo de dispositivo tenemos:if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
Para saber si mi controlador está embebido en un SplitVCif (self.splitViewController) {}
Adaptar Código
7
![Page 8: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/8.jpg)
© Santiago Pavón - UPM-DIT
Un iPad puede mostrar en pantalla varios VC simultameamente.- Para saber si un VC está visible (en pantalla) o no, se
puede consultar el valor de la propiedad window. Si el VC no está visible valdrá nil.
. . .
8
![Page 9: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/9.jpg)
© Santiago Pavón - UPM-DIT
Ejemplo de Refactorización
Adaptar un método para que dependiendo del tipo de dispositivo, iPhone o iPad, se configure una propiedad o se dispare un segue.
- Usando el IDIOM (UIDevice.h)if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
9
![Page 10: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/10.jpg)
© Santiago Pavón - UPM-DIT
- (void)nextStep{ if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { UIViewController *vc = [self.splitViewController.viewControllers lastObject]; vc.msg = @"Hello"; } else { [self.performSegueWithIdentifier:@"ShowMsg" sender:self]; }}
10
![Page 11: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/11.jpg)
© Santiago Pavón - UPM-DIT
Ejemplo de Refactorización
Usar herencia:
- Derivar de una clase base una versión para iPad y otra para iPhone.
La clase base contiene todo el código común.Las clases derivadas sobreescriben los métodos que son diferentes para ellas.
- Desde los storyboards del iPhone y del iPad se hará referencia a la clase derivada que corresponda.
11
![Page 12: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/12.jpg)
© Santiago Pavón - UPM-DIT
VC_Base
VC_iPadVC_iPhone
12
![Page 13: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/13.jpg)
© Santiago Pavón - UPM-DIT
Recursos
13
![Page 14: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/14.jpg)
© Santiago Pavón - UPM-DIT
IconosEscritorio:- iPhone 3: Icon.png (57x57 px)- iPhone 4 Retina: [email protected] (114x114 px)- iPad: Icon-72.png (72x72 px)- iPad Retina: [email protected] (144x144 px)
Spotlight:- iPhone 3: Icon-Small.png (29x29 px)- iPhone 4 Retina: [email protected] (58x58 px)- iPad: Icon-Small-50.png (50x50 px)- iPad Retina: [email protected] (100x100 px)
Settings:- iPhone 3: Icon-Small.png (29x29 px)- iPhone 4 Retina: [email protected] (58x58 px)- iPad: Icon-Small.png (29x29 px)- iPad Retina: [email protected] (58x58 px)
iTunes (png sin la extensión):- iTunesArtWork: 512x512 px- iTunesArtWork@2x: 1024x1024 px
14
![Page 15: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/15.jpg)
© Santiago Pavón - UPM-DIT
Launch ImagesDefault.png (320x480 px)
- iPhone 3
[email protected] (640x960 px)
- iPhone Retina 3.5-inch
[email protected] (640x1136 px)
- iPhone Retina 4-inch
Default-Portrait-ipad.png (768x1004 px)Default-Landscape-ipad.png (1024x748 px)
- iPad
[email protected] (1536x2008 px)[email protected] (2048x1496 px)
- iPad Retina
15
![Page 16: Desarrollo de Apps para iOS Aplicaciones Universales](https://reader036.vdocuments.site/reader036/viewer/2022070402/62c04216f58fc43451381dd6/html5/thumbnails/16.jpg)
© Santiago Pavón - UPM-DIT
16