module BubbleWrap::Constants
Public Instance Methods
get(base, *values)
click to toggle source
@param [String] base of the constant @param [Integer, NSArray, String
, Symbol] the suffix of the constant
when NSArray, will return the bitmask of all suffixes in the array
@return [Integer] the constant for this base and suffix Examples get(“UIReturnKey”, :done) => UIReturnKeyDone == 9 get(“UIReturnKey”, “done”) => UIReturnKeyDone == 9 get(“UIReturnKey”, 9) => 9 get(“UIImagePickerControllerSourceType”, [“photo_library”, “camera”, “saved_photos_album”]) => 3 get(“UIActivityType”, [:air_drop, :print]) => [“com.apple.UIKit.activity.AirDrop”, “com.apple.UIKit.activity.Print”]
# File motion/util/constants.rb, line 26 def get(base, *values) if values.is_a? NSArray value = values.size == 1 ? values.first : values.flatten else value = values end case value when Numeric value.to_i when NSArray unless get(base, value.first).is_a? Fixnum value.map { |v| get(base, v) } else value.reduce { |i, j| get(base, i) | get(base, j) } end else value = value.to_s.camelize Kernel.const_get("#{base}#{value}") end end
register(*ui_constants)
click to toggle source
Looks like RubyMotion only adds UIKit constants at compile time. If you don't use these directly in your code, they don't get added to Kernel and Constants.get
crashes. Examples Constants.register
UIReturnKeyDone, UIReturnKeyNext
# File motion/util/constants.rb, line 12 def register(*ui_constants) # do nothing, just get the constants in the code end