Class: CAAnimation

Inherits:
Object show all
Defined in:
lib/sugarcube-animations/caanimation.rb

Class Method Summary collapse

Class Method Details

.basic(key_path, options = {}, &block) ⇒ Object

If you pass a block, that block will be called at the end of the animation.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sugarcube-animations/caanimation.rb', line 17

def basic(key_path, options={}, &block)
  animation = CABasicAnimation.animationWithKeyPath(key_path)
  _sugarcube_apply_animation_options(animation, options)
  fill_mode = options.fetch(:fill_mode, KCAFillModeForwards)
  animation.fillMode = fill_mode

  animation.fromValue = options[:from] if options.key?(:from)
  animation.toValue = options[:to] if options.key?(:to)
  animation.byValue = options[:by] if options.key?(:by)

  return animation
end

.keyframe(key_path, options = {}, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/sugarcube-animations/caanimation.rb', line 30

def keyframe(key_path, options={}, &block)
  timing_function = options.fetch(:timing, KCAMediaTimingFunctionDefault)
  if timing_function.is_a?(NSString)
    timing_function = CAMediaTimingFunction.functionWithName(timing_function)
  end
  fill_mode = options.fetch(:fill_mode, KCAFillModeForwards)

  animation = CAKeyframeAnimation.animationWithKeyPath(key_path)
  _sugarcube_apply_animation_options(animation, options)
  animation.timingFunction = timing_function
  animation.fillMode = fill_mode

  if options.key?(:values)
    animation.values = options[:values]
  elsif options.key?(:path)
    path = options[:path]
    if path.is_a?(UIBezierPath)
      path = path.CGPath
    end
    animation.path = path
  end

  return animation
end