I have an iOS UIView with UIViewAnimationTransitionFlipFromRight
. I need it to flip vertically though. The page curl transition won't cut it. I assume this will require something custom.
Any ideas?
Just write your own method for the flip using Core Animation Transforms.
- (void)verticalFlip{ [UIView animateWithDuration:someDuration delay:someDelay animations:^{ yourView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); } completion:^{ // code to be executed when flip is completed }]; }
Make sure you have the Core Animation libraries/frameworks added and included and also have included math.h
if you want to use the M_PI
notation.
EDIT:
To have it essentially "change" the view when it's halfway flipped do something like this:
- (void)verticalFlip{ [UIView animateWithDuration:someDuration delay:someDelay animations:^{ yourView.layer.transform = CATransform3DMakeRotation(M_PI_2,1.0,0.0,0.0); //flip halfway } completion:^{ while ([yourView.subviews count] > 0) [[yourView.subviews lastObject] removeFromSuperview]; // remove all subviews // Add your new views here [UIView animateWithDuration:someDuration delay:someDelay animations:^{ yourView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); //finish the flip } completion:^{ // Flip completion code here }]; }]; }
This could also work:
- (void)verticalFlip{ // Do the first half of the flip [UIView animateWithDuration:someDuration delay:someDelay animations:^{ yourView.layer.transform = CATransform3DMakeRotation(M_PI_2,1.0,0.0,0.0); //flip halfway } completion:^{ while ([yourView.subviews count] > 0) [[yourView.subviews lastObject] removeFromSuperview]; // remove all subviews // Add your new views here }]; // After a delay equal to the duration+delay of the first half of the flip, complete the flip [UIView animateWithDuration:someDuration delay:durationOfFirstAnimation animations:^{ yourView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); //finish the flip } completion:^{ // Flip completion code here }]; }
Cheers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With