9

Korzystając z następującej animacji UIView z CATransform3DMakeRotation, połowa UIView zniknie podczas transformacji i pojawi się ponownie po zakończeniu. Dzieje się tak tylko wtedy, gdy istnieje UIImageView za UIView w hierarchii widoku konstruktora interfejsu.CATransform3DMakeRotation ukrywa połowę UIView podczas animacji

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

Poniżej znajduje się widok na układ interfejsu konstruktora

Interface Builder layout

a wynik animacji poniżej.

enter image description here

The 2nd obraz jest przed animacja miała miejsce, lewa połowa znika. Po skurczeniu, a następnie przekroczeniu punktu środkowego, prawy bok (poprzednia lewa strona) pojawia się ponownie, jak pokazano na 4. obrazie.

Gdy obraz tła jest ustawiany za pomocą

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

Animacja kończy, jak oczekiwano.

+0

To również działa dobrze, gdy nie ma UIImageView tyłu. –

+0

Proszę wyjaśnij, co próbujesz osiągnąć ... Z obrazów widzę, że jest to normalne zachowanie, ponieważ obracasz się na osi Y – Mazyod

+0

Środkowe 2 obrazy znajdują się na samym początku i końcu animacji, tak szybko, jak animacja się rozpoczyna, lewa strona znika przed każdą zmianą szerokości. Pojawia się tylko po zakończeniu animacji. Jeśli to sprawia, że ​​jest jaśniejszy? –

Odpowiedz

23

Dla przypomnienia, odpowiedź była w moim komentarzu

imageView.layer.zPosition = -400; 

Ewentualnie można zrobić

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

wygląda jak część widoku obracającego się niedrożna przez widok w tle. Ponieważ obraca się wokół punktu środkowego, jego część przechodzi w przestrzeń ujemną-z, więc znajduje się za tłem.

Więc od

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

do

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

Dzięki za wyjaśnienie. Teraz to ma sens. Twoje zdrowie!! –

+0

Dokładnie tego, czego szukałem. Dziękuję Ci. – Yariv

+0

Dzięki, dobra podpowiedź! – MacMark