class PurplishLayout::ConstraintProxy

Attributes

attribute[RW]
constant[RW]
last_constraint[RW]
multiplier[RW]
next_priority[RW]

Public Class Methods

new(view, attribute=nil, multiplier=1, constant=0) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 9
def initialize(view, attribute=nil, multiplier=1, constant=0)
  @view = view
  @attribute = attribute
  @multiplier = multiplier
  @constant = constant
end

Public Instance Methods

*(aNumber) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 16
def *(aNumber)
  ConstraintProxy.new(view, attribute, aNumber, constant)
end
+(aNumber) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 20
def +(aNumber)
  ConstraintProxy.new(view, attribute, multiplier, aNumber)
end
-(aNumber) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 24
def -(aNumber)
  ConstraintProxy.new(view, attribute, multiplier, -aNumber)
end
<=(rhs) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 124
def <=(rhs)
  @operator = NSLayoutRelationLessThanOrEqual
  create_constraint_with_rhs(rhs)
  self
end
>=(rhs) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 130
def >=(rhs)
  @operator = NSLayoutRelationGreaterThanOrEqual
  create_constraint_with_rhs(rhs)
  self
end
attr() click to toggle source

Attributes

# File lib/purplish-layout/purplish-layout.rb, line 111
def attr
  @attribute = __method__
  self
end
attr=(rhs) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 116
def attr=(rhs)
  #Derive reader name from writer
  @attribute = __method__[0..-3].to_sym
  @operator = NSLayoutRelationEqual
  self.last_constraint = create_constraint_with_rhs(rhs)
  self
end
baseline()
Alias for: attr
baseline=(rhs)
Alias for: attr=
bottom()
Alias for: attr
bottom=(rhs)
Alias for: attr=
center_x()
Alias for: attr
center_x=(rhs)
Alias for: attr=
center_y()
Alias for: attr
center_y=(rhs)
Alias for: attr=
create_constraint_with_rhs(rhs) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 32
def create_constraint_with_rhs(rhs)
  if rhs.kind_of? self.class
    owner = rhs.view.common_superview(view)
    c = NSLayoutConstraint.constraintWithItem(view, attribute:attribute.to_layout_attribute, relatedBy:@operator, toItem:rhs.view, attribute:rhs.attribute.to_layout_attribute, multiplier:rhs.multiplier, constant:rhs.constant)
    if next_priority
      c.priority = next_priority
      self.next_priority = nil
    end
    #puts "addConstraint: #{c.inspect}"
    owner.addConstraint(c)
    c
  else
    c = NSLayoutConstraint.constraintWithItem(view, attribute:attribute.to_layout_attribute, relatedBy:@operator, toItem:nil, attribute:NSLayoutAttributeNotAnAttribute, multiplier:0, constant:rhs)
    if next_priority
      c.priority = next_priority
      self.next_priority = nil
    end
    #puts "addConstraint: #{c.inspect}"
    view.superview.addConstraint(c)
    c
  end
end
h(s, metrics=nil, options=0, views=nil) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 55
def h(s, metrics=nil, options=0, views=nil)
  if (s.start_with? 'H:') || (s.start_with? 'V:')
    layout(s, metrics, options, views)
  else
    layout("H:#{s}", metrics, options, views)
  end
end
height()
Alias for: attr
height=(rhs)
Alias for: attr=
layout(s, metrics=nil, options=0, views=nil) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 71
def layout(s, metrics=nil, options=0, views=nil)
  views ||= views_mapping
  if options != 0
    options = case options
              when :align_left
                NSLayoutFormatAlignAllLeft
              when :align_right
                NSLayoutFormatAlignAllRight
              when :align_top
                NSLayoutFormatAlignAllTop
              when :align_bottom
                NSLayoutFormatAlignAllBottom
              when :align_leading
                NSLayoutFormatAlignAllLeading
              when :align_trailing
                NSLayoutFormatAlignAllTrailing
              when :align_center_x
                NSLayoutFormatAlignAllCenterX
              when :align_center_y
                NSLayoutFormatAlignAllCenterY
              when :align_baseline
                NSLayoutFormatAlignAllBaseline
              else
                options
              end
  end
  #Workaround, must wrap views with NSDictionary, otherwise doesn't work for RubyMotion
  c = NSLayoutConstraint.constraintsWithVisualFormat(s, options:options, metrics:metrics, views:NSDictionary.dictionaryWithDictionary(views))
  self.last_constraint = c
  if next_priority
    c.each {|e|e.priority = next_priority}
    self.next_priority = nil
  end
  #puts "addConstraints:"
  #c.each {|e| puts "  #{e.inspect}"}
  view.addConstraints(c)
end
leading()
Alias for: attr
leading=(rhs)
Alias for: attr=
left()
Alias for: attr
left=(rhs)
Alias for: attr=
next_priority=(v) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 28
def next_priority=(v)
  @next_priority = v
end
right()
Alias for: attr
right=(rhs)
Alias for: attr=
top()
Alias for: attr
top=(rhs)
Alias for: attr=
trailing()
Alias for: attr
trailing=(rhs)
Alias for: attr=
v(s, metrics=nil, options=0, views=nil) click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 63
def v(s, metrics=nil, options=0, views=nil)
  if (s.start_with? 'H:') || (s.start_with? 'V:')
    layout(s, metrics, options, views)
  else
    layout("V:#{s}", metrics, options, views)
  end
end
width()
Alias for: attr
width=(rhs)
Alias for: attr=