material-motion-swift
material-motion-swift copied to clipboard
Explore configuration options for transitions
trafficstars
We need some mechanism by which call sites can configure view controller transitions. This is likely via the transitionController.
One option:
viewController.transitionController.options = [:]
Another option that's more type-safe would involve requiring that transitions define a config type like so (this is hacked together pseudo-code):
protocol Transition {
associatedtype Config: TransitionConfig
init(config: Config)
func willBeginTransition(withContext ctx: TransitionContext, runtime: MotionRuntime) -> [Stateful]
}
protocol TransitionConfig {
associatedtype Instance: TransitionInstance
func transitionType() -> TransitionInstance.Type
}
final class SlideTransition: Transition {
func willBeginTransition(withContext ctx: TransitionContext, runtime: MotionRuntime) -> [Stateful] {
}
}
final class SlideTransitionConfig: TransitionConfig {
enum Direction { case up }
var forwardDirection: Direction = .up
static func createTransitionInstance() -> SlideTransitionInstance {
return SlideTransitionInstance()
}
}
let slideTransition = SlideTransition()
slideTransition.forwardDirection = .up
viewController.transitionController.transition = slideTransition