项目介绍:
CardStackController
卡片视图控制器
https://github.com/jobandtalent/CardStackController
iOS custom controller used in the Jobandtalent app to present new view controllers as cards.
This controller behaves very similar to UINavigationController
, maintaining a stack of ViewControllers. The presentation of new view controllers is different though. New view controllers are presented as a new “Card” in front of the current context. The next GIFs show the control in action.
Gif图展示:
Gif from the Jobandtalent app:
Installation
Use Cocoapods to install this custom control in your project.
pod ‘CardStackController’, '~> 0.1.0’
Usage
Use the main and only public class CardStackController
to present or stack new view controllers.
After creating and configuring CardStackController
, present it modally (it doesn’t need to be animated). Once the controller itself is presented, you can start stacking cards by calling stack(viewController:)
method.
Example of usage:
cardStackController.delegate = self
cardStackController.cardScaleFactor = CGFloat(firstSlider.value)
cardStackController.firstCardTopOffset = CGFloat(secondSlider.value)
cardStackController.topOffsetBetweenCards = CGFloat(thirdSlider.value)
cardStackController.verticalTranslation = CGFloat(fourthSlider.value)
cardStackController.automaticallyDismiss = false
present(cardStackController, animated: false, completion: nil)
let root = newController()
root.delegate = self
cardStackController.stack(viewController: root)
This control is highly customisable and contains many features, among the ones we highlight:
-
The user can dismiss cards by dragging them down.
-
It is possible to tune the
damping
andfrequency
values of the presenting animation to achieve all kinds of animation curves. -
It is possible to customise the top distance between cards, the amount each card gets resized, the size of each card…
-
There are many convenient methods to unstack cards:
unstackAll
,unstackUntilRoot
,unstackLast
, etc.