Ahora estoy rellenando un UIScrollView con una serie de vistas. Las vistas deben estar deformadas para que el UIScrollView parezca un carrusel. En otras palabras, cuando el usuario se desplaza, debe ser como un círculo. Nunca he hecho algo como esto antes, pero asumo que CoreAnimation está fuera de cuestión y OpenGL necesita ser utilizado. Si esto es posible con CoreAnimation o Quartz, realmente solo necesito una muestra sobre cómo deformar las vistas y puedo descifrar el resto, pero no estoy familiarizado con OpenGL.Curvar/deformar vistas con CoreAnimation u OpenGL para efecto de carrusel
Respuesta
En mi experiencia, es un poco difícil de obtener los valores de la derecha. La forma de dar una perspectiva de vista es manipulando su transformación de capa. He utilizado el siguiente método para lograr la transfor para un efecto similar:
-(CATransform3D)makeTransformForAngle:(CGFloat)angle from:(CATransform3D)start{
CATransform3D transform = start;
// the following two lines are the key to achieve the perspective effect
CATransform3D persp = CATransform3DIdentity;
persp.m34 = 1.0/-1000;
transform = CATransform3DConcat(transform, persp);
transform = CATransform3DRotate(transform,angle, 0.0, 1.0, 0.0);
return transform;
}
Esto se hizo para crear un "tirón de la página" de animación, por lo que puede que tenga que adaptarse. Para usarlo, haga lo siguiente:
flip_page.layer.transform = [self makeTransformForAngle:angle from:CATransform3DIdentity];
donde flip_page es un UIView. ¡Aclamaciones!
¡Gracias! Mi problema principal es deformar las vistas individuales como se muestra arriba. ¿Sabes cómo hacer esto? –
Ya veo. Para eso, por supuesto, una transformación lineal no es suficiente. Estoy seguro de que puedes crear la malla en OpenGL y abofetear la textura. Pero eso parece una exageración. Espero que esta pregunta tenga una respuesta inteligente;) – fsaint
Esto me permite agregar perspectiva a las vistas individuales, lo cual es necesario. Sin embargo, también necesitan ser deformados. –
Si desea deformar las vistas, necesitará OpenGL o podría utilizar CAShapLayer de Core Animation que le permite especificar una ruta bezier que puede tener esta curva. Pero tenga en cuenta que esta curva que está viendo probablemente sea solo una ilusión óptica (aunque en su imagen de arriba se ve como una curva real). Si obtienes suficientes rectángulos con la rotación correcta del eje y en una fila, creo que puedes encontrar el efecto que estás buscando con Core Animation. Estoy bastante seguro de que así es como se implementan las cosas en las demostraciones de Core Animation que Apple proporcionó hace un par de años. Aquí hay una captura de pantalla del vídeo de esa presentación:
ensucié alrededor con la transformación de la capa de una visión un poco y se le ocurrió esto:
- (IBAction)sliderDidChange:(id)sender
{
CGFloat value = [(UISlider*)sender value];
CGFloat xOff = value - 0.5;
CATransform3D trans = CATransform3DIdentity;
trans.m34 = 1.0f/-1000.0f;
trans = CATransform3DRotate(trans, degreesToRadians(xOff * -25.0f), 0.0f, 1.0f, 0.0f);
trans = CATransform3DTranslate(trans, 0.0f, 0.0f, 900.0f * fabs(xOff));
[[frameView layer] setTransform:trans];
CGPoint center= [frameView center];
[frameView setCenter:CGPointMake(1024.0 * value, center.y)];
}
me tiró juntos a demo project que muestra cómo el la rotación funciona en respuesta a un control deslizante. No utiliza una vista de desplazamiento, por lo que tendría que adaptarla, pero creo que puede seguir el desplazamiento de desplazamiento actual y aplicar la transformación en consecuencia. No estoy seguro de si ayudará, pero ahí está.
- 1. Efecto 3D Carrusel en el iPad
- 2. OpenGL u OpenGL ES
- 3. ¿Qué debo aprender: Quartz u OpenGL ES?
- 4. biblioteca carrusel para android
- 5. Carrusel 3D para Android?
- 6. Efecto Curl de página para vistas web en Android
- 7. Animando una forma con CoreAnimation
- 8. Elija OpenGL ES 1.1 u OpenGL ES 2.0?
- 9. Core Animation u OpenGL para simple juego de iPhone
- 10. Límites de las vistas en cualquier resolución con OpenGL ES
- 11. Desplazamiento animado de UIScrollView con CoreAnimation
- 12. IPhone OpenGL ES vistas individuales o múltiples?
- 13. Hilos de CoreAnimation
- 14. advertencia CoreAnimation elimina hilo con CATransaction comprometido
- 15. ¿Qué es diferente entre CoreGraphics y CoreAnimation?
- 16. Haskell u Ocaml con distribución precompilada de OpenGL y SDL para Windows
- 17. ¿Efecto Apple Cover-flow usando jQuery u otra biblioteca?
- 18. Problema con "renderincontext" con vistas abiertas
- 19. ¿Cómo crear efecto de lente ojo de pez mediante OpenGL?
- 20. Cómo crear carrusel ViewPager?
- 21. jQuery 3D carrusel?
- 22. C# 2D Gráficos vectoriales Juego usando DirectX u OpenGL?
- 23. Vista de carrusel en Android
- 24. Reduzca la velocidad y acelere las animaciones con CoreAnimation
- 25. "Plegar" una NSWindow usando CoreAnimation
- 26. Bootstrap Carrusel No funciona
- 27. Backbone mostrando u ocultando vistas renderizadas mejores prácticas
- 28. Animación de UILabel con CoreAnimation/QuartzCore en la aplicación iOS
- 29. ¿Cómo puedo mostrar u ocultar fácilmente las vistas en Griffon
- 30. Bootstrap Número carrusel icono activa
no estoy 100% seguro, pero creo que es posible que pueda aplicar un CATransform3D a la propiedad de capas de su vista. – jessecurry
Sí, he leído un poco sobre esto, pero nunca he usado eso antes. ¿Conoces alguna muestra? –