如何在单个视图控制器上获得Transition Animation
效果(如页面幻灯片) - 这样看起来我正在转换到new page/controller
(尽管只有数据在变化视图)?
例如:我有一个UIViewController
,它有上一个和下一个按钮。单击“下一步”按钮,“相同”UIViewController
上会显示不同的标题和图像。
我知道这可以通过UIPageViewController
完成 - 但我是iOS的新手,并且发现以这种方式实现起来相当困难。
答案 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();
});