SlideShare uma empresa Scribd logo
1 de 20
10 - ANIMACIÓN Y
             QUARTZCORE
Curso de desarrollo de aplicaciones móviles para iPhone y iPad

                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
CONTENIDO


• Introducción

• Animaciones

• QuartzCore
CONTENIDO


   • Introducción

• Animaciones

• QuartzCore
INTRODUCCIÓN


• iOSes una de ls plataformas móviles más fluidas en cuanto a
 animaciones y transiciones se refiere

• Todas
      estas animaciones son gestionadas a través de un
 framework llamado QuartzCore
CONTENIDO


• Introducción

   • Animaciones

• QuartzCore
ANIMACIONES


• Uno de los puntos fundamentales de QuartzCore son
 precisamente la animación de vistas

• UIKitprovee de un interfaz para la animación de los cambios
 en ciertos campos de las vistas de manera sencilla
ANIMACIONES 2

• Así   UIView permite la animación de los siguientes campos:
  •   frame

  •   bounds

  •   center

  •   tranform

  •   alpha

  •   backgroundColor

  •   contentStretch
ANIMACIONES 3
• Paraanimar cambios en estos campos la clase UIView provee
 de varios métodos de clase

• La   manera más sencilla de manejarlo es usando bloques

  • Los    bloques son funciones anónimas y se indican con el
       caracter ^ en lugar del nombre

 [UIView animateWithDuration:1 animations:^{
         // Actualizamos los campos que queramos
         view.frame =CGRectMake(0, 0, 320, 100);

 }];
ANIMACIONES 4


• Existen métodos más complejos que permiten, por ejemplo
 elegir el tipo de animación

    [UIView animateWithDuration:1.0
                          delay:2.0
                        options:UIViewAnimationCurveEaseIn
                     animations:^{
                         // Actualizamos las propiedades a animar
                     }
                     completion:^(BOOL finished) {
                         // Código a ejecutar al finalizar la animación
                     }];
ANIMACIONES 5

• Podemos   definir también la animación sin el uso de bloques


   [UIView beginAnimations:@"Nombre de la Animación" context:nil];

   // Configuramos las animaciones
   [UIView setAnimationDuration:1.0];
   [UIView setAnimationDelay:2.0];

   // Variamos los campos que queremos animar
   view.alpha = 0.4;

   // Lanzamos la aminación
   [UIView commitAnimations];
ANIMACIONES 6



• Podemos aplicar estas animaciones a cualquier tipo de vista y
 podemos combinar animaciones de manera que consigamos
 un aspecto atractivo para los cambios en la interfaz
CONTENIDO


• Introducción

• Animaciones

   • QuartzCore
QUARTZCORE


• QuartzCore   es el framework que soporta todas las
 animaciones

• Alcontrario del resto de los frameworks posee gran parte de
 su funcionalidad programada en C
QUARTZCORE 2



• Es
   un framework heredado de las primeras versiones de Mac
 OS X

• Emplea   OpenGL para realizar todas las animaciones
QUARTZCORE 3


• Posee una gran flexibilidad por lo que permite tanto dibujar
 sobre la pantalla así como sobre imágenes o ficheros PDF

• Permiteel dibujado de rutas, imagenes vectoriales, sombras,
 patrones, aplicar transformaciones 3D, etc

 • Es   por tanto uno de los frameworks más complejo
QUARTZCORE 4
• Para   usarlo debemos incluir el framework desde el Xcode
QUARTZCORE 5

• Veamos  el código para el dibujado de este gradiente sobre
 una elipse:
// Obtiene el contexto en pantalla sobre el cual dibujará
CGContextRef context = UIGraphicsGetCurrentContext();

// Coloca el contexto en la posición de dibujado
UIGraphicsPushContext(context);

// Almacena los colores para el gradiente
CGFloat colors[] = {
    1.0, 1.0, 1.0, 1.0,
    0.0, 0.5, 1.0, 0.8};

// Emplearemos RGB como espacio de colores
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
// Creamos el gradiente
CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
// Liberamos el espacio de colores
CGColorSpaceRelease(baseSpace), baseSpace = NULL;

CGRect rect = CGRectMake(50, 60, 100, 60);
// Almacena el estado de dibujado, para preparar el dibujado
CGContextSaveGState(context);
// Añade una elipse al contexto
CGContextAddEllipseInRect(context, rect);
// Hace que la elipse sea un clip (recorte)
CGContextClip(context);

CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

// Dibuja el gradiente sobre la elipse
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
// Liberamos el gradiente
CGGradientRelease(gradient), gradient = NULL;

// restaura el estado de dibujado
CGContextRestoreGState(context);

// Dibuja el borde de la elipse
CGContextAddEllipseInRect(context, rect);
CGContextDrawPath(context, kCGPathStroke);

// Retorna al contexto de dibujado anterior
UIGraphicsPopContext();
QUARTZCORE 7


• Como   vemos es algo complejo de manejar

 • Sin
     embargo es un framework muy bien documentado y
  con ejemplos

 • Podemos   acceder a la referencia online
FIN

Mais conteúdo relacionado

Destaque (6)

Ios.s11
Ios.s11Ios.s11
Ios.s11
 
Ios.s12
Ios.s12Ios.s12
Ios.s12
 
Ios.s9
Ios.s9Ios.s9
Ios.s9
 
Ios.s13
Ios.s13Ios.s13
Ios.s13
 
Ios.s3
Ios.s3Ios.s3
Ios.s3
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 

Semelhante a Animación y QuartzCore en iOS

Semelhante a Animación y QuartzCore en iOS (20)

CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKit
 
Alice12
Alice12Alice12
Alice12
 
Practica 12 alice
Practica 12 alicePractica 12 alice
Practica 12 alice
 
Practica 12
Practica 12Practica 12
Practica 12
 
Practica 12 alice
Practica 12 alicePractica 12 alice
Practica 12 alice
 
Practica 12 alice
Practica 12 alicePractica 12 alice
Practica 12 alice
 
Sesion uno azuay
Sesion uno azuaySesion uno azuay
Sesion uno azuay
 
Practica 12
Practica 12Practica 12
Practica 12
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
PRACTICA 12 ALICE
PRACTICA 12 ALICEPRACTICA 12 ALICE
PRACTICA 12 ALICE
 
Practica 12
Practica 12Practica 12
Practica 12
 
Apple tv development Meetup - Montevideo Uruguay
Apple tv development Meetup - Montevideo  UruguayApple tv development Meetup - Montevideo  Uruguay
Apple tv development Meetup - Montevideo Uruguay
 
Flex Mobile
Flex MobileFlex Mobile
Flex Mobile
 
Ioscmara
IoscmaraIoscmara
Ioscmara
 
PRACTICA 12 ALICE
PRACTICA 12 ALICEPRACTICA 12 ALICE
PRACTICA 12 ALICE
 
Custom views in android using canvas api
Custom views in android using canvas apiCustom views in android using canvas api
Custom views in android using canvas api
 
IOS-camara
IOS-camaraIOS-camara
IOS-camara
 
Practica12(2)
Practica12(2)Practica12(2)
Practica12(2)
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
PRACTICA 12 DE ALICE
PRACTICA 12 DE ALICEPRACTICA 12 DE ALICE
PRACTICA 12 DE ALICE
 

Animación y QuartzCore en iOS

  • 1. 10 - ANIMACIÓN Y QUARTZCORE Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 3. CONTENIDO • Introducción • Animaciones • QuartzCore
  • 4. INTRODUCCIÓN • iOSes una de ls plataformas móviles más fluidas en cuanto a animaciones y transiciones se refiere • Todas estas animaciones son gestionadas a través de un framework llamado QuartzCore
  • 5. CONTENIDO • Introducción • Animaciones • QuartzCore
  • 6. ANIMACIONES • Uno de los puntos fundamentales de QuartzCore son precisamente la animación de vistas • UIKitprovee de un interfaz para la animación de los cambios en ciertos campos de las vistas de manera sencilla
  • 7. ANIMACIONES 2 • Así UIView permite la animación de los siguientes campos: • frame • bounds • center • tranform • alpha • backgroundColor • contentStretch
  • 8. ANIMACIONES 3 • Paraanimar cambios en estos campos la clase UIView provee de varios métodos de clase • La manera más sencilla de manejarlo es usando bloques • Los bloques son funciones anónimas y se indican con el caracter ^ en lugar del nombre [UIView animateWithDuration:1 animations:^{ // Actualizamos los campos que queramos view.frame =CGRectMake(0, 0, 320, 100); }];
  • 9. ANIMACIONES 4 • Existen métodos más complejos que permiten, por ejemplo elegir el tipo de animación [UIView animateWithDuration:1.0 delay:2.0 options:UIViewAnimationCurveEaseIn animations:^{ // Actualizamos las propiedades a animar } completion:^(BOOL finished) { // Código a ejecutar al finalizar la animación }];
  • 10. ANIMACIONES 5 • Podemos definir también la animación sin el uso de bloques [UIView beginAnimations:@"Nombre de la Animación" context:nil]; // Configuramos las animaciones [UIView setAnimationDuration:1.0]; [UIView setAnimationDelay:2.0]; // Variamos los campos que queremos animar view.alpha = 0.4; // Lanzamos la aminación [UIView commitAnimations];
  • 11. ANIMACIONES 6 • Podemos aplicar estas animaciones a cualquier tipo de vista y podemos combinar animaciones de manera que consigamos un aspecto atractivo para los cambios en la interfaz
  • 13. QUARTZCORE • QuartzCore es el framework que soporta todas las animaciones • Alcontrario del resto de los frameworks posee gran parte de su funcionalidad programada en C
  • 14. QUARTZCORE 2 • Es un framework heredado de las primeras versiones de Mac OS X • Emplea OpenGL para realizar todas las animaciones
  • 15. QUARTZCORE 3 • Posee una gran flexibilidad por lo que permite tanto dibujar sobre la pantalla así como sobre imágenes o ficheros PDF • Permiteel dibujado de rutas, imagenes vectoriales, sombras, patrones, aplicar transformaciones 3D, etc • Es por tanto uno de los frameworks más complejo
  • 16. QUARTZCORE 4 • Para usarlo debemos incluir el framework desde el Xcode
  • 17. QUARTZCORE 5 • Veamos el código para el dibujado de este gradiente sobre una elipse:
  • 18. // Obtiene el contexto en pantalla sobre el cual dibujará CGContextRef context = UIGraphicsGetCurrentContext(); // Coloca el contexto en la posición de dibujado UIGraphicsPushContext(context); // Almacena los colores para el gradiente CGFloat colors[] = { 1.0, 1.0, 1.0, 1.0, 0.0, 0.5, 1.0, 0.8}; // Emplearemos RGB como espacio de colores CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB(); // Creamos el gradiente CGGradientRef gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2); // Liberamos el espacio de colores CGColorSpaceRelease(baseSpace), baseSpace = NULL; CGRect rect = CGRectMake(50, 60, 100, 60); // Almacena el estado de dibujado, para preparar el dibujado CGContextSaveGState(context); // Añade una elipse al contexto CGContextAddEllipseInRect(context, rect); // Hace que la elipse sea un clip (recorte) CGContextClip(context); CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect)); CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect)); // Dibuja el gradiente sobre la elipse CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); // Liberamos el gradiente CGGradientRelease(gradient), gradient = NULL; // restaura el estado de dibujado CGContextRestoreGState(context); // Dibuja el borde de la elipse CGContextAddEllipseInRect(context, rect); CGContextDrawPath(context, kCGPathStroke); // Retorna al contexto de dibujado anterior UIGraphicsPopContext();
  • 19. QUARTZCORE 7 • Como vemos es algo complejo de manejar • Sin embargo es un framework muy bien documentado y con ejemplos • Podemos acceder a la referencia online
  • 20. FIN

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n