Class: Walt::Asset

Inherits:
Object
  • Object
show all
Extended by:
Support::AttrDefault
Defined in:
lib/walt/asset/asset.rb

Direct Known Subclasses

ImageAsset, TextAsset

Constant Summary collapse

PROPERTIES =
[:id, :position, :size, :view, :content_mode, :clips_to_bounds, :background_color]

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Support::AttrDefault

attr_default

Constructor Details

#initialize(params = {}) ⇒ Asset

Returns a new instance of Asset.



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/walt/asset/asset.rb', line 32

def initialize(params = {})
  case params
  when UIView
    self.view = params
  when NSDictionary
    params.each do |key, value|
      if PROPERTIES.include?(key.to_sym)
        self.send("#{key}=", value)
      end
    end
  end
end

Class Method Details

.for(params = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/walt/asset/asset.rb', line 22

def self.for(params = {})
  if params.is_a?(NSDictionary) && params[:url]
    Walt::ImageAsset.new(params)
  elsif params.is_a?(NSDictionary) && params[:text]
    Walt::TextAsset.new(params)
  else
    self.new(params)
  end
end

Instance Method Details

#content_mode=(content_mode) ⇒ Object



48
49
50
51
# File 'lib/walt/asset/asset.rb', line 48

def content_mode=(content_mode)
  _content_mode = content_mode.is_a?(NSArray) ? content_mode : [content_mode]
  @content_mode = _content_mode
end

#on_ready(trigger = false, &callback) ⇒ Object



71
72
73
74
75
76
77
78
79
# File 'lib/walt/asset/asset.rb', line 71

def on_ready(trigger = false, &callback)
  @on_ready_callbacks ||= []
  if callback
    @on_ready_callbacks << callback
  elsif trigger
    @on_ready_callbacks.each {|c| c.call(self)}
    @on_ready_callbacks = []
  end
end

#viewObject



59
60
61
62
63
64
65
66
67
68
69
# File 'lib/walt/asset/asset.rb', line 59

def view
  @view ||= UIView.alloc.initWithFrame(CGRectZero).tap do |view|
    view.frame = [self.position || CGPointZero, self.size || CGSizeZero]
    view.backgroundColor = self.background_color.to_color if self.background_color
    view.contentMode = self.view_content_mode
    view.clipsToBounds = self.clips_to_bounds
    Dispatch::Queue.main.async do
      self.on_ready(true)
    end
  end
end

#view_content_modeObject



53
54
55
56
57
# File 'lib/walt/asset/asset.rb', line 53

def view_content_mode
  int = 0
  self.content_mode.each { |i| int = int | Walt::Support.constant("UIViewContentMode", i)}
  int
end