OTGHelpers 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 23c964b4adcc7e1031874e8b824f426a5ba731cd
4
+ data.tar.gz: 00a864cf631979ccce71453ffe33746064885bf6
5
+ SHA512:
6
+ metadata.gz: 509346ac8df21ae64104d7e99c49e71a17c10a15e1d27d9d9c04c97d6b53b1d17e99397746f844fb66d77716f8bb64435863815112620598bfab98e3c867762e
7
+ data.tar.gz: a6e8092fd789641a23fb54d0dc1ad180c9e4549edafacd80a4886a00e5e9833a0ce652d55d6467c32df2bfbafc7785d5309934abda67b59822b3090d112ff326
@@ -0,0 +1,76 @@
1
+ # OTGHelpers
2
+
3
+ A set of class extenstions I commonly use in my applications for RubyMotion.
4
+
5
+ ## Current additions:
6
+
7
+ ### UILabel
8
+
9
+ #### `auto_height_for_width(change_width=false)`
10
+
11
+ Automatically resizes a UILabel's height based on its contents. Optionally, it can shrink the width as well.
12
+
13
+ ### NSString
14
+
15
+ #### `uiimage`
16
+
17
+ Runs `UIImage.imageNamed(self)` for the string.
18
+
19
+ #### `nsurl`
20
+
21
+ Returns the string as an `NSURL`
22
+
23
+ ### UIView
24
+
25
+ #### `add_borders(locations, color, width = 1)` aliased as `add_border`
26
+
27
+ Adds borders in specified locations on a `UIView`. Possible locations are: `[:top, :left, :right, :bottom]` and can be passed singularly or in an array.
28
+
29
+ #### `add_top_border(color, width)`
30
+ #### `add_right_border(color, width)`
31
+ #### `add_bottom_border(color, width)`
32
+ #### `add_left_border(color, width)`
33
+
34
+ These methods are used by the `add_borders` method and can be called independently if needed.
35
+
36
+ #### `remove_borders` aliased as `remove_border`
37
+
38
+ Removes all borders you've added on a UIView (may also remove other things you've added to the view's `layer`, so be careful with this one!)
39
+
40
+ ### UIImage
41
+
42
+ #### `pad_to(size, args={})`
43
+
44
+ Pads the size of an image to the specified size.
45
+
46
+ #### `template`
47
+
48
+ Returns a UIImage with UIImageRenderingModeAlwaysTemplate
49
+
50
+ ## Installation
51
+
52
+ Add this line to your application's Gemfile:
53
+
54
+ ```ruby
55
+ gem 'OTGHelpers'
56
+ ```
57
+
58
+ And then execute:
59
+
60
+ ```bash
61
+ $ bundle
62
+ ```
63
+
64
+ Or install it yourself as:
65
+
66
+ ```bash
67
+ $ gem install OTGHelpers
68
+ ```
69
+
70
+ ## Contributing
71
+
72
+ 1. Fork it
73
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
74
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
75
+ 4. Push to the branch (`git push origin my-new-feature`)
76
+ 5. Create new Pull Request
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+
3
+ unless defined?(Motion::Project::Config)
4
+ raise "This file must be required within a RubyMotion project Rakefile."
5
+ end
6
+
7
+ lib_dir_path = File.dirname(File.expand_path(__FILE__))
8
+ Motion::Project::App.setup do |app|
9
+ app.files.unshift(Dir.glob(File.join(lib_dir_path, "project/**/*.rb")))
10
+ end
@@ -0,0 +1,12 @@
1
+ class NSString
2
+
3
+ # @return [UIImage]
4
+ def uiimage
5
+ UIImage.imageNamed(self)
6
+ end
7
+
8
+ # @return [NSURL]
9
+ def nsurl
10
+ NSURL.URLWithString(self)
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ class UIImage
2
+ # Pads an image with transparency around it.
3
+ # Requires Sugarcube
4
+ def pad_to(s, args={})
5
+ s = CGSizeMake(s[0], s[1]) if s.is_a?(Array)
6
+ UIImage.canvas(size: s) do |context|
7
+
8
+ if args[:background]
9
+ args[:background].setFill
10
+ CGContextAddRect(context, [[0, 0], s])
11
+ CGContextDrawPath(context, KCGPathFill)
12
+ end
13
+
14
+ if args[:at] == :top_left
15
+ origin = CGPointMake(0, 0)
16
+ else
17
+ origin = CGPointMake((s.width - self.size.width) / 2, (s.height - self.size.height) / 2)
18
+ end
19
+ self.drawAtPoint(origin)
20
+ end
21
+ end
22
+
23
+ # Returns a UIImage with UIImageRenderingModeAlwaysTemplate
24
+ def template
25
+ self.imageWithRenderingMode(UIImageRenderingModeAlwaysTemplate)
26
+ end
27
+
28
+ end
@@ -0,0 +1,18 @@
1
+ class UILabel
2
+ def auto_height_for_width(change_width = false)
3
+ self.lineBreakMode = UILineBreakModeWordWrap
4
+ self.numberOfLines = 0
5
+ maximumLabelSize = CGSizeMake(self.frame.size.width, Float::MAX)
6
+
7
+ attributedText = NSAttributedString.alloc.initWithString(self.text, attributes:{NSFontAttributeName => self.font})
8
+ rect = attributedText.boundingRectWithSize([self.frame.size.width, Float::MAX], options:NSStringDrawingUsesLineFragmentOrigin, context:nil)
9
+
10
+ w = change_width ? rect.size.width.ceil : self.frame.size.width
11
+ expected_label_size = [w, rect.size.height.ceil]
12
+
13
+ new_frame = [self.frame.origin, expected_label_size]
14
+ self.frame = new_frame
15
+ end
16
+ alias :autoHeightForWidth :auto_height_for_width
17
+
18
+ end
@@ -0,0 +1,47 @@
1
+ class UIView
2
+ def add_borders(locations, color, width = 1)
3
+ possible_locations = [:top, :left, :right, :bottom]
4
+ Array(locations).each do |location|
5
+ if possible_locations.include?(location)
6
+ method_call = "add_#{location.to_s}_border"
7
+ self.send(method_call, color, width)
8
+ else
9
+ puts "You must provide a border location in: #{possible_locations}"
10
+ end
11
+ end
12
+ self
13
+ end
14
+ alias :add_border :add_borders
15
+
16
+ def remove_borders
17
+ self.layer.sublayers.copy.each do |layer|
18
+ layer.removeFromSuperlayer
19
+ end if self.layer.sublayers
20
+ end
21
+ alias :remove_border :remove_borders
22
+
23
+ def add_top_border(color, width)
24
+ add_border_with_frame(color, CGRectMake(0, 0, CGRectGetWidth(self.frame), width))
25
+ end
26
+
27
+ def add_right_border(color, width)
28
+ add_border_with_frame(color, CGRectMake(CGRectGetWidth(self.frame) - width, 0, width, CGRectGetHeight(self.frame)))
29
+ end
30
+
31
+ def add_bottom_border(color, width)
32
+ add_border_with_frame(color, CGRectMake(0, CGRectGetHeight(self.frame) - width, CGRectGetWidth(self.frame), width))
33
+ end
34
+
35
+ def add_left_border(color, width)
36
+ add_border_with_frame(color, CGRectMake(0, 0, width, CGRectGetHeight(self.frame)))
37
+ end
38
+
39
+ def add_border_with_frame(color, frame)
40
+ color = color.CGColor if color.is_a?(UIColor)
41
+ border = CALayer.layer.tap do |l|
42
+ l.backgroundColor = color
43
+ l.frame = frame
44
+ end
45
+ self.layer.addSublayer(border)
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ module OTGHelpers
2
+ VERSION = '0.0.5'
3
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: OTGHelpers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Mark Rickert
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: A set of class extenstions I commonly use in my applications for RubyMotion.
28
+ email:
29
+ - mjar81@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - lib/OTGHelpers.rb
36
+ - lib/project/ns_string.rb
37
+ - lib/project/ui_image.rb
38
+ - lib/project/ui_label.rb
39
+ - lib/project/ui_view.rb
40
+ - lib/project/version.rb
41
+ homepage: ''
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.6.6
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: A set of class extenstions I commonly use in my applications for RubyMotion.
65
+ test_files: []