module MotionKit

@requires MotionKit::Calculator @requires module:MotionKit::OriginCalculator @requires module:MotionKit::SizeCalculator @requires module:MotionKit::FrameCalculator @provides MotionKit::ViewCalculator

@provides MotionKit::Constraint @provides MotionKit::CompoundConstraint

@provides MotionKit::ConstraintsHelpers @requires MotionKit::BaseLayout @requires MotionKit::ConstraintsTarget

@provides MotionKit::ConstraintsTarget

@requires MotionKit::CompoundConstraint

@requires MotionKit::CompoundConstraint

These methods are defined on NSObject, and so we need to fix em.

@requires MotionKit::BaseLayout

@provides MotionKit::CAGradientLayerHelpers @requires MotionKit::CALayerHelpers @requires MotionKit::TreeLayout

@requires MotionKit::CALayerHelpers

@provides MotionKit::CALayerHelpers @requires MotionKit::TreeLayout

These methods are defined in SugarCube's REPL helpers, but we want them to be delegated to either `UIViewHelpers#frame` or `CALayer#setFrame`

@requires MotionKit::BaseLayout

@requires MotionKit::UIViewHelpers @requires MotionKit::UIButtonHelpers @requires MotionKit::CALayerHelpers @requires MotionKit::CAGradientLayerHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::BaseLayout

@requires MotionKit::BaseLayout

@provides MotionKit::UIButtonHelpers @requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@provides MotionKit::Layout @provides MotionKit::UIViewHelpers @requires MotionKit::TreeLayout

@requires MotionKit::NSWindowHelpers @requires MotionKit::NSViewHelpers @requires MotionKit::NSTableViewHelpers @requires MotionKit::NSTableColumnHelpers @requires MotionKit::NSMenuHelpers @requires MotionKit::CALayerHelpers @requires MotionKit::CAGradientLayerHelpers

@requires MotionKit::NSViewHelpers

@requires MotionKit::NSMenuHelpers

@provides MotionKit::MenuLayout @provides MotionKit::NSMenuHelpers @requires MotionKit::TreeLayout

@requires MotionKit::NSMenuHelpers

@provides MotionKit::NSTableColumnHelpers @requires MotionKit::BaseLayout

@provides MotionKit::NSTableViewHelpers @requires MotionKit::NSViewHelpers

@requires MotionKit::NSViewHelpers

@requires MotionKit::NSViewHelpers

@requires MotionKit::NSViewHelpers

@provides MotionKit::Layout @provides MotionKit::NSViewHelpers @requires MotionKit::TreeLayout

@requires MotionKit::NSWindowHelpers

@provides MotionKit::WindowLayout @provides MotionKit::NSWindowHelpers @requires MotionKit::TreeLayout

@requires MotionKit::UIViewHelpers @requires MotionKit::UIButtonHelpers @requires MotionKit::CALayerHelpers @requires MotionKit::CAGradientLayerHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::BaseLayout

@requires MotionKit::BaseLayout

@provides MotionKit::UIButtonHelpers @requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@requires MotionKit::UIViewHelpers

@provides MotionKit::Layout @provides MotionKit::UIViewHelpers @requires MotionKit::TreeLayout

@requires MotionKit::ViewCalculator

@provides MotionKit::Calculator

@provides module:MotionKit::FrameCalculator

@provides module:MotionKit::OriginCalculator

@provides module:MotionKit::SizeCalculator

@provides MotionKit::BaseLayout @requires MotionKit::BaseLayoutClassMethods

@provides MotionKit::BaseLayoutClassMethods

@provides MotionKit::Parent

@provides MotionKit::TreeLayout @requires MotionKit::BaseLayout

@provides MotionKit::Error

Constants

VERSION

Public Instance Methods

appearance_class() click to toggle source
# File lib/motion-kit-ios/ios_util.rb, line 4
def appearance_class
  @appearance_klass ||= UIView.appearance.class
end
base_view_class() click to toggle source
# File lib/motion-kit-ios/ios_util.rb, line 8
def base_view_class
  UIView
end
calculate(view, dimension, amount, full_view=nil) click to toggle source
# File lib/motion-kit/calculator/calculate.rb, line 5
def calculate(view, dimension, amount, full_view=nil)
  ViewCalculator.calculate(view, dimension, amount, full_view)
end
camel_case(str) click to toggle source
# File lib/motion-kit/util.rb, line 8
def camel_case(str)
  str.split('_').map(&:capitalize).join
end
children(view) click to toggle source
# File lib/motion-kit-cocoa/cocoa_util.rb, line 13
def children(view)
  case view
  when CALayer
    view.sublayers
  else
    view.subviews
  end
end
color_class() click to toggle source
# File lib/motion-kit-ios/ios_util.rb, line 16
def color_class
  UIColor
end
default_view_class() click to toggle source
# File lib/motion-kit-ios/ios_util.rb, line 12
def default_view_class
  UIView
end
nearest(view, skip=nil, &test) click to toggle source
  • check view

  • check subviews (unless 'skip' is provided)

  • check siblings (skipping 'view')

  • go up to parent and repeat, skipping children

# File lib/motion-kit-cocoa/cocoa_util.rb, line 35
def nearest(view, skip=nil, &test)
  return nil if view.nil?

  if test.call(view)
    return view
  end

  children = MotionKit.children(view)
  siblings = MotionKit.siblings(view)
  parent = MotionKit.parent(view)

  found = nil

  # only check the children starting at the "root", e.g. nearest hasn't been
  # called recursively.
  if !skip || skip == parent
    children.each do |child|
      found = nearest(child, &test)
      break if found
    end
    return found if found
  end

  # siblings are closer than parents
  # passing 'parent' means only check self and children
  unless skip == parent
    siblings.each do |sibling|
      found = (sibling != view && nearest(sibling, parent, &test))
      break if found
    end
  end

  if found
    found
  elsif skip != parent
    nearest(parent, true, &test)
  end
end
no_intrinsic_metric() click to toggle source
# File lib/motion-kit-ios/ios_util.rb, line 20
def no_intrinsic_metric
  UIViewNoIntrinsicMetric
end
objective_c_method_name(str) click to toggle source
# File lib/motion-kit/util.rb, line 4
def objective_c_method_name(str)
  str.split('_').inject([]) { |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
end
parent(view) click to toggle source
# File lib/motion-kit-cocoa/cocoa_util.rb, line 22
def parent(view)
  case view
  when CALayer
    view.superlayer
  else
    view.superview
  end
end
setter(method_name) click to toggle source
# File lib/motion-kit/util.rb, line 12
def setter(method_name)
  setter = "set#{method_name[0].capitalize}#{method_name[1..-1]}"
  unless setter.end_with?(':')
    setter << ':'
  end
  setter
end
siblings(view) click to toggle source
# File lib/motion-kit-cocoa/cocoa_util.rb, line 4
def siblings(view)
  case view
  when CALayer
    view.superlayer ? view.superlayer.sublayers : []
  else
    view.superview ? view.superview.subviews : []
  end
end