2011-12-20 13 views
19

Me gustaría saber si es posible voltear el contenido de un UIView dentro del mismo dispositivo; es decir, no para un monitor externo sino en el dispositivo mismo.iOS: contenido reflejado en la pantalla

He buscado un poco en Google, pero todo lo que puedo encontrar es para pantallas externas.

+0

Define 'flip' para mí. – Jessedc

+1

Como en el título, espejo. –

Respuesta

41

Puede usar CGAffineTransformMakeScale con valores negativos. Al igual que :

CGAffineTransformMakeScale(1.0, -1.0); 

Esto se puede aplicar en la vista por:

//Mirror top to bottom 
view.transform = CGAffineTransformMakeScale(1.0, -1.0); 

o

//Mirror Left to Right 
view.transform = CGAffineTransformMakeScale(-1.0, 1.0); 
2

CGAffineTransform es su amigo. Aquí hay un código de muestra simplificado tomado de un UIViewController de Xcode Template para agregar un UILabel a su vista y hacer que esa vista se refleje. La duplicación es solo un efecto secundario de una escala negativa. Puede hacer todo tipo de cosas con los métodos CGAffineTransform, no solo limitados a escala.

- (void)viewDidLoad; 
{ 
    [super viewDidLoad]; 

    UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
    aLabel.text = @"Sample Text"; 
    [aLabel sizeToFit]; 

    //Add it to the center of our UIViewController's View 
    CGRect labelFrame = aLabel.frame; 
    labelFrame.origin.x = floorf((CGRectGetWidth(self.view.frame) - CGRectGetWidth(labelFrame))/2); 
    labelFrame.origin.y = floorf((CGRectGetHeight(self.view.frame) - CGRectGetHeight(labelFrame))/2); 
    aLabel.frame = labelFrame; 

    //Mirror the UILabel left to right 
    aLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); 

    //OR Mirror the UILabel top to bottom 
    //aLabel.transform = CGAffineTransformMakeScale(1.0, -1.0); 

    [self.view addSubview:aLabel]; 
    [aLabel release]; 
} 
+3

¿No debería ser esto // Duplicar el UILabel de izquierda a derecha 'aLabel.transform = CGAffineTransformMakeScale (-1.0, 1.0);'? – Gujamin

Cuestiones relacionadas