我对此gif中的转换有疑问:
这是一款名为Dark Sky的漂亮应用程序。
如何在过渡的即将推出的视图中开始制作动画?
这是多个视图在一个视图控制器中动画,还是多个视图控制器动画进出?
在我们滚动到下一个视图时,我们看到元素彼此独立并且彼此独立地移动。
答案 0 :(得分:2)
尝试查看会话217的Apple's WWDC 2013视频。他们使用iPhone上的锁定屏幕执行类似操作。
具体来说,Dark Sky应用程序似乎使用嵌套的UIScrollViews
。这些“行”中的每一个本身都是分页ScrollView
内的ScrollView
。当拖动外部ScrollView
的整个“页面”时,它们将以编程方式等待滚动中的某个点以使每个行“捕获”,然后跟随外部滚动视图。
答案 1 :(得分:1)
我也是这种转变的粉丝,所以我拍了一下:
源代码在Github上,我在blog post中写了我的实现。
当用户导航时,我捕获滚动位置。然后我转换 这成为每个页面的“滚动因子”。每页的滚动 factor是介于-1和1之间的数字,表示距离的距离 视图。当页面的滚动因子为0时,该页面位于前面和中间 在应用程序中。滚动因子-1表示页面至少为一 屏幕宽度向左偏移,+1表示相反 方向。
随着用户的移动,每个页面都会不断被告知其新的滚动因子 通过应用程序。作为回应,该页面调整了每个标签。 有一个自动布局约束将每个标签固定到左边缘。 该约束的常数与其垂直方向成比例地调整 在页面上的位置 - 换句话说,顶部标签移动较少 底部标签。
为了使效果更圆,可以使用相同的比例因子进行调整 当页面滑入和滑出视图时,每个标签的透明度。
答案 2 :(得分:-1)
如果您的部署目标高于7,则可以使用UINavigationControllerDelegate。
https://stackoverflow.com/a/21796231/1215715
如果没有,那就有一个很好的开源库ADTransitionController