9

Utilizzando la seguente animazione UIView con CATransform3DMakeRotation, metà della UIView scomparirà durante la trasformazione e riapparirà al termine. Ciò accade solo quando esiste una UIImageView dietro l'UIView nella gerarchia della vista del generatore di interfacce.CATransform3DMakeRotation nasconde metà della visualizzazione UIV durante l'animazione

[UIView animateWithDuration:1.0 delay:0.0 options:nil animations:^{ 
     myView.layer.transform = CATransform3DMakeRotation(M_PI,0.0,1.0,0.0); 
    } completion:nil]; 

Quello che segue è il layout di visualizzazione in Interface Builder

Interface Builder layout

E il risultato animazione qui sotto.

enter image description here

La seconda immagine è prima di ogni animazione ha avuto luogo, la metà sinistra scompare. Dopo che si è ristretto, poi è cresciuto oltre il punto centrale, il lato destro (il lato sinistro precedente) riappare come mostrato nella quarta immagine.

Quando l'immagine di sfondo viene impostato utilizzando

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"jeans.png"]]; 

L'animazione completa come previsto.

+0

Questo funziona bene anche quando non c'è UIImageView dietro. –

+0

Spiegare cosa si sta cercando di ottenere ... Dalle immagini, vedo che si tratta di un comportamento normale, visto che si sta ruotando sull'asse Y – Mazyod

+0

Le immagini di middle 2 sono all'inizio e alla fine dell'animazione, non appena l'animazione inizia, il lato sinistro scompare prima di qualsiasi cambiamento di larghezza. Riappare solo dopo che l'animazione è stata completata. Se questo lo rende più chiaro? –

risposta

23

Per la cronaca, la risposta era nel mio commento

imageView.layer.zPosition = -400; 

In alternativa si potrebbe fare

myView.layer.zPosition = 400; // or some number greater than width/2 

Sembra parte della vista di rotazione è occlusa dalla vista di fondo. Poiché ruota attorno al suo punto centrale, parte di esso passa nello spazio negativo-z, quindi è dietro lo sfondo.

Quindi da

------- imageView 
------- myView 

a

/myView 
    /
------- imageView 
/
/
+0

Grazie per la spiegazione. Ora ha senso. Saluti!! –

+0

Esattamente quello che stavo cercando. Grazie. – Yariv

+0

Grazie, buon suggerimento! – MacMark

Problemi correlati