2011-12-20 12 views
19

Vorrei sapere se è possibile capovolgere il contenuto di uno UIView all'interno dello stesso dispositivo; che significa non su un monitor esterno ma sul dispositivo stesso.iOS: contenuto dello specchio sullo schermo

Ho cercato un po 'su google, ma tutto quello che posso trovare è sugli schermi esterni.

+0

Definire 'flip' per me. – Jessedc

+1

Come nel titolo, specchio. –

risposta

41

È possibile utilizzare CGAffineTransformMakeScale con valori negativi. Come:

CGAffineTransformMakeScale(1.0, -1.0); 

Questo può essere applicato sulla vista da:

//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 è tuo amico qui. Ecco un codice di esempio semplificato preso da un modello Xcode UIViewController per aggiungere una UILabel a una sua vista e farla speculare. Il mirroring è solo un effetto collaterale di una scala negativa. Puoi fare ogni sorta di cose con i metodi CGAffineTransform, non solo limitati alla scala.

- (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

Non dovrebbe essere // Specchia l'UILabel da sinistra a destra 'aLabel.transform = CGAffineTransformMakeScale (-1.0, 1.0);'? – Gujamin

Problemi correlati