619 | + ( void )animationRotateAndScaleDownUp:(UIView *)view |
620 | { |
621 | CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@ "transform.rotation.z" ]; |
622 | rotationAnimation.toValue = [NSNumber numberWithFloat:(2 * M_PI) * 2]; |
623 | rotationAnimation.duration = 0.35f; |
624 | rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; |
625 | |
626 | CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@ "transform.scale" ]; |
627 | scaleAnimation.toValue = [NSNumber numberWithFloat:0.0]; |
628 | scaleAnimation.duration = 0.35f; |
629 | scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; |
630 | |
631 | CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; |
632 | animationGroup.duration = 0.35f; |
633 | animationGroup.autoreverses = YES; |
634 | animationGroup.repeatCount = 1; |
635 | animationGroup.animations =[NSArray arrayWithObjects:rotationAnimation, scaleAnimation, nil]; |
636 | [view.layer addAnimation:animationGroup forKey:@ "animationGroup" ]; |
637 | } |
638 | |
639 | |
640 | |
641 | #pragma mark - Private API |
642 | |
643 | + ( void )animationFlipFromTop:(UIView *)view |
644 | { |
645 | CATransition *animation = [CATransition animation]; |
646 | [animation setDuration:0.35f]; |
647 | [animation setFillMode:kCAFillModeForwards]; |
648 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
649 | [animation setType:@ "oglFlip" ]; |
650 | [animation setSubtype:@ "fromTop" ]; |
651 | |
652 | [view.layer addAnimation:animation forKey:nil]; |
653 | } |
654 | |
655 | + ( void )animationFlipFromBottom:(UIView *)view |
656 | { |
657 | CATransition *animation = [CATransition animation]; |
658 | [animation setDuration:0.35f]; |
659 | [animation setFillMode:kCAFillModeForwards]; |
660 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
661 | [animation setType:@ "oglFlip" ]; |
662 | [animation setSubtype:@ "fromBottom" ]; |
663 | |
664 | [view.layer addAnimation:animation forKey:nil]; |
665 | } |
666 | |
667 | + ( void )animationCubeFromLeft:(UIView *)view |
668 | { |
669 | CATransition *animation = [CATransition animation]; |
670 | [animation setDuration:0.35f]; |
671 | [animation setFillMode:kCAFillModeForwards]; |
672 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
673 | [animation setType:@ "cube" ]; |
674 | [animation setSubtype:@ "fromLeft" ]; |
675 | |
676 | [view.layer addAnimation:animation forKey:nil]; |
677 | } |
678 | |
679 | + ( void )animationCubeFromRight:(UIView *)view |
680 | { |
681 | CATransition *animation = [CATransition animation]; |
682 | [animation setDuration:0.35f]; |
683 | [animation setFillMode:kCAFillModeForwards]; |
684 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
685 | [animation setType:@ "cube" ]; |
686 | [animation setSubtype:@ "fromRight" ]; |
687 | |
688 | [view.layer addAnimation:animation forKey:nil]; |
689 | } |
690 | |
691 | + ( void )animationCubeFromTop:(UIView *)view |
692 | { |
693 | CATransition *animation = [CATransition animation]; |
694 | [animation setDuration:0.35f]; |
695 | [animation setFillMode:kCAFillModeForwards]; |
696 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
697 | [animation setType:@ "cube" ]; |
698 | [animation setSubtype:@ "fromTop" ]; |
699 | |
700 | [view.layer addAnimation:animation forKey:nil]; |
701 | } |
702 | |
703 | + ( void )animationCubeFromBottom:(UIView *)view |
704 | { |
705 | CATransition *animation = [CATransition animation]; |
706 | [animation setDuration:0.35f]; |
707 | [animation setFillMode:kCAFillModeForwards]; |
708 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
709 | [animation setType:@ "cube" ]; |
710 | [animation setSubtype:@ "fromBottom" ]; |
711 | |
712 | [view.layer addAnimation:animation forKey:nil]; |
713 | } |
714 | |
715 | + ( void )animationSuckEffect:(UIView *)view |
716 | { |
717 | CATransition *animation = [CATransition animation]; |
718 | [animation setDuration:0.35f]; |
719 | [animation setFillMode:kCAFillModeForwards]; |
720 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
721 | [animation setType:@ "suckEffect" ]; |
722 | |
723 | [view.layer addAnimation:animation forKey:nil]; |
724 | } |
725 | |
726 | + ( void )animationRippleEffect:(UIView *)view |
727 | { |
728 | CATransition *animation = [CATransition animation]; |
729 | [animation setDuration:0.35f]; |
730 | [animation setFillMode:kCAFillModeForwards]; |
731 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
732 | [animation setType:@ "rippleEffect" ]; |
733 | |
734 | [view.layer addAnimation:animation forKey:nil]; |
735 | } |
736 | |
737 | + ( void )animationCameraOpen:(UIView *)view |
738 | { |
739 | CATransition *animation = [CATransition animation]; |
740 | [animation setDuration:0.35f]; |
741 | [animation setFillMode:kCAFillModeForwards]; |
742 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
743 | [animation setType:@ "cameraIrisHollowOpen" ]; |
744 | [animation setSubtype:@ "fromRight" ]; |
745 | |
746 | [view.layer addAnimation:animation forKey:nil]; |
747 | } |
748 | |
749 | + ( void )animationCameraClose:(UIView *)view |
750 | { |
751 | CATransition *animation = [CATransition animation]; |
752 | [animation setDuration:0.35f]; |
753 | [animation setFillMode:kCAFillModeForwards]; |
754 | [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]]; |
755 | [animation setType:@ "cameraIrisHollowClose" ]; |
756 | [animation setSubtype:@ "fromRight" ]; |
757 | |
758 | [view.layer addAnimation:animation forKey:nil]; |
759 | } |
760 | @end |