侧边菜单的盒状翻转3D动画

9
我有一个ScrollView,在ScrollView中我有两个视图,一个是MainView,另一个是SideMenuView。
我想制作以下动画。
任何想法如何实现?

也许你可以使用这个动画的侧边菜单,而不是你自己的。https://github.com/Yalantis/Side-Menu.iOS - Meet Doshi
@MeetDoshi:有许多可供选择,但我想按照这个结构来做... - Fahim Parkar
3个回答

3

Psuedo Code below:

- (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(Red colour view) 的大小为屏幕大小,并在此视图上添加平移手势。
  2. 将侧边菜单视图的框架设置为负的 x 轴。
  3. 创建一个平移手势识别器的响应函数,在该函数中调用上述的 animateSideMenu 函数。
  4. 相应地调整动画参数。
请尝试使用这些步骤,如果有任何问题,请告知我。

@fahim,这对你有帮助吗? - Siddharth Sunil
正在检查...它没有动画。 - Fahim Parkar
我需要创建 CABasicAnimation *yRotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; 但这只是旋转侧边菜单,不是我要找的东西... - Fahim Parkar
@FahimParkar,这只是伪代码,您可以尝试使用不同的参数来探索它可能具有的可能性。yRotate.fromValue和yRotate.toValue一旦您开始玩转CATransform3DMakeRotation的参数,就会打开更多的可能性。 - Siddharth Sunil

1
我不会使用scrollview,而是使用UIPanGestureRecognizer来检测当前的“pan offset”,并计算出当前动画的分数和这两个视图的位置(让我们简化为菜单是view1,其他是view2)。 然后,在.Changed状态下,我会简单地设置适当的变换。 在.Ended状态下,我会看看菜单是更接近打开还是关闭,并创建一个相应设置了.toValue的动画。您应该使用CAAnimations或更好的Facebook pop动画,因为您可以暂停和删除它们,而视图保持不动,不会跳回其初始位置(通常是UIViewAnimate的情况)。
如果您需要编写确切的代码,请在此处编写,我将编辑我的答案。

如果你真的想使用滚动视图,你可以使用scrollViewDidScroll来获取相同的值和分数。 - Andrzej Filipowicz

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接