答案 0 :(得分:3)
下面的Psuedo代码:
- (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 :(得分:1)
我不会使用滚动视图,而是使用UIPanGestureRecognizer,我会在其中检测当前的#pan; pan offset"并计算动画的当前分数和这两个视图的位置(让我们简化它,使菜单为view1,其余为view2)。 然后我只需在.Changed状态中设置一个合适的变换。 在.Ended状态下,我会看到菜单是否更接近打开或关闭,并创建一个相应设置.toValue的动画。您应该使用CAAnimations或更好 - Facebook pop动画,因为您可以暂停和删除它们,并且视图保持不变并且不会跳转到其初始位置(通常是UIViewAnimate的情况)。
如果您需要帮助编写确切的代码,可以在这里写,我会编辑我的答案。
答案 2 :(得分:1)
有关于该菜单的教程,尽管它在Swift中: https://www.raywenderlich.com/87268/3d-effect-taasky-swift