Вы можете сделать это с двумя блоками:
// Rotate the second 'backside' view to 90 degrees and hide it
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -zDistance;
mySecondView.layer.transform = transform;
mySecondView.layer.transform = CATransform3DMakeRotation(M_PI / 2, -1, 0, 0);
mySecondView.hidden = YES;
// Animate to 90 degrees
[UIView animateWithDuration:0.5 animations:^{
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -zDistance;
myView.layer.transform = transform;
myView.layer.transform = CATransform3DMakeRotation(M_PI / 2, -1, 0, 0);
} completion:^{
// Switch to the backside view
myView.hidden = YES;
mySecondView.hidden = NO;
// Animate the remaining 90 degrees
[UIView animateWithDuration:0.5 animations:^{
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0f / -zDistance;
mySecondView.layer.transform = transform;
mySecondView.layer.transform = CATransform3DMakeRotation(M_PI, -1, 0, 0);
}
}
Вы также можете поэкспериментировать со свойством myView.layer.isDoubleSided
, которое скрывает заднюю часть вида - хотя вам все равно придется переключать hidden
пометьте в конце анимации, в противном случае кнопки первого вида будут по-прежнему активными.
Надеюсь, это поможет!Спасибо.