首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >侧菜单框翻转三维动画

侧菜单框翻转三维动画
EN

Stack Overflow用户
提问于 2016-07-26 07:11:28
回答 3查看 671关注 0票数 9

我有滚动视图,在滚动视图中有两个视图为MainView,另一个视图为SideMenuView。

我想让动画像下面这样。

知道该怎么做才能让这件事奏效吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-02 12:56:33

Psuedo代码如下:

代码语言:javascript
运行
复制
- (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(红色颜色视图)的框架&向此视图添加pan手势。
  2. 在负x轴上设置sideMenu视图的框架.
  3. 为pan手势识别器创建响应函数,在此函数中调用上述animateSideMenu函数。
  4. 相应地调整动画参数。

试试看,如果有什么事情发生,请告诉我。

票数 3
EN

Stack Overflow用户

发布于 2016-08-03 21:15:18

我不会使用滚动视图,而是使用UIPanGestureRecognizer来检测当前的"pan偏移量“,并计算这两个视图的当前动画部分和位置(让我们简化它,使菜单成为view1和rest view2)。然后,我将简单地在.Changed状态中设置一个适当的转换。在.Ended状态下,我将查看菜单是更接近打开还是关闭,并创建相应设置为.toValue的动画。您应该使用CAAnimations或更好的- 脸谱流行动画,因为您可以暂停并删除它们,视图保持不变,而不是跳转到它们的初始位置(就像UIViewAnimate的情况一样)。

如果你需要帮助写精确的代码,你可以在这里写,我会编辑我的答案。

票数 1
EN

Stack Overflow用户

发布于 2016-08-04 03:08:18

该菜单有教程,尽管它在Swift:https://www.raywenderlich.com/87268/3d-effect-taasky-swift

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38583290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档