SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
“Una app más animada”
Omar Megdadi Núñez
@nsstudent
jueves, 6 de junio de 13
¿De qué vamos a charlar?
¿Por qué es interesante animar tu app?
¿Cómo se anima una vista?.
¿¿Y un Layer??.
¿Preguntas? vuestras y mías XD.
jueves, 6 de junio de 13
¿ Por qué es interesante animar tu app?
Llaman mucho la atención.
Podemos educar al usuario en las acciones de
nuestra app.
Remarcar un punto de interés.
Crear nuevas experiencias de usuario.
Es divertido.
jueves, 6 de junio de 13
Animaciones de Vistas
Crea una interpolación en las propiedades
animables
La vista se encarga de “pintar” la animación.
Dos formas
Bloques.
Begin, Commit. (No recomendado ≥ iOS4)
jueves, 6 de junio de 13
Animaciones de Vistas
+ animateWithDuration:animations:
+ animateWithDuration:animations:completion:
+ animateWithDuration:delay:options:animations:completion:
+ transitionWithView:duration:options:animations:completion:
+ transitionFromView:toView:duration:options:completion:
jueves, 6 de junio de 13
Propiedades Animables
Frame:
origin
size.
Bounds
Center
Alpha
BackgroundColor
Transform:
mover.
Escalar.
Rotar.
ContentStrech
jueves, 6 de junio de 13
Ejemplos de animaciones
[UIView animateWithDuration:0.3 animations:^{
[self.exampleView setAlpha:0];
}];
[UIView animateWithDuration:0.3 animations:^{
self.exampleView.alpha=0;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 animations:^{
self.exampleView.alpha=1;
}];
}];
[UIView animateWithDuration:0.3 delay:0
options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.exampleView frameMoveByYDelta:100];
} completion:^(BOOL finished) {
self.isMove=YES;
}];
jueves, 6 de junio de 13
Tipos de tiempo
UIViewAnimationOptionCurveEaseIn
UIViewAnimationOptionCurveLinear UIViewAnimationOptionCurveEaseOut
jueves, 6 de junio de 13
Vamos a una demo
jueves, 6 de junio de 13
Core Animation
Apple presenta a los desarrolladores
CoreAnimation en el 2007.
Es una capa de abstracción que nos evita tener que
bajar a OpenGL para hacer animaciones mas
complejas.
No hace todo lo que se puede hacer con OpenGL
jueves, 6 de junio de 13
Core Animation
Diferenciamos Varios Casos
CATransaction
CABasicAnimation
CAKeyframeAnimation
CAAnimationGroup
jueves, 6 de junio de 13
CATransaction
CATransaction es el mecanismo Core Animation
para el procesamiento de operaciones en el árbol
de layers.
Al Cambiar una propiedad de CALayer se produce
aun animación implícita.
Una CATransaction es generada en cada animación
implícita y la podemos modificar en el momento.
jueves, 6 de junio de 13
CABasicAnimation
Permite trabajar con la interpolación entre dos
puntos de la misma manera que las animaciones
anteriores, pero esta vez en el CALayer.
CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
fadeAnim.fromValue = [NSNumber numberWithFloat:0.0];
fadeAnim.toValue = [NSNumber numberWithFloat:30.0];
fadeAnim.duration = 1.0;
[self.exampleView.layer addAnimation:fadeAnim forKey:@"cornerRadius"];
// Change the actual data value in the layer to the final value.
self.exampleView.layer.cornerRadius = 30.0;
jueves, 6 de junio de 13
Propiedades Animables CALayer
anchorPoint
backgroundColor
borderColor
borderWidth
bounds
contents
contentsRect
cornerRadius
frame
position
shadowColor
shadowRadius
transform
zPosition
jueves, 6 de junio de 13
CATransform3D
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
En Core Animation podemos jugar con las 3D
CATransform3D es una matriz 4x4 que representa
matemáticamente las transformaciones afines en
un espacio de tres dimensiones
Podemos trasladar,rotar,escalar e incluso jugar con
la perspectiva.
jueves, 6 de junio de 13
CATransform3D
1
0
0
Tx
0
1
0
Ty
0
0
1
Tz
0
0
0
1
Ex
0
0
0
0
Ey
0
0
0
0
Ez
0
0
0
0
1
cosø
0
-senø
0
0
1
0
0
senø
0
cosø
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
Fp
1
cosø
-senø
0
0
senø
cosø
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
cosø
-senø
0
0
senø
cosø
0
0
0
0
0
1
jueves, 6 de junio de 13
CABasicAnimation
CATransform3D transform=self.exampleView.layer.transform;
transform.m34=-1./100.;
self.exampleView.layer.transform=transform;
CGFloat rotation= 2*M_PI ;
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation
animationWithKeyPath:@"transform.rotation.y"];
rotationAnimation.fromValue = [NSNumber numberWithFloat:
rotation ];
rotationAnimation.duration = 3;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1;
[self.exampleView.layer addAnimation:rotationAnimation
forKey:@"rotationAnimation"];
jueves, 6 de junio de 13
CAKeyframeAnimation
CGMutablePathRef thePath = CGPathCreateMutable();
CGPathMoveToPoint(thePath,NULL,self.jummperView.center.x,self.jummperView.center.y);
CGPathAddCurveToPoint(thePath,NULL,self.jummperView.center.x,self.jummperView.center.y-200,
self.jummperView.center.x+100,self.jummperView.center.y-200,
self.jummperView.center.x+100,self.jummperView.center.y);
CGPathAddCurveToPoint(thePath,NULL,self.jummperView.center.+100,self.jummperView.center.y-100,
self.jummperView.center.x+150,self.jummperView.center.y-100,
self.jummperView.center.x+150,self.jummperView.center.y);
CGPathAddCurveToPoint(thePath,NULL,self.jummperView.center.x+150,self.jummperView.center.y-50,
self.jummperView.center.x+175,self.jummperView.center.y-50,
self.jummperView.center.x+175,self.jummperView.center.y);
self.isJummp=YES;
CAKeyframeAnimation * theAnimation;
// Create the animation object, specifying the position property as the key path.
theAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"];
theAnimation.path=thePath;
theAnimation.duration=1.0;
theAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
// Add the animation to the layer.
[self.jummperView.layer addAnimation:theAnimation forKey:@"position"];
self.jummperView.center=CGPointMake(self.jummperView.center.x+175,self.jummperView.center.y);
jueves, 6 de junio de 13
CAMediaTimingFunction
theAnimation.timingFunction=[CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseIn];
[PresentationPlayButtonAnimation setTimingFunction:[CAMediaTimingFunction
functionWithControlPoints:0.1 :1 :0.2 :1.1]];
jueves, 6 de junio de 13
CAAnimationGroup
Esta Clase nos permite anidar varias animaciones
para ejecutarlas a la par en un mismo CALayer
CAAnimationGroup* group = [CAAnimationGroup animation];
group.animations = [NSArray arrayWithObjects:Anim1,Anim2,Anim3, nil];
group.duration = 5.0;
[self.exampleView.layer addAnimation:group forKey:@"allChanges"];
jueves, 6 de junio de 13
Volvamos a la demo
jueves, 6 de junio de 13
Enlaces recomendados
UIView Reference
Core Animation Reference
Charla de Nacho Soto de Core Animation
Repositorio FlatUIKit
Repositorio csscagradientlayer
Repositorio de la Demo
jueves, 6 de junio de 13
¿Preguntas?
??
jueves, 6 de junio de 13
Demo Extra
jueves, 6 de junio de 13

Más contenido relacionado

Similar a Animar apps iOS

HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02Juan Cardona
 
Pasos para dibujar figura en 3 d
Pasos para dibujar figura en 3 dPasos para dibujar figura en 3 d
Pasos para dibujar figura en 3 dUNSCH
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101thalis96
 
Practica#1 - Semáforo
Practica#1 -  Semáforo Practica#1 -  Semáforo
Practica#1 - Semáforo luceroirg
 
Cesnavarra 2009-boletín 12
Cesnavarra 2009-boletín 12Cesnavarra 2009-boletín 12
Cesnavarra 2009-boletín 12Cein
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2jcbp_peru
 
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++WorkShop Trabajo con Active Frames en Cascades Usando QML y C++
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++Joel Ortíz
 
Usando Google Maps en tu Android App
Usando Google Maps en tu Android AppUsando Google Maps en tu Android App
Usando Google Maps en tu Android AppOscar Salguero
 

Similar a Animar apps iOS (20)

Programación con Pygame VI
Programación con Pygame VIProgramación con Pygame VI
Programación con Pygame VI
 
Skrollr basico
Skrollr basicoSkrollr basico
Skrollr basico
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02
 
Pasos para dibujar figura en 3 d
Pasos para dibujar figura en 3 dPasos para dibujar figura en 3 d
Pasos para dibujar figura en 3 d
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101
 
Curso HTML 5 & jQuery - Leccion 10
Curso HTML 5 & jQuery - Leccion 10Curso HTML 5 & jQuery - Leccion 10
Curso HTML 5 & jQuery - Leccion 10
 
Colisiongambas2
Colisiongambas2Colisiongambas2
Colisiongambas2
 
Practica#1 - Semáforo
Practica#1 -  Semáforo Practica#1 -  Semáforo
Practica#1 - Semáforo
 
Cesnavarra 2009-boletín 12
Cesnavarra 2009-boletín 12Cesnavarra 2009-boletín 12
Cesnavarra 2009-boletín 12
 
ANIMACIÓN AUTOCAD
ANIMACIÓN AUTOCADANIMACIÓN AUTOCAD
ANIMACIÓN AUTOCAD
 
Unity
UnityUnity
Unity
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Aurasma studio - Tutorial
Aurasma studio - TutorialAurasma studio - Tutorial
Aurasma studio - Tutorial
 
parte 4 manual 2022.pdf
parte 4 manual 2022.pdfparte 4 manual 2022.pdf
parte 4 manual 2022.pdf
 
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++WorkShop Trabajo con Active Frames en Cascades Usando QML y C++
WorkShop Trabajo con Active Frames en Cascades Usando QML y C++
 
Carrito de carreras flash copia
Carrito de carreras flash   copiaCarrito de carreras flash   copia
Carrito de carreras flash copia
 
Usando Google Maps en tu Android App
Usando Google Maps en tu Android AppUsando Google Maps en tu Android App
Usando Google Maps en tu Android App
 
Programación con Pygame V
Programación con Pygame VProgramación con Pygame V
Programación con Pygame V
 
Android Superstar - Buenas Prácticas
Android Superstar - Buenas PrácticasAndroid Superstar - Buenas Prácticas
Android Superstar - Buenas Prácticas
 

Animar apps iOS