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
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
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
next_priority=(v)
click to toggle source
# File lib/purplish-layout/purplish-layout.rb, line 28 def next_priority=(v) @next_priority = v end
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