Commit 9e0f67a1 by Daniel Dahan

working copy of MaterialAnimation and MaterialView

parent dc6c0098
......@@ -220,6 +220,7 @@
65BDD1701BB8CD56006F7F2B /* Label */,
65BDD1551BB6FC60006F7F2B /* Button */,
65BDD1751BB8D44B006F7F2B /* Animation */,
96CEE8BE1BBF56E700DF9844 /* Dynamics */,
964B17B21BBA445D002A9CA0 /* Layout */,
);
path = Source;
......@@ -282,6 +283,13 @@
name = Theme;
sourceTree = "<group>";
};
96CEE8BE1BBF56E700DF9844 /* Dynamics */ = {
isa = PBXGroup;
children = (
);
name = Dynamics;
sourceTree = "<group>";
};
9AAC38521B89553800FE6B2D /* Font */ = {
isa = PBXGroup;
children = (
......
......@@ -49,8 +49,12 @@ public struct MaterialAnimation {
/**
:name: applyBasicAnimation
*/
internal static func applyBasicAnimation(animation: CABasicAnimation, toLayer layer: CALayer, completion: (() -> Void)? = nil) {
groupAnimation(layer, animations: [animation], duration: animation.duration)
internal static func applyBasicAnimation(animation: CABasicAnimation, toLayer layer: CALayer) {
// groupAnimation(layer, animations: [animation], duration: animation.duration)
// CATransaction.begin()
// CATransaction.setAnimationDuration(animation.duration)
// layer.setValue(nil == animation.toValue ? animation.byValue : animation.toValue, forKey: animation.keyPath!)
// CATransaction.commit()
}
/**
......
......@@ -32,17 +32,9 @@ public extension MaterialAnimation {
/**
:name: backgroundColor
*/
public static func backgroundColor(view: UIView, color: UIColor, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
return backgroundColor(view.layer, color: color, duration: duration, completion: completion)
}
/**
:name: backgroundColor
*/
public static func backgroundColor(layer: CALayer, color: UIColor, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
public static func backgroundColor(color: UIColor, duration: CFTimeInterval = 0.25) -> CABasicAnimation {
let animation: CABasicAnimation = backgroundColorAnimation(color)
animation.duration = duration
applyBasicAnimation(animation, toLayer: layer, completion: completion)
return animation
}
......@@ -59,17 +51,9 @@ public extension MaterialAnimation {
/**
:name: cornerRadius
*/
public static func cornerRadius(view: UIView, radius: CGFloat, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
return cornerRadius(view.layer, radius: radius, duration: duration, completion: completion)
}
/**
:name: cornerRadius
*/
public static func cornerRadius(layer: CALayer, radius: CGFloat, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
public static func cornerRadius(radius: CGFloat, duration: CFTimeInterval = 0.25) -> CABasicAnimation {
let animation: CABasicAnimation = cornerRadiusAnimation(radius)
animation.duration = duration
applyBasicAnimation(animation, toLayer: layer, completion: completion)
return animation
}
......@@ -86,17 +70,9 @@ public extension MaterialAnimation {
/**
:name: rotation
*/
public static func rotation(view: UIView, rotations: Int = 1, duration: CFTimeInterval = 0.5, completion: (() -> Void)? = nil) -> CABasicAnimation {
return rotation(view.layer, rotations: rotations, duration: duration, completion: completion)
}
/**
:name: rotation
*/
public static func rotation(layer: CALayer, rotations: Int = 1, duration: CFTimeInterval = 0.5, completion: (() -> Void)? = nil) -> CABasicAnimation {
public static func rotation(rotations: Int = 1, duration: CFTimeInterval = 0.5) -> CABasicAnimation {
let animation: CABasicAnimation = rotationAnimation(rotations)
animation.duration = duration
applyBasicAnimation(animation, toLayer: layer, completion: completion)
return animation
}
......@@ -113,17 +89,9 @@ public extension MaterialAnimation {
/**
:name: scale
*/
public static func scale(view: UIView, transform: CATransform3D, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
return scale(view.layer, transform: transform, duration: duration, completion: completion)
}
/**
:name: scale
*/
public static func scale(layer: CALayer, transform: CATransform3D, duration: CFTimeInterval = 0.25, completion: (() -> Void)? = nil) -> CABasicAnimation {
public static func scale(transform: CATransform3D, duration: CFTimeInterval = 0.25) -> CABasicAnimation {
let animation: CABasicAnimation = scaleAnimation(transform)
animation.duration = duration
applyBasicAnimation(animation, toLayer: layer, completion: completion)
return animation
}
......@@ -140,17 +108,9 @@ public extension MaterialAnimation {
/**
:name: position
*/
public static func position(view: UIView, point: CGPoint, duration: CFTimeInterval = 0.5, completion: (() -> Void)? = nil) -> CABasicAnimation {
return position(view.layer, point: point, duration: duration, completion: completion)
}
/**
:name: position
*/
public static func position(layer: CALayer, point: CGPoint, duration: CFTimeInterval = 0.5, completion: (() -> Void)? = nil) -> CABasicAnimation {
public static func position(point: CGPoint, duration: CFTimeInterval = 0.5) -> CABasicAnimation {
let animation: CABasicAnimation = positionAnimation(point)
animation.duration = duration
applyBasicAnimation(animation, toLayer: layer, completion: completion)
return animation
}
}
\ No newline at end of file
......@@ -55,16 +55,9 @@ public extension MaterialAnimation {
/**
:name: path
*/
public static func path(view: UIView, bezierPath: UIBezierPath, mode: MaterialAnimationRotationMode = .Auto, duration: CFTimeInterval = 1) {
path(view.layer, bezierPath: bezierPath, mode: mode, duration: duration)
}
/**
:name: path
*/
public static func path(layer: CALayer, bezierPath: UIBezierPath, mode: MaterialAnimationRotationMode = .Auto, duration: CFTimeInterval = 1) {
public static func path(bezierPath: UIBezierPath, mode: MaterialAnimationRotationMode = .Auto, duration: CFTimeInterval = 1) -> CAKeyframeAnimation {
let animation: CAKeyframeAnimation = pathAnimation(bezierPath, mode: mode)
animation.duration = duration
applyKeyframeAnimation(animation, toLayer: layer)
return animation
}
}
\ No newline at end of file
......@@ -50,13 +50,6 @@ public class MaterialPulseView : MaterialView {
}
/**
:name: init
*/
public convenience init() {
self.init(frame: CGRectNull)
}
/**
:name: layoutSubviews
*/
public override func layoutSubviews() {
......
......@@ -298,6 +298,41 @@ public class MaterialView : UIView {
visualLayer.cornerRadius = layer.cornerRadius
}
/**
:name: addAnimation
*/
public func addAnimation(animation: CAAnimation) {
if let a = animation as? CABasicAnimation {
a.fromValue = (nil == layer.presentationLayer() ? layer : layer.presentationLayer() as! CALayer).valueForKeyPath(a.keyPath!)
a.delegate = self
a.fillMode = kCAFillModeForwards
a.removedOnCompletion = false
layer.addAnimation(animation, forKey: a.keyPath!)
} else if let a = animation as? CAKeyframeAnimation {
a.delegate = self
a.fillMode = kCAFillModeForwards
a.removedOnCompletion = false
layer.addAnimation(animation, forKey: a.keyPath!)
}
}
/**
:name: animationDidStart
*/
public override func animationDidStart(anim: CAAnimation) {}
/**
:name: animationDidStop
*/
public override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
if let a = anim as? CABasicAnimation {
layer.setValue(nil == a.toValue ? a.byValue : a.toValue, forKey: a.keyPath!)
layer.removeAnimationForKey(a.keyPath!)
} else if let a = anim as? CAKeyframeAnimation {
layer.removeAnimationForKey(a.keyPath!)
}
}
//
// :name: prepareView
//
......
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