sugarcube 0.13 → 0.13.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +56 -2
- data/lib/sugarcube/calayer.rb +1 -1
- data/lib/sugarcube/modal.rb +17 -13
- data/lib/sugarcube/symbol.rb +1 -1
- data/lib/sugarcube/uicolor.rb +0 -1
- data/lib/sugarcube/uiview.rb +3 -0
- data/lib/sugarcube/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -141,6 +141,20 @@ decoder.int(key)
|
|
141
141
|
decoder.point(key)
|
142
142
|
decoder.rect(key)
|
143
143
|
decoder.size(key)
|
144
|
+
```
|
145
|
+
|
146
|
+
NSData
|
147
|
+
------
|
148
|
+
|
149
|
+
Going to and from `NSData` is really useful when doing HTTP posts.
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
string_data = 'String'.nsdata # => default encoding is UTF8.
|
153
|
+
image = 'an image'.uiimage
|
154
|
+
image_data = image.nsdata # PNG data representation
|
155
|
+
|
156
|
+
string_data.nsstring # => 'String'
|
157
|
+
image_data.nsimage # => whatever 'an image' was
|
144
158
|
```
|
145
159
|
|
146
160
|
NSDate
|
@@ -294,6 +308,22 @@ The `delta` method is smart.
|
|
294
308
|
# unfortunately you will, in the edge cases, end up with stuff like this:
|
295
309
|
(main)> feb_28_2012 == feb_28_2012.delta(days:1, months:12).delta(months:-12)
|
296
310
|
=> true
|
311
|
+
```
|
312
|
+
|
313
|
+
NSError
|
314
|
+
-------
|
315
|
+
|
316
|
+
`NSError.new` was just a mess, so I made it a legal method.
|
317
|
+
|
318
|
+
```ruby
|
319
|
+
NSError.new('Error Message') # code: 0, domain: 'Error'
|
320
|
+
# with options
|
321
|
+
NSError.new('Error Message', code: 404)
|
322
|
+
|
323
|
+
# error messages ('Error Message' in this example) are stored in a Hash with the
|
324
|
+
# key 'NSLocalizedDescriptionKey'. If you pass a `userInfo` option, it will get
|
325
|
+
# merged with this array. So you can ignore that ugly-looking key.
|
326
|
+
NSError.new('Error Message', code: 404, userInfo: { warnings: ['blabla'] })
|
297
327
|
```
|
298
328
|
|
299
329
|
NSURL
|
@@ -332,6 +362,7 @@ The `delta` method is smart.
|
|
332
362
|
# file location
|
333
363
|
"my.plist".exists? # => NSFileManager.defaultManager.fileExistsAtPath("my.plist")
|
334
364
|
"my.plist".document # => NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0].stringByAppendingPathComponent("my.plist")
|
365
|
+
"my.plist".remove! # => NSFileManager.defaultManager.removeItemAtPath("my.plist".document, error: error) (returns error, if any occurred)
|
335
366
|
|
336
367
|
# NSURL
|
337
368
|
"https://github.com".nsurl # => NSURL.URLWithString("https://github.com")
|
@@ -486,6 +517,7 @@ UIActionSheet.alert 'I mean, is this cool?', buttons: ['Nah', 'With fire!', 'Sur
|
|
486
517
|
```ruby
|
487
518
|
UIView.first_responder # => returns the first responder, starting at UIApplication.sharedApplication.keyWindow
|
488
519
|
my_view.first_responder # => also returns the first responder, but starts looking in my_view
|
520
|
+
my_view.controller # => returns the UIViewController that this view belongs to
|
489
521
|
self.view << subview # => self.view.addSubview(subview)
|
490
522
|
self.view.show # => self.hidden = false
|
491
523
|
self.view.hide # => self.hidden = true
|
@@ -548,14 +580,21 @@ UIButton.contact_add => UIButton.buttonWithType(:contact_add.uibuttontype)
|
|
548
580
|
|
549
581
|
###### UITableView
|
550
582
|
|
583
|
+
Default frame is `[[0, 0], [0, 0]]`, but most containers will resize it to be
|
584
|
+
the correct size. But heads up, it *used* to be `[[0, 0], [320, 480]]` (until
|
585
|
+
the iphone 5 / 4-inch retina came out).
|
586
|
+
|
551
587
|
```ruby
|
588
|
+
UITableView.alloc.initWithFrame([[0, 0], [0, 0]], style: :plain.uitableviewstyle)
|
552
589
|
UITableView.alloc.initWithFrame([[0, 0], [320, 480]], style: :plain.uitableviewstyle)
|
590
|
+
UITableView.alloc.initWithFrame([[0, 0], [320, 568]], style: :plain.uitableviewstyle)
|
553
591
|
# custom frame:
|
554
592
|
UITableView.alloc.initWithFrame([[0, 0], [320, 400]], style: :grouped.uitableviewstyle)
|
555
593
|
|
556
594
|
# =>
|
557
|
-
|
558
595
|
UITableView.plain
|
596
|
+
UITableView.plain([[0, 0], [320, 480]])
|
597
|
+
UITableView.plain([[0, 0], [320, 568]])
|
559
598
|
# custom frame:
|
560
599
|
UITableView.grouped([[0, 0], [320, 400]])
|
561
600
|
```
|
@@ -744,6 +783,8 @@ end
|
|
744
783
|
# other time-related methods
|
745
784
|
# for compatibility with Time methods, the mins/secs (and min/sec) aliases are provided. Personally,
|
746
785
|
# I like the more verbose minutes/seconds.
|
786
|
+
1.millisecond || 2.milliseconds
|
787
|
+
1.millisec || 2.millisecs
|
747
788
|
1.second || 2.seconds
|
748
789
|
1.sec || 2.secs # aliases
|
749
790
|
1.minute || 2.minutes # 1.minute = 60 seconds
|
@@ -762,9 +803,22 @@ date1.today?
|
|
762
803
|
date2.same_day? date1
|
763
804
|
```
|
764
805
|
|
765
|
-
|
806
|
+
NSUserDefaults
|
766
807
|
----------------
|
767
808
|
|
809
|
+
This file does *one* thing very **DANGEROUS**... to "help" with defaults.
|
810
|
+
|
811
|
+
When storing `nil` into `NSUserDefaults`, it is converted into `false`, because
|
812
|
+
Cocoa complains if you give it `nil`, and the RubyMotion runtime refuses to
|
813
|
+
allow the `NSNull.null` object. Without relying on an external project (like
|
814
|
+
[nsnulldammit]<https://github.com/colinta/nsnulldammit>) I don't know of a
|
815
|
+
sensible workaround...
|
816
|
+
|
817
|
+
If you want to "tap into" the defaults system that SugarCube uses, add a
|
818
|
+
`to_nsuserdefaults` method an that will get called if you hand your object to
|
819
|
+
`NSUserDefaults[]=`. However, there's no way to get it *back* later, so the
|
820
|
+
usefulness of this is very limited.
|
821
|
+
|
768
822
|
```ruby
|
769
823
|
'key'.set_default(['any', 'objects']) # => NSUserDefaults.standardUserDefaults.setObject(['any', 'objects'], forKey: :key)
|
770
824
|
'key'.get_default # => NSUserDefaults.standardUserDefaults.objectForKey(:key)
|
data/lib/sugarcube/calayer.rb
CHANGED
data/lib/sugarcube/modal.rb
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
module SugarCube
|
2
2
|
module Modal
|
3
3
|
module_function
|
4
|
-
def present_modal(view_ctlr,
|
5
|
-
target
|
6
|
-
|
4
|
+
def present_modal(view_ctlr, options={}, &block)
|
5
|
+
target = options.fetch(:target, UIApplication.sharedApplication.keyWindow.rootViewController)
|
6
|
+
animated = options.fetch(:animated, true)
|
7
|
+
target.presentViewController(view_ctlr, animated:animated, completion:block)
|
7
8
|
end
|
8
9
|
|
9
|
-
def present_modal_in_nav(view_ctlr,
|
10
|
+
def present_modal_in_nav(view_ctlr, options={}, &block)
|
10
11
|
ctlr = UINavigationController.alloc.initWithRootViewController(view_ctlr)
|
11
12
|
ctlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical
|
12
13
|
|
13
|
-
SugarCube::Modal.present_modal(ctlr,
|
14
|
+
SugarCube::Modal.present_modal(ctlr, options, &block)
|
14
15
|
ctlr
|
15
16
|
end
|
16
17
|
|
17
|
-
def dismiss_modal(
|
18
|
-
target
|
18
|
+
def dismiss_modal(options={}, &block)
|
19
|
+
target = options.fetch(:target, UIApplication.sharedApplication.keyWindow.rootViewController)
|
19
20
|
target.dismissViewControllerAnimated(true, completion:block)
|
20
21
|
end
|
21
22
|
end
|
@@ -24,16 +25,19 @@ end
|
|
24
25
|
|
25
26
|
class UIViewController
|
26
27
|
|
27
|
-
def present_modal(view_ctlr, &block)
|
28
|
-
|
28
|
+
def present_modal(view_ctlr, options={}, &block)
|
29
|
+
options = options.merge(target: self)
|
30
|
+
super(view_ctlr, options, &block)
|
29
31
|
end
|
30
32
|
|
31
|
-
def present_modal_in_nav(view_ctlr, &block)
|
32
|
-
|
33
|
+
def present_modal_in_nav(view_ctlr, options={}, &block)
|
34
|
+
options = options.merge(target: self)
|
35
|
+
super(view_ctlr, options, &block)
|
33
36
|
end
|
34
37
|
|
35
|
-
def dismiss_modal(view_ctlr, &block)
|
36
|
-
|
38
|
+
def dismiss_modal(view_ctlr, options={}, &block)
|
39
|
+
options = options.merge(target: self)
|
40
|
+
super(view_ctlr, options, &block)
|
37
41
|
end
|
38
42
|
|
39
43
|
end
|
data/lib/sugarcube/symbol.rb
CHANGED
@@ -553,7 +553,7 @@ class Symbol
|
|
553
553
|
def uiautoresizemask
|
554
554
|
look_in(Symbol.autoresizemasks)
|
555
555
|
end
|
556
|
-
alias uiviewautoresizing
|
556
|
+
alias uiviewautoresizing uiautoresizemask
|
557
557
|
alias uiautoresizingmask uiautoresizemask
|
558
558
|
alias uiautoresize uiautoresizemask
|
559
559
|
|
data/lib/sugarcube/uicolor.rb
CHANGED
data/lib/sugarcube/uiview.rb
CHANGED
data/lib/sugarcube/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcube
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.13.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-12-
|
13
|
+
date: 2012-12-28 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: ! '== Description
|
16
16
|
|