iphone 3D
Core Animation Basics

        CATransform3D transform = CATransform3DIdentity;

        if ([UIGlobal isPortraitScreen])
        {
            // anchorPoint 用于控制动画起点坐标
            animationView.layer.anchorPoint = CGPointMake(0.5, 0.50);
            transform.m34 = 1.0/400;
            transform = CATransform3DConcat(CATransform3DMakeTranslation(0, 400, 800), transform);
            transform = CATransform3DConcat(CATransform3DMakeRotation(M_PI_2 * 92 / 100, 1, 0, 0), transform);

            transform = CATransform3DConcat(CATransform3DMakeTranslation(0, 100, 400), transform);
            transform = CATransform3DConcat(CATransform3DMakeRotation(M_PI_2 * 92 / 100, 1, 0, 0), transform);

//			transform = CATransform3DMakeRotation(M_PI_2 * 92 / 100, 1, 0, 0);
//			transform = CATransform3DConcat(CATransform3DMakeTranslation(0, frame.size.height + 100, 0), transform);
//			transform = CATransform3DConcat(CATransform3DMakeScale(0.5, 1, 1), transform);
//			transform.m34 = 1.0/400;
			MWMD_LOG_NSLOG(@"===isPortraitScreen animate transform ====");
        }
        else
        {
            animationView.layer.anchorPoint = CGPointMake(0.80, 0.5);
            transform.m34 = 1.0/400;
            transform = CATransform3DConcat(CATransform3DMakeTranslation(100, 0, 400), transform);
            transform = CATransform3DConcat(CATransform3DMakeRotation(M_PI_2 * 92 / 100, 0, -1, 0), transform);
        }

        MWMD_LOG_NSLOG(@"===UIView animate transform preparing end===");

        animationView.frame = frame;
        animationView.layer.transform = transform;

        UIView * anim_clipView = nil;
        if ([[FullScreenController shareInstance] isHalfFullScreen])
        {
			MWMD_LOG_NSLOG(@"===UIView animate isHalfFullScreen ===");
            // 半全屏的时候，修改frame高度会导致首页重排版，因此使用Clip来避开底部工具栏
            CGRect clip_frame = frame;
            clip_frame.size.height -= [UIGlobal getBottombarRect].size.height;
            anim_clipView = [[UIView alloc] initWithFrame:clip_frame];
            [anim_clipView addSubview:animationView];
            anim_clipView.clipsToBounds = YES;
        }

        [self.view addSubview:anim_clipView ? anim_clipView : animationView];
        [animationView bringToFront];
        int zPosition = animationView.layer.zPosition;
        animationView.layer.zPosition = 1000;