iOS页面翻转

作者: 追梦小怪兽 | 来源:发表于2018-02-03 15:29 被阅读576次
    • 前言

      项目中遇到一个页面翻转的需求,完成之后写出来希望能帮助到需要的人。
    • 说说思路
      1. 首先我们需要翻转的是整个window,而不是某个控制器。因为,如果只翻转控制器。那么你下一层的控制器在你翻转的时候回显示出来。
      2. 翻转多少呢?180度。然后你就错了。当翻转到180 度的时候你会发现vc中的所有空间都反了。。所以要转个圈,也就是360度。
      3. 然后翻转的时候在什么时候加载下个vc 呢?我这边是在第一个控制器翻转到90度的时候,初始化。然后设置alpha。
      4. 最后翻转到90度之后,显示下一个控制器。
        废话不多说直接上代码,比较简单。
        //  来吧旋转动画
        __weak typeof(self) weakSelf = self;
        [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            weakSelf.view.layer.transform = CATransform3DMakeRotation(M_PI/2.0, 0, 1, 0);  // 当前view,这句代码可以不要。这是我的需求
            UIWindow *window = [UIApplication sharedApplication].keyWindow;  
            window.layer.transform = CATransform3DMakeRotation(M_PI/2.0, 0, 1, 0);
        } completion:^(BOOL finished) {
            NewInfoViewController *newVC =[NewInfoViewController new];
            [weakSelf presentViewController:newVC animated:NO completion:nil];
        }];
    

    在第二个界面中

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
            [UIView animateWithDuration:0 animations:^{
                self.view.layer.transform = CATransform3DMakeRotation(3*M_PI/2, 0, 1, 0);// 先将页面翻转270度。此时是你看不见这个控制器的,设置了alpha
            } completion:^(BOOL finished) {
                self.view.alpha = 1;
                [UIView animateWithDuration:0.5 animations:^{
                    // 先将window 翻转270.
                    UIWindow *window = [UIApplication sharedApplication].keyWindow;
                    window.layer.transform = CATransform3DRotate(window.layer.transform,M_PI*3/2.0, 0, 1, 0);
                    self.view.layer.transform = CATransform3DRotate(self.view.layer.transform, M_PI/2, 0, 1, 0);
                } completion:^(BOOL finished) {
                }];
            }];
        }
    }
    

    OK, 就这样搞定了需求。不要的有没有小伙伴还有更好的解决办法。希望小伙伴给点建议。
    这里主要用到了 CATransform3DRotate 和 CATransform3DMakeRotation这2个方法。对x.y.z轴的翻转。
    希望能帮助到需要的人。。

    ---来自涛胖子的工作笔记

    相关文章

      网友评论

        本文标题:iOS页面翻转

        本文链接:https://www.haomeiwen.com/subject/kjyuzxtx.html