iOS Swift:在同一个View Controller上进行过渡动画

时间:2015-05-26 18:27:21

标签: ios iphone swift uiviewcontroller

如何在单个视图控制器上获得Transition Animation效果(如页面幻灯片) - 这样看起来我正在转换到new page/controller(尽管只有数据在变化视图)?

例如:我有一个UIViewController,它有上一个和下一个按钮。单击“下一步”按钮,“相同UIViewController上会显示不同的标题和图像。

我知道这可以通过UIPageViewController完成 - 但我是iOS的新手,并且发现以这种方式实现起来相当困难。

1 个答案:

答案 0 :(得分:0)

我对此有相同的看法。但是因为我们不希望有复杂的幻灯片动画,所以我不会实现UIPageViewController。相反,我想出了以下解决方案:

  • 该想法是创建快照视图并在其上启动动画,并在用户开始滑动时使用新数据更新该视图。通过这样做,我们可以感觉到我们正在过渡到另一个视图。

  • 下面的示例代码是用Xamarin.iOS编写的,但我相信它可以轻松地转移到Swift / Obj-C:

            UIView snapShotView = View.SnapshotView(false); // Create snapshot for the view (I assumed that View is the container)
            View.Add(snapShotView);
            snapShotView.Frame = View.Frame; //Add snapshot and set its frame so the snapshot will be overlapped the original View
    
            CGRect snapshotEndFrame = snapShotView.Frame;
            snapshotEndFrame.X = -snapShotView.Frame.Width;
    
            UIView.Animate(0.7, 0, UIViewAnimationOptions.CurveEaseInOut,
            () =>
            {
                //Load new data to your View
                ...
    
                //Animate the snapshot view
                snapShotView.Frame = snapshotEndFrame;
            },
            () =>
            {
                //Remove Snap Shot View after doing animation to prevent memory leak
                snapShotView.RemoveFromSuperview();
                snapShotView.Dispose();
            });