Sha256: 7a99736983effffdbb13a183138325c7eda081b7a13ea820111a05d5e33f2642

Contents?: true

Size: 1.25 KB

Versions: 23

Compression:

Stored size: 1.25 KB

Contents

module MotionPrime
  class LabelElement < BaseElement
    include ElementContentPaddingMixin
    include ElementContentTextMixin
    include ElementTextMixin

    before_render :size_to_fit_if_needed
    after_render :size_to_fit

    def view_class
      "MPLabel"
    end

    def size_to_fit
      if computed_options[:size_to_fit]
        if computed_options[:width]
          view.setHeight([cached_content_outer_height, computed_options[:height]].compact.min)
        else
          view.sizeToFit
          # we should re-set values, because sizeToFit do not use padding
          view.setWidth(view.bounds.size.width + content_padding_width)
          view.setHeight(view.bounds.size.height + content_padding_height)
        end
      end
    end

    def size_to_fit_if_needed
      if computed_options[:size_to_fit] && computed_options[:width]
        @computed_options[:height_to_fit] = content_outer_height
      end
    end

    def set_text(value)
      computed_options[:text] = value
      styler = ViewStyler.new(view, CGRectZero, computed_options)
      if styler.options[:attributed_text]
        view.attributedText = styler.options[:attributed_text]
      else
        view.text = value
      end
      @content_height = nil
      size_to_fit
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
motion-prime-1.0.0 motion-prime/elements/label.rb
motion-prime-0.9.9.2 motion-prime/elements/label.rb
motion-prime-0.9.9.1 motion-prime/elements/label.rb
motion-prime-0.9.9 motion-prime/elements/label.rb
motion-prime-0.9.8 motion-prime/elements/label.rb
motion-prime-0.9.7 motion-prime/elements/label.rb
motion-prime-0.9.6 motion-prime/elements/label.rb
motion-prime-0.9.5 motion-prime/elements/label.rb
motion-prime-0.9.4 motion-prime/elements/label.rb
motion-prime-0.9.3 motion-prime/elements/label.rb
motion-prime-0.9.2 motion-prime/elements/label.rb
motion-prime-0.9.1 motion-prime/elements/label.rb
motion-prime-0.9.0 motion-prime/elements/label.rb
motion-prime-0.8.12 motion-prime/elements/label.rb
motion-prime-0.8.11 motion-prime/elements/label.rb
motion-prime-0.8.10 motion-prime/elements/label.rb
motion-prime-0.8.9 motion-prime/elements/label.rb
motion-prime-0.8.8 motion-prime/elements/label.rb
motion-prime-0.8.7 motion-prime/elements/label.rb
motion-prime-0.8.6 motion-prime/elements/label.rb