ProMotion-menu 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93421674ad0b5ccdd7bd9cfeddc82adf36e616f7
4
- data.tar.gz: 8425768ebb4745a72c96767f7f7ff0dfea0a8fa4
3
+ metadata.gz: fc35b7957b121ac2a05e893420f5ec279adff29a
4
+ data.tar.gz: 31fbd21f28e8cb617f9fc67e8b48fb132a5c174d
5
5
  SHA512:
6
- metadata.gz: 2c74585488af13f3e574c1b6331ca37645a0caf7bba48ac05d8eabc645a81464839bc2d4bacc766cde794cda4b1d037fed21e46dd48bf9d23f004d66b7e3df7d
7
- data.tar.gz: 00fc0617192f9667f990530c96f95b34dea41e9059c4ed0dc90173be8fbdd0ac2ba1d167ef0d3ffbc97c822fc79a60a81de7bbbbe8669900a829dfbe8dd0881f
6
+ metadata.gz: 7e9363a5b97e96c48f11c2189d1fb4bfe8159f1683bbbefc13ce2501726acf548d14fd9189f7fdca3358b893862da9bad77d0e4f8a164f452d5ad98d990b20db
7
+ data.tar.gz: 77a145ec8c9a57dc52dcd3efc9c35578f4063184a9c0cbb42ff30e06d4ca358105b8e7866c89e0dcf9ef72e50e23e8ec37e5fedc6325640020e8d72f5e672d03
data/README.md CHANGED
@@ -62,6 +62,7 @@ class MenuDrawer < PM::Menu::Drawer
62
62
  self.center = MyGreatAppScreen.new(nav_bar: true)
63
63
  self.left = NavigationScreen
64
64
  self.to_show = [:pan_bezel, :pan_nav_bar]
65
+ self.transition_animation = :swinging_door
65
66
  self.max_left_width = 250
66
67
  self.shadow = false
67
68
  end
@@ -117,6 +118,29 @@ app_delegate.menu.to_show = :pan_center
117
118
 
118
119
  ```
119
120
 
121
+ ## Transition Animation
122
+ Changing the transition animation is easy:
123
+
124
+ ```ruby
125
+ app_delegate.menu.transition_animation = :swinging_door
126
+
127
+ # The following transition animation options are available:
128
+
129
+ :slide # Default. Equivalent to :parallax_1 and similar to the menu
130
+ # in Spotify's app.
131
+
132
+ :slide_and_scale # A slide and scale visual effect similar to Mailbox.app.
133
+ # Scales from 90% to 100%, translates x 50px, and sets alpha
134
+ # from 0.0 to 1.0.
135
+
136
+ :swinging_door # A swinging door effect
137
+
138
+ :parallax_n # A parallax effect where n is a parallax factor.
139
+ :parallax # Equiavlent of :parallax_3
140
+ :parallax_1 # Equivalent of :slide
141
+ :"parallax_#{Float::MAX}" # Equivalent of no animation at all.
142
+ ```
143
+
120
144
  ## Toggling the Menu Drawer Current Screen
121
145
  To make the menu drawer present the menu from anywhere in your app:
122
146
 
@@ -13,6 +13,12 @@ Motion::Project::App.setup do |app|
13
13
  app.files.insert(insert_point, file)
14
14
  end
15
15
 
16
+ # For compatibility with libraries that set detect_dependencies to false
17
+ app.files_dependencies({
18
+ "#{core_lib}/drawer.rb" => [ "#{core_lib}/visibility.rb", "#{core_lib}/gestures.rb" ],
19
+ "#{core_lib}/delegate.rb" => [ "#{core_lib}/drawer.rb" ],
20
+ })
21
+
16
22
  app.pods do
17
23
  pod 'MMDrawerController', '~> 0.5'
18
24
  end
@@ -4,6 +4,7 @@ module ProMotion
4
4
  include ::ProMotion::ScreenModule
5
5
  include Gestures
6
6
  include Visibility
7
+ include Transition
7
8
 
8
9
  def self.new(center=nil, options={})
9
10
  menu = alloc.init
@@ -75,9 +76,11 @@ module ProMotion
75
76
  protected
76
77
 
77
78
  def prepare_controller_for_pm(controller)
78
- controller = set_up_screen_for_open(controller, {})
79
- ensure_wrapper_controller_in_place(controller, {})
80
- controller.navigationController || controller
79
+ unless controller.nil?
80
+ controller = set_up_screen_for_open(controller, {})
81
+ ensure_wrapper_controller_in_place(controller, {})
82
+ controller.navigationController || controller
83
+ end
81
84
  end
82
85
 
83
86
  def default_completion_block
@@ -0,0 +1,48 @@
1
+ module ProMotion; module Menu
2
+ module Transition
3
+
4
+ VISUAL_STATES = {
5
+ # Creates a slide and scale visual state block that gives an experience
6
+ # similar to Mailbox.app. It scales from 90% to 100%, and translates 50
7
+ # pixels in the x direction. In addition, it also sets alpha from 0.0 to 1.0.
8
+ slide_and_scale: MMDrawerVisualState.slideAndScaleVisualStateBlock,
9
+
10
+ # Creates a slide visual state block that gives the user an experience that
11
+ # slides at the same speed of the center view controller during animation.
12
+ # This is equal to calling parallaxVisualStateBlockWithParallaxFactor: with
13
+ # a parallax factor of 1.0. This is similar to the menu in Spotify's app.
14
+ slide: MMDrawerVisualState.slideVisualStateBlock,
15
+
16
+ # Creates a parallax experience that slides the side drawer view controller
17
+ # at a different rate than the center view controller during animation. For
18
+ # every parallaxFactor of points moved by the center view controller, the side
19
+ # drawer view controller will move 1 point. Passing in 1.0 is the equivalent
20
+ # of a applying a sliding animation, while passing in 'MAX_FLOAT' is the equivalent
21
+ # of having no animation at all.
22
+ parallax: MMDrawerVisualState.parallaxVisualStateBlockWithParallaxFactor(3),
23
+
24
+ # Creates a swinging door visual state block that gives the user an experience that
25
+ # animates the drawer in along the hinge.
26
+ swinging_door: MMDrawerVisualState.swingingDoorVisualStateBlock
27
+ }
28
+
29
+ def transition_animation=(visual_block)
30
+ # Parallax requires a parallax_factor. Set it by passing the visual_block
31
+ # block in with underscore parallax_factor attached to the end. i.e.
32
+ # transition_animation = :parallax_6 for parallax_factor 6.
33
+ self.setDrawerVisualStateBlock(mask_for_transition(visual_block))
34
+ end
35
+
36
+ def mask_for_transition(visual_block)
37
+ unless visual_block.nil?
38
+ if visual_block.include? "parallax"
39
+ parallax_factor = visual_block.include?("_") ? visual_block.split("_")[1].to_i : 3
40
+ visual_state = MMDrawerVisualState.parallaxVisualStateBlockWithParallaxFactor(parallax_factor)
41
+ end
42
+ end
43
+ visual_state ||= VISUAL_STATES[visual_block]
44
+ visual_state
45
+ end
46
+
47
+ end
48
+ end; end
@@ -1,7 +1,7 @@
1
1
  module ProMotion
2
2
  module Menu
3
3
 
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
 
6
6
  end
7
7
  end
@@ -57,4 +57,12 @@ describe ProMotion::Menu::Drawer do
57
57
  menu.showsShadow.should == true
58
58
  end
59
59
 
60
+ it "doesn't crash if you set the left or right controller to nil" do
61
+ menu = ProMotion::Menu::Drawer.new(@content, left: nil, right: nil)
62
+
63
+ menu.left_controller.should == nil
64
+ menu.right_controller.should == nil
65
+ menu.center_controller.should == @content
66
+ end
67
+
60
68
  end
@@ -0,0 +1,40 @@
1
+ describe ProMotion::Menu::Transition do
2
+
3
+ before do
4
+ @object = Object.new
5
+ @object.extend(ProMotion::Menu::Transition)
6
+
7
+ @delegate = UIApplication.sharedApplication.delegate
8
+ @left = LeftNavScreen.new
9
+ @right = RightNavScreen.new
10
+ @content = BlankScreen.new
11
+ end
12
+
13
+
14
+ describe "#visualStates" do
15
+
16
+ it "returns a visualStateBlock for slideAndScale" do
17
+ @object.mask_for_transition(:slide_and_scale).is_a?(Proc).should == true
18
+ end
19
+
20
+ it "returns a visualStateBlock for slide" do
21
+ @object.mask_for_transition(:slide).is_a?(Proc).should == true
22
+ end
23
+
24
+ it "returns a visualStateBlock for swingingDoor" do
25
+ @object.mask_for_transition(:slide_and_scale).is_a?(Proc).should == true
26
+ end
27
+
28
+ it "returns a visualStateBlock for parallax, when passing in a factor" do
29
+ @object.mask_for_transition(:parallax_5).is_a?(Proc).should == true
30
+ end
31
+
32
+ it "returns a visualStateBlock for parallax, default factor" do
33
+ @object.mask_for_transition(:parallax).is_a?(Proc).should == true
34
+ end
35
+
36
+ end
37
+
38
+
39
+
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ProMotion-menu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brewer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-12-06 00:00:00.000000000 Z
13
+ date: 2015-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: motion-cocoapods
@@ -83,6 +83,7 @@ files:
83
83
  - lib/ProMotion/menu/delegate.rb
84
84
  - lib/ProMotion/menu/drawer.rb
85
85
  - lib/ProMotion/menu/gestures.rb
86
+ - lib/ProMotion/menu/transition.rb
86
87
  - lib/ProMotion/menu/version.rb
87
88
  - lib/ProMotion/menu/visibility.rb
88
89
  - spec/app_delegate_spec.rb
@@ -91,6 +92,7 @@ files:
91
92
  - spec/helpers/blank_screen.rb
92
93
  - spec/helpers/left_nav_screen.rb
93
94
  - spec/helpers/right_nav_screen.rb
95
+ - spec/transition_spec.rb
94
96
  - spec/visibility_spec.rb
95
97
  homepage: https://github.com/clearsightstudio/ProMotion-menu
96
98
  licenses:
@@ -112,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
114
  version: '0'
113
115
  requirements: []
114
116
  rubyforge_project:
115
- rubygems_version: 2.4.2
117
+ rubygems_version: 2.4.5
116
118
  signing_key:
117
119
  specification_version: 4
118
120
  summary: Provides a facebook/Path style slide menu for ProMotion RubyMotion apps.
@@ -123,4 +125,5 @@ test_files:
123
125
  - spec/helpers/blank_screen.rb
124
126
  - spec/helpers/left_nav_screen.rb
125
127
  - spec/helpers/right_nav_screen.rb
128
+ - spec/transition_spec.rb
126
129
  - spec/visibility_spec.rb