展开/折叠UITableViewCell以实现类似Evernote的过渡

时间:2014-11-26 01:09:09

标签: ios objective-c uiviewcontroller uiviewanimationtransition custom-transition

我有兴趣实现视图控制器之间的转换,非常类似于Evernote的iOS应用程序中的转换:

enter image description here

当点击“位置”时,它会平滑地扩展为看起来像UINavigationController的绿色边框。要折叠它,我可以点击“返回”或从屏幕左侧滑动以逐渐过渡到主屏幕。

我不是在寻找准确的代码示例来进行复制粘贴,而是寻找有关哪些概念和Apple API可以利用的高级指导。更具体地说,

  • 这可能会使用哪些转换/动画API?
  • “地点”展开后,如何在整个视图控制器周围实现绿色边框?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

答案 2 :(得分:1)

需要考虑的方法:您可以使用具有两种不同布局的UICollectionView。未展开的布局可以只是UICollectionViewFlowLayout,展开的布局可以是缩小/淡化除要扩展的单元格之外的所有单元格的子类。然后,您可以使用setCollectionViewLayout:animated:在它们之间切换。

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

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