Method: MotionPrime::Layout#add_view

Defined in:
motion-prime/views/layout.rb

#add_view(klass, options = {}, &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'motion-prime/views/layout.rb', line 6

def add_view(klass, options = {}, &block)
  options = options.clone
  bounds = if view_stack.empty?
    options.delete(:parent_view).try(:bounds) || CGRectZero
  else
    view_stack.last.bounds
  end
  builder = ViewBuilder.new(klass, options)
  options = builder.options.merge(calculate_frame: true, bounds: bounds)
  view = builder.view
  if render_target = options.delete(:render_target)
    options[:bounds] = render_target.bounds
    render_target.addSubview(view)
  elsif view_stack.any?
    view_stack.last.addSubview(view)
  end

  setup(view, options, &block)
  view.on_added if view.respond_to?(:on_added)

  view
end