2016-07-26 76 views
9

我有scrollview和inside scrollview我有2个视图作为MainView和另一个SideMenuView。框翻转三维动画的侧面菜单

我想制作如下所示的动画。

enter image description here

任何想法需要做得到这个工作是什么?

+0

可能是你可以使用侧面菜单这样的动画,而不是你的。 https://github.com/Yalantis/Side-Menu.iOS –

+0

@MeetDoshi:有很多替代品,但我想用这种结构做... –

回答

3

的伪代码如下:

- (void)animateSideMenu{ 
homeView.frame = CGRectMake(sideMenuWidth, 0.0, (self.view.frame.size.width - sideMenuWidth), self.view.frame.size.height); 
[UIView animateWithDuration:1.0 delay:0.0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
        sideMenu.frame = CGRectMake(0.0, 0.0, sideMenuWidth, sideMenuHeight); 
        [self flipAnimation]; 
} completion:^(BOOL finished) { 

}]; 
} 

- (void)flipAnimation{ 
CABasicAnimation *yRotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; 
yRotate.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 1, 0)]; 
yRotate.toValue = @(M_PI * 1.5); 
yRotate.duration = 0.5; 
yRotate.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
[sideMenu.layer addAnimation:yRotate forKey:@"yRotate"]; 
} 

下面是开发这种类型的动画步骤:

  1. 设置屏幕尺寸的homeView(红色视图)的帧&添加平移姿势至这个观点。
  2. 在负x轴上设置sideMenu视图的框架。
  3. 为平移手势识别器创建响应函数,在此函数中调用上述animateSideMenu函数。
  4. 相应地调整动画参数。

试一下&如果有任何问题,请告诉我。

+0

@fahim,对你有帮助吗? –

+0

现在检查...它没有动画 –

+0

我必须做'CABasicAnimation * yRotate = [CABasicAnimation animationWithKeyPath:@“transform.rotation.y”];'但这只是旋转侧菜单,这不是我正在寻找的。 .. –

1

我不会使用scrollview,而是使用UIPanGestureRecognizer来检测当前的“平移偏移量”,并计算当前动画的一小部分以及这两个视图的位置(让我们简化它,以便菜单是view1和其余的观点2)。然后我会简单地在.Changed状态下设置一个适当的转换。 在.Ended状态我会看看菜单是否更接近于打开或关闭,并创建一个与.toValue设置相应的动画。您应该使用CAAnimations或更好的动画,因为您可以暂停并移除它们,并且视图保持放置状态并且不会跳转到其初始位置(UIViewAnimate常常是这种情况)。

如果您在编写确切代码方面需要帮助,您可以在此填写,我将编辑我的答案。

+0

如果你真的想使用滚动视图,你可以使用scrollViewDidScroll获得相同的值和分数。 –