15

我对实现视图控制器之间的转换非常感兴趣,这与 Evernote 的 iOS 应用程序中的转换非常相似:

在此处输入图像描述

当“Places”被点击时,它会平滑地扩展成看起来像 UINavigationController 的东西,周围有一个绿色边框。要折叠它,我可以点击“返回”或从屏幕左侧滑动以逐渐过渡到主屏幕。

我不是在寻找精确的代码示例来复制粘贴,而是在寻找关于使用哪些概念和 Apple API 的高级指导。进一步来说,

  • 这可能使用哪些过渡/动画 API?
  • 一旦“地方”展开,如何在整个视图控制器周围实现绿色边框?
4

3 回答 3

3

我认为它使用自定义过渡来实现放大效果。它可以通过使用这个第 3 方框架来实现:https ://github.com/mluisbrown/LCZoomTransition作为一种模式,因为目标视图控制器看起来像一个模态而不是目标视图控制器。

于 2015-01-09T04:05:24.873 回答
1

从全屏位置周围的边界来看,我会说它不是一个UINavigationController,而是两个视图控制器,它们之间有自定义转换。

这是在 iOS7 中引入的,你可以在网上找到一些教程来实现任何自定义转换:

http://www.objc.io/issue-12/custom-container-view-controller-transitions.html

https://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIViewControllerTransitioningDelegate_protocol/index.html

于 2014-11-26T02:07:09.027 回答
1

要考虑的一种方法:您可以将 aUICollectionView与两种不同的布局一起使用。未展开的布局可以只是 aUICollectionViewFlowLayout并且展开的布局可以是一个子类,它可以缩小/淡化除您想要展开的单元格之外的所有单元格。然后你可以使用setCollectionViewLayout:animated:它们在它们之间切换。

绿色边框只是父视图的背景,因为这不会涉及UINavigationController.

如果您希望交互式滑动手势从展开的布局返回,您可以将 aUIScreenEdgePanGestureRecognizer连接到交互式集合视图布局动画(请参阅 参考资料startInteractiveTransitionToCollectionViewLayout:completion:)。

于 2015-03-08T05:07:27.833 回答