6

He estado creando aplicaciones para iPhone por un tiempo, usando transformaciones básicas (rotaciones, escala, etc.) pero ahora me gustaría hacer algo un poco más complejo.¿Cómo uso CATransform3D en una UIView para agregar un tipo específico de perspectiva?

Las matemáticas realmente no son mi punto más fuerte ... pero me preguntaba cómo podría agregar una 'perspectiva' a una UIView (ver la imagen a continuación). Rápidamente me burlé de la pantalla utilizando las opciones de sesgo en Photoshop .

he tenido una mirada alrededor stackoverflow de soluciones a esto, me ha How do I apply a perspective transform to a UIView? que funciona de manera excelente - pero en realidad no es lo que busco, porque la altura de la izquierda el borde más grande es más grande que el borde más a la derecha .

¿Alguien sabe cómo puedo hacer esto con CATransform3D pero sin estas alturas diferentes?

alt text http://img594.imageshack.us/img594/4354/perspectivel.png

Respuesta

11

Si lo que desea es sesgar, no es necesario transformar 3D. Una transformación afín será suficiente.

-(void)drawRect:(CGRect)rect { 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGAffineTransform transform = CGAffineTransformIdentity; 
    transform.b = -0.1; 
    transform.a = 0.9; 
    CGContextConcatCTM(ctx,transform); 
    // do drawing on the context 
} 

esto es una copia modificada & pasta de un proyecto que tiene una transformación similar, pero puede que tenga que ajustar los parámetros a y b. Esto le dará un aumento de 1 en 9 de izquierda a derecha (0.1/0.9), mientras condensa de izquierda a derecha al 90% (0.9).

+0

Excelente respuesta, ¡muchas gracias! –

Cuestiones relacionadas