Sha256: 756ce3d7a9493eeec0acc4d5c51ee8667584814630f13d2e47ab4f3e2a0791fa

Contents?: true

Size: 1.82 KB

Versions: 24

Compression:

Stored size: 1.82 KB

Contents

# ** What is a Section? **
#
# "Section" is something like "partial" which you may know from RubyOnRails. 
# In the first look it's just a list of elements which will be added to the "Screen".
# But the magic is inside. 
# When you add "Element" to a "Section", e.g. image or label, 
# it will try to draw it using CALayer/CGContext/etc, instead of adding new UIView.
# That way increases application speed (especially on Table elements) by 5-10 times.
#
# Let's get started.

# ** Create a section. **
#
# Just inherit it from `Prime::Section`.

class FooSection < Prime::Section
end

# ** Add some elements to the section. **
#
# Each element should have name and type: "image", "label", "button", etc. 
#
# When you send `:text` option, type will be "label" by default.
#
# When you send `:image` option, type will be "image" by default.

class FooSection < Prime::Section
  element :welcome, text: 'Hello World!'
  element :avatar, image: 'images/users/avatar.jpg'
  element :cheer, type: :button
end

# ** Render Section to Screen **
# 
# NOTE: it's recommended to use instance variables for sections, e.g. `@main_section` instead of `main_section`.

class FooScreen < Prime::Screen
  def render
    @main_section = FooSection.new(screen: self)
    @main_section.render
  end
end

# ** Add some styles for section **
# 
# Generally styles are just attributes of UIView elements.
#
# Let's style the UILabel element (:welcome label element we added above.)
#
# We send :foo parameter to `define`, because we have section named `foo` (FooSection) 
# and :welcome parameter to `style`, because the name of element is `welcome`.
#
Prime::Styles.define :foo do
  style :welcome,
    text_color: :black,
    top: 100,
    width: 320,
    left: 20,
    font: proc { :system.uifont(20) },
    size_to_fit: true,
end

# ** Next **
#
# [Read more about Models](models.html)

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
motion-prime-0.7.1 doc/code/sections.rb
motion-prime-0.7.0 doc/code/sections.rb
motion-prime-0.6.0 doc/code/sections.rb
motion-prime-0.5.7 doc/code/sections.rb