class MotionKit::CALayerHelpers

Public Instance Methods

_calculate_frame(f, from: from_layer, relative_to: point) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 104
def _calculate_frame(f, from: from_layer, relative_to: point)
  if from_layer.is_a?(Symbol)
    from_layer = self.get_view(from_layer)
  end

  from_layer_size = from_layer.frame.size
  o = from_layer.convertPoint([0, 0], toLayer: target.superlayer)

  calculate_layer = CALayer.layer
  calculate_layer.frame = [[0, 0], target.frame.size]

  if f.is_a?(Hash)
    f = f.merge(relative: true)
  end
  f = MotionKit.calculate(calculate_layer, :frame, f, target.superlayer || parent_layout.parent)
  f.origin.x += o.x
  f.origin.y += o.y

  case point[:x]
  when :min, :reset
    # pass
  when :mid
    f.origin.x += (from_layer_size.width - f.size.width) / 2.0
  when :max
    f.origin.x += from_layer_size.width - f.size.width
  when :before
    f.origin.x -= f.size.width
  when :after
    f.origin.x += from_layer_size.width
  else
    f.origin.x += point[:x]
  end

  case point[:y]
  when :min, :reset
    # pass
  when :mid
    f.origin.y += (from_layer_size.height - f.size.height) / 2.0
  when :max
    f.origin.y += from_layer_size.height - f.size.height
  when :above
    f.origin.y -= f.size.height
  when :below
    f.origin.y += from_layer_size.height
  else
    f.origin.y += point[:y]
  end

  return f
end
above(from_layer, f={}) click to toggle source

The first arg can be a layer or a frame @example

frame above(layer, [[0, 0], [100, 20]])
frame above(:layer, x: 0, y: 0, width: 100, height: 20)
frame above(:layer, down: 0, right: 0, width: 100, height: 20)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 286
def above(from_layer, f={})
  _calculate_frame(f, from: from_layer, relative_to: { x: :reset, y: :above })
end
add_child(subview, options={}) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_helpers.rb, line 12
def add_child(subview, options={})
  target.addSublayer(subview)
end
after(from_layer, f={}) click to toggle source

The first arg can be a layer or a frame @example

frame after(layer, [[0, 0], [100, 20]])
frame after(:layer, x: 0, y: 0, width: 100, height: 20)
frame after(:layer, down: 0, right: 0, width: 100, height: 20)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 314
def after(from_layer, f={})
  _calculate_frame(f, from: from_layer, relative_to: { x: :after, y: :reset })
end
Also aliased as: right_of
before(from_layer, f={}) click to toggle source

The first arg can be a layer or a frame @example

frame before(layer, [[0, 0], [100, 20]])
frame before(:layer, x: 0, y: 0, width: 100, height: 20)
frame before(:layer, down: 0, right: 0, width: 100, height: 20)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 304
def before(from_layer, f={})
  _calculate_frame(f, from: from_layer, relative_to: { x: :before, y: :reset })
end
Also aliased as: left_of
below(from_layer, f={}) click to toggle source

The first arg can be a layer or a frame @example

frame below(layer, [[0, 0], [100, 20]])
frame below(:layer, x: 0, y: 0, width: 100, height: 20)
frame below(:layer, down: 0, right: 0, width: 100, height: 20)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 295
def below(from_layer, f={})
  _calculate_frame(f, from: from_layer, relative_to: { x: :reset, y: :below })
end
bottom(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 40
def bottom(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.origin.y = MotionKit.calculate(target, :height, value, superview) - f.size.height
  target.frame = f
  return CGRectGetMaxY(f)
end
center(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 83
def center(value)
  superview = target.superlayer || parent_layout.parent
  target.center = MotionKit.calculate(target, :center, value, superview)
  return target.center
end
Also aliased as: middle
center_x(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 22
def center_x(value)
  c = target.center
  superview = target.superlayer || parent_layout.parent
  c.x = MotionKit.calculate(target, :width, value, superview)
  target.center = c
  return CGRectGetMidX(target.frame)
end
Also aliased as: middle_x
center_y(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 48
def center_y(value)
  c = target.center
  superview = target.superlayer || parent_layout.parent
  c.y = MotionKit.calculate(target, :height, value, superview)
  target.center = c
  return CGRectGetMidY(target.frame)
end
Also aliased as: middle_y
default_root() click to toggle source

platform specific default root view

# File lib/motion-kit-cocoa/helpers/calayer_helpers.rb, line 8
def default_root
  self.class.targets.layer
end
frame(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 98
def frame(value)
  superview = target.superlayer || parent_layout.parent
  target.frame = MotionKit.calculate(target, :frame, value, superview)
  return target.frame
end
from_bottom(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_bottom(width: 80, height: 22)
frame from_bottom(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 257
def from_bottom(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :mid, y: :max })
end
from_bottom_left(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_bottom_left(width: 80, height: 22)
frame from_bottom_left(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 243
def from_bottom_left(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :min, y: :max })
end
from_bottom_right(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_bottom_right(width: 80, height: 22)
frame from_bottom_right(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 271
def from_bottom_right(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :max, y: :max })
end
from_center(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_center(width: 80, height: 22)
frame from_center(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 215
def from_center(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :mid, y: :mid })
end
from_left(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_left(width: 80, height: 22)
frame from_left(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 201
def from_left(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :min, y: :mid })
end
from_right(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_right(width: 80, height: 22)
frame from_right(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 229
def from_right(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :max, y: :mid })
end
from_top(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_top(width: 80, height: 22)
frame from_top(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 173
def from_top(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :mid, y: :min })
end
from_top_left(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_top_left(width: 80, height: 22)
frame from_top_left(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 159
def from_top_left(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :min, y: :min })
end
from_top_right(from_layer=nil, f=nil) click to toggle source

The first arg can be a layer or a frame @example

frame from_top_right(width: 80, height: 22)
frame from_top_right(another_layer, width: 80, height: 22)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 187
def from_top_right(from_layer=nil, f=nil)
  if from_layer.is_a?(Hash)
    f = from_layer
    from_layer = nil
  end
  f ||= {}
  from_layer ||= target.superlayer
  _calculate_frame(f, from: from_layer, relative_to: { x: :max, y: :min })
end
h(value)
Alias for: height
height(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 66
def height(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.size.height = MotionKit.calculate(target, :height, value, superview)
  target.frame = f
  return CGRectGetHeight(f)
end
Also aliased as: h
layer() click to toggle source

a more appropriate name for the root layer

# File lib/motion-kit-cocoa/helpers/calayer_helpers.rb, line 21
def layer
  self.view
end
left(value)
Alias for: x
left_of(from_layer, f={})
Alias for: before
middle(value)
Alias for: center
middle_x(value)
Alias for: center_x
middle_y(value)
Alias for: center_y
origin(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 75
def origin(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.origin = MotionKit.calculate(target, :origin, value, superview)
  target.frame = f
  return target.frame.origin
end
relative_to(from_layer, f) click to toggle source

The first arg must be a layer @example

frame relative_to(layer, [[0, 0], [100, 20]])
frame relative_to(:layer, x: 0, y: 0, width: 100, height: 20)
frame relative_to(:layer, down: 0, right: 0, width: 100, height: 20)
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 324
def relative_to(from_layer, f)
  _calculate_frame(f, from: from_layer, relative_to: { x: :reset, y: :reset })
end
remove_child(subview) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_helpers.rb, line 16
def remove_child(subview)
  subview.removeFromSuperlayer
end
right(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 14
def right(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.origin.x = MotionKit.calculate(target, :width, value, superview) - f.size.width
  target.frame = f
  return CGRectGetMaxX(f)
end
right_of(from_layer, f={})
Alias for: after
size(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 90
def size(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.size = MotionKit.calculate(target, :size, value, superview)
  target.frame = f
  return target.frame.size
end
top(value)
Alias for: y
w(value)
Alias for: width
width(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 57
def width(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.size.width = MotionKit.calculate(target, :width, value, superview)
  target.frame = f
  return CGRectGetWidth(f)
end
Also aliased as: w
x(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 5
def x(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.origin.x = MotionKit.calculate(target, :width, value, superview)
  target.frame = f
  return CGRectGetMinX(f)
end
Also aliased as: left
y(value) click to toggle source
# File lib/motion-kit-cocoa/helpers/calayer_frame_helpers.rb, line 31
def y(value)
  f = target.frame
  superview = target.superlayer || parent_layout.parent
  f.origin.y = MotionKit.calculate(target, :height, value, superview)
  target.frame = f
  return CGRectGetMinY(f)
end
Also aliased as: top