Commit 6df970aa by Daniel Dahan

reworked TransitionPreprocessor

parent 5c4a028f
...@@ -29,43 +29,34 @@ ...@@ -29,43 +29,34 @@
import UIKit import UIKit
public enum CascadeDirection { public enum CascadeDirection {
case topToBottom case topToBottom
case bottomToTop case bottomToTop
case leftToRight case leftToRight
case rightToLeft case rightToLeft
case radial(center:CGPoint) case radial(center:CGPoint)
case inverseRadial(center:CGPoint) case inverseRadial(center:CGPoint)
var comparator: (UIView, UIView) -> Bool {
switch self { var comparator: (UIView, UIView) -> Bool {
case .topToBottom: switch self {
return { return $0.frame.minY < $1.frame.minY } case .topToBottom:
case .bottomToTop: return { return $0.frame.minY < $1.frame.minY }
return { return $0.frame.maxY == $1.frame.maxY ? $0.frame.maxX > $1.frame.maxX : $0.frame.maxY > $1.frame.maxY }
case .leftToRight: case .bottomToTop:
return { return $0.frame.minX < $1.frame.minX } return { return $0.frame.maxY == $1.frame.maxY ? $0.frame.maxX > $1.frame.maxX : $0.frame.maxY > $1.frame.maxY }
case .rightToLeft:
return { return $0.frame.maxX > $1.frame.maxX } case .leftToRight:
case .radial(let center): return { return $0.frame.minX < $1.frame.minX }
return { return $0.center.distance(center) < $1.center.distance(center) }
case .inverseRadial(let center): case .rightToLeft:
return { return $0.center.distance(center) > $1.center.distance(center) } return { return $0.frame.maxX > $1.frame.maxX }
}
} case .radial(let center):
return { return $0.center.distance(center) < $1.center.distance(center) }
init?(_ string: String) {
switch string { case .inverseRadial(let center):
case "bottomToTop": return { return $0.center.distance(center) > $1.center.distance(center) }
self = .bottomToTop }
case "leftToRight":
self = .leftToRight
case "rightToLeft":
self = .rightToLeft
case "topToBottom":
self = .topToBottom
default:
return nil
} }
}
} }
class CascadePreprocessor: MotionPreprocessor { class CascadePreprocessor: MotionPreprocessor {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment