github:https://github.com/potato512/SYAnimation
使用CATransition进行视图控制器的转场动画自定义。
效果图:
代码示例:
// 转场动画 CATransition *animation = [CATransition animation]; animation.duration = 0.6; animation.fillMode = kCAFillModeForwards; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; // 转场效果-动画类型type 动画方向subtype if (0 == indexPath.row) { animation.type = @"cube"; animation.subtype = kCATransitionFromLeft; } else if (1 == indexPath.row) { animation.type = @"moveIn"; animation.subtype = kCATransitionFromLeft; } else if (2 == indexPath.row) { animation.type = @"reveal"; animation.subtype = kCATransitionFromLeft; } else if (3 == indexPath.row) { animation.type = @"fade"; animation.subtype = kCATransitionFromLeft; } else if (4 == indexPath.row) { animation.type = @"pageCurl"; animation.subtype = kCATransitionFromLeft; } else if (5 == indexPath.row) { animation.type = @"pageUnCurl"; animation.subtype = kCATransitionFromRight; } else if (6 == indexPath.row) { animation.type = @"suckEffect"; animation.subtype = kCATransitionFromLeft; } else if (7 == indexPath.row) { animation.type = @"rippleEffect"; animation.subtype = kCATransitionFromLeft; } else if (8 == indexPath.row) { animation.type = @"oglFlip"; animation.subtype = kCATransitionFromLeft; } else if (9 == indexPath.row) { animation.type = @"rotate"; animation.subtype = @"90cw"; } else if (10 == indexPath.row) { animation.type = @"push"; animation.subtype = kCATransitionFromLeft; } else if (11 == indexPath.row) { animation.type = @"cameraIrisHollowOpen"; animation.subtype = kCATransitionFromLeft; } else if (12 == indexPath.row) { animation.type = @"cameraIrisHollowClose"; animation.subtype = kCATransitionFromLeft; } else if (13 == indexPath.row) { animation.type = @"kCATransitionFade"; animation.subtype = kCATransitionFromLeft; } else if (14 == indexPath.row) { animation.type = @"kCATransitionMoveIn"; animation.subtype = kCATransitionFromLeft; } else if (15 == indexPath.row) { animation.type = @"kCATransitionPush"; animation.subtype = kCATransitionFromLeft; } else if (16 == indexPath.row) { animation.type = @"kCATransitionReveal"; animation.subtype = kCATransitionFromLeft; } // 添加转场动画到导航视图控制上 [self.navigationController.view.layer addAnimation:animation forKey:nil];