material-motion-swift icon indicating copy to clipboard operation
material-motion-swift copied to clipboard

Explore configuration options for transitions

Open jverkoey opened this issue 8 years ago • 0 comments
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

jverkoey avatar Apr 12 '17 20:04 jverkoey