motion-splash 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/README.md +75 -0
- data/Rakefile +1 -0
- data/lib/motion-splash.rb +37 -0
- data/lib/motion-splash/config.rb +53 -0
- data/lib/motion-splash/generator.rb +77 -0
- data/lib/motion-splash/splash_app_delegate.rb +6 -0
- data/motion-splash.gemspec +22 -0
- data/samples/sample-1/.gitignore +17 -0
- data/samples/sample-1/Gemfile +6 -0
- data/samples/sample-1/Rakefile +19 -0
- data/samples/sample-1/app/app_delegate.rb +8 -0
- data/samples/sample-1/app/layouts/splash_layout.rb +63 -0
- data/samples/sample-1/app/normal_view_controller.rb +6 -0
- data/samples/sample-1/app/splash_view_controller.rb +13 -0
- data/samples/sample-1/resources/Default-568h@2x.png +0 -0
- data/samples/sample-1/resources/Default-667h@2x.png +0 -0
- data/samples/sample-1/resources/Default-736h@3x.png +0 -0
- data/samples/sample-1/resources/Default.png +0 -0
- data/samples/sample-1/resources/Default@2x.png +0 -0
- data/samples/sample-1/resources/motionkit_logo.png +0 -0
- data/samples/sample-1/spec/main_spec.rb +9 -0
- data/samples/sample-2/.gitignore +17 -0
- data/samples/sample-2/Gemfile +5 -0
- data/samples/sample-2/Rakefile +20 -0
- data/samples/sample-2/app/app_delegate.rb +8 -0
- data/samples/sample-2/app/normal_view_controller.rb +6 -0
- data/samples/sample-2/app/splash_view_controller.rb +25 -0
- data/samples/sample-2/resources/Default-375h@2x.png +0 -0
- data/samples/sample-2/resources/Default-568h@2x.png +0 -0
- data/samples/sample-2/resources/Default-667h@2x.png +0 -0
- data/samples/sample-2/resources/Default-736h@3x.png +0 -0
- data/samples/sample-2/resources/Default.png +0 -0
- data/samples/sample-2/resources/Default@2x.png +0 -0
- data/samples/sample-2/spec/main_spec.rb +9 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a96fcb3e6d8704765c0db3f4c3925b4bc87cf234
|
4
|
+
data.tar.gz: e0778229ce1b9c25a065aa9b6c101dc21293fe9b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ecd1081838f66d5c62991ed384f15ebf28a88bbf5cb75d580852682565168368402d110101005b7a6ce51a243cf432e54d9590775b1c7b6898b09d949932e84d
|
7
|
+
data.tar.gz: 6e87e52fca3f9b0356d53d9150ceefaec24e869e85bc7d733ccaaa755fe984ab2be37f3efdf9bf2b55ae471e6807bd49aa28dc0d1709e6ca24e06e0d8c1ae65b
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Motion-Splash
|
2
|
+
|
3
|
+
Create all your splash images from any UIViewController using whatever method you like to style it.
|
4
|
+
|
5
|
+
With Xcode 6 and iOS 8 came the ability to create your launch images from a XIB or storyboard file. This is a huge gain over manually creating every image in all the available resolutions.
|
6
|
+
|
7
|
+
But as a RubyMotion developer, I try to stay away as much as possible from the Xcode environment... I present you `Motion-Splash`
|
8
|
+
|
9
|
+
#Installation
|
10
|
+
```
|
11
|
+
gem install motion-splash
|
12
|
+
|
13
|
+
# or in Gemfile
|
14
|
+
gem 'motion-splash'
|
15
|
+
```
|
16
|
+
|
17
|
+
#How to use it
|
18
|
+
Require `motion-splash` in your Rakefile and add `MotionSplash.setup(app)` in your project setup block.
|
19
|
+
|
20
|
+
This will add the `rake splash` task to your project.
|
21
|
+
When running the task, the app will instantiate your `UIViewController` for every configured resolution/scale, present it over its own `UIWindow` and take a screenshot when you tell it to.
|
22
|
+
|
23
|
+
The only requirement is that your `UIViewController` instance responds to `#splash_generator=` and that you call `#take_snapshot` on the generator object whenever the controller's view is ready. Calling this method will save a snapshot to disk and continue with the next available resolution or exit if finished.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
class SplashController < UIViewController
|
27
|
+
attr_writer :splash_generator
|
28
|
+
|
29
|
+
def loadView
|
30
|
+
@layout = SplashLayout.new
|
31
|
+
self.view = @layout.view
|
32
|
+
end
|
33
|
+
|
34
|
+
def viewDidAppear(animated)
|
35
|
+
super
|
36
|
+
@splash_generator.take_snapshot
|
37
|
+
end
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
**NOTE: the view controller's view frame is being manually adjusted after it has been created, so be sure to adjust the subviews' frames either by using AutoLayout or manually changing their frames in `viewWillLayoutSubviews`**
|
42
|
+
|
43
|
+
#Configuration
|
44
|
+
You can configure `MotionSplash` passing a block to `MotionSplash.setup`
|
45
|
+
```ruby
|
46
|
+
MotionSplash.setup(app) do |c|
|
47
|
+
c.controller_class = "MyCustomSplashController"
|
48
|
+
c.exclude_scales = [1, 3]
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
Avaiable options are:
|
53
|
+
* **controller_class**: Your splash controller class name (String). Defaults to "SplashController"
|
54
|
+
* **images_dir**: Absolute path to the directory where images should be saved. Defaults to the app's resources dir
|
55
|
+
* **image_name**: Launch image name. Defaults to "Default"
|
56
|
+
* **app_delegate_file**: Absolute path to the app's app_delegate file. Defaults to `app/app_delegate.rb`
|
57
|
+
* **sizes**: An array of all the needed sizes. Format of each entry must be [size, scale]. Defaults to `[[[320, 480], 1], [[320, 480], 2], [[320, 568], 2], [[375, 667], 2], [[414, 736], 3]]`
|
58
|
+
* **exclude_scales**: Array of scales that are not needed. Defaults to an empty array.
|
59
|
+
* **exclude_sizes**: Array of sizes that are not needed (ie [320, 480]). Defaults to an empty array.
|
60
|
+
* **custom_sizes**: Array with custom sizes. Format of each entry must be [size, scale]. Defaults to empty array.
|
61
|
+
|
62
|
+
#Samples
|
63
|
+
Check out the two sample apps:
|
64
|
+
|
65
|
+
* On the first one we create splash images using MotionKit and AutoLayout
|
66
|
+
* On the second one, we use an `UINavigationController` styled through the app's `UIAppearence`.
|
67
|
+
|
68
|
+
![Sample 1](https://raw.github.com/ijpiantanida/motion-splash/master/samples/sample-1/resources/Default.png)
|
69
|
+
![Sample 2](https://raw.github.com/ijpiantanida/motion-splash/master/samples/sample-2/resources/Default.png)
|
70
|
+
|
71
|
+
#How does it work?
|
72
|
+
When running the `rake splash` task, your `AppDelegate#application:didFinishLaunchingWithOptions:` will be overwritten with a custom implementation.
|
73
|
+
|
74
|
+
For every enabled size, a `UIWindow` is created with the appropiate frame size and setted as keyAndVisible. After your view controller is presented, you should call `#take_snapshot` (usually within `#viewDidAppear`) and an image will be created drawing the `UIWindow` with `#drawViewHierarchyInRect`. Using `UIWindow` allows us to make crazy thinks like using `UIVisualEffectView`
|
75
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'motion-splash/config.rb'
|
2
|
+
|
3
|
+
class MotionSplash
|
4
|
+
def self.generate!
|
5
|
+
@should_generate = true
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.should_generate?
|
9
|
+
@should_generate
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.setup(app)
|
13
|
+
config = Config.new(app)
|
14
|
+
yield(config) if block_given?
|
15
|
+
config.finish
|
16
|
+
|
17
|
+
splash_delegate = File.join(File.dirname(__FILE__), 'motion-splash/splash_app_delegate.rb')
|
18
|
+
|
19
|
+
if MotionSplash.should_generate?
|
20
|
+
app.files << File.join(File.dirname(__FILE__), 'motion-splash/generator.rb')
|
21
|
+
app.files << File.join(File.dirname(__FILE__), 'motion-splash/config.rb')
|
22
|
+
app.files << splash_delegate
|
23
|
+
|
24
|
+
system("touch \"#{splash_delegate}\"")
|
25
|
+
else
|
26
|
+
if File.mtime(splash_delegate) >= File.mtime(config.app_delegate_file)
|
27
|
+
system("touch \"#{config.app_delegate_file}\"")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Creates splash images"
|
34
|
+
task 'splash' do
|
35
|
+
MotionSplash.generate!
|
36
|
+
Rake::Task["simulator"].invoke
|
37
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class MotionSplash
|
2
|
+
class Config
|
3
|
+
def initialize(app = nil)
|
4
|
+
@app = app
|
5
|
+
@properties_set = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def info_plist
|
9
|
+
@info_plist ||= begin
|
10
|
+
if @app
|
11
|
+
@app.info_plist
|
12
|
+
else
|
13
|
+
NSBundle.mainBundle.infoDictionary
|
14
|
+
end
|
15
|
+
rescue
|
16
|
+
{}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
PROPERTIES = {
|
21
|
+
controller_class: "SplashController",
|
22
|
+
images_dir: File.join(Dir.pwd,"resources"),
|
23
|
+
app_delegate_file: File.join(Dir.pwd, "app", "app_delegate.rb"),
|
24
|
+
sizes: [[[320, 480], 1], [[320, 480], 2], [[320, 568], 2], [[375, 667], 2], [[414, 736], 3]],
|
25
|
+
image_name: "Default",
|
26
|
+
exclude_scales: [],
|
27
|
+
exclude_sizes: [],
|
28
|
+
custom_sizes: []
|
29
|
+
}
|
30
|
+
|
31
|
+
def prefix
|
32
|
+
"_splash_"
|
33
|
+
end
|
34
|
+
|
35
|
+
PROPERTIES.keys.each do |property|
|
36
|
+
define_method("#{property}=") do |value|
|
37
|
+
info_plist["#{prefix}#{property}"] = value
|
38
|
+
@properties_set << property
|
39
|
+
end
|
40
|
+
|
41
|
+
define_method(property) do
|
42
|
+
info_plist["#{prefix}#{property}"]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def finish
|
47
|
+
(PROPERTIES.keys - @properties_set.dup).each do |property|
|
48
|
+
default_value = PROPERTIES[property]
|
49
|
+
info_plist["#{prefix}#{property}"] = default_value
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
class MotionSplash
|
2
|
+
class Generator
|
3
|
+
def self.generate_snapshots
|
4
|
+
self.new.start
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@config = Config.new
|
9
|
+
@current_index = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def start
|
13
|
+
setup_next_size
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup_next_size
|
17
|
+
exit if @current_index >= enabled_sizes.size
|
18
|
+
size, scale = enabled_sizes[@current_index]
|
19
|
+
setup_for(size, scale)
|
20
|
+
end
|
21
|
+
|
22
|
+
def setup_for(size, scale)
|
23
|
+
puts "Generating image for #{size}@#{scale}x"
|
24
|
+
controller_class = Kernel.const_get(@config.controller_class)
|
25
|
+
splash_controller = controller_class.alloc.initWithNibName(nil, bundle: nil)
|
26
|
+
splash_controller.splash_generator = self
|
27
|
+
|
28
|
+
@window = UIWindow.alloc.initWithFrame([[0,0], size])
|
29
|
+
@window.rootViewController = splash_controller
|
30
|
+
@window.makeKeyAndVisible
|
31
|
+
splash_controller.view.frame = [[0, 0], size]
|
32
|
+
end
|
33
|
+
|
34
|
+
def take_snapshot
|
35
|
+
size, scale = enabled_sizes[@current_index]
|
36
|
+
image = create_image_for(scale, @window)
|
37
|
+
save_image(image, scale, size)
|
38
|
+
@current_index += 1
|
39
|
+
setup_next_size
|
40
|
+
end
|
41
|
+
|
42
|
+
def save_image(img, scale, size)
|
43
|
+
fileManager = NSFileManager.defaultManager
|
44
|
+
image_data = UIImagePNGRepresentation(img)
|
45
|
+
image_name = name_for(scale, size)
|
46
|
+
image_name = "#{@config.images_dir}/#{image_name}.png"
|
47
|
+
fileManager.createFileAtPath(image_name, contents: image_data, attributes: nil)
|
48
|
+
end
|
49
|
+
|
50
|
+
def create_image_for(scale, view)
|
51
|
+
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, scale)
|
52
|
+
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
|
53
|
+
img = UIGraphicsGetImageFromCurrentImageContext()
|
54
|
+
UIGraphicsEndImageContext()
|
55
|
+
img
|
56
|
+
end
|
57
|
+
|
58
|
+
def enabled_sizes
|
59
|
+
@enabled_sizes ||= @config.sizes.reject do |size, scale|
|
60
|
+
@config.exclude_sizes.include?(size) ||
|
61
|
+
@config.exclude_scales.include?(scale)
|
62
|
+
end + @config.custom_sizes
|
63
|
+
end
|
64
|
+
|
65
|
+
def name_for(scale, size)
|
66
|
+
case scale.to_i
|
67
|
+
when 2
|
68
|
+
size_suffix = size.last == 480 ? "" : "-#{size.last.to_i}h"
|
69
|
+
"#{@config.image_name}#{size_suffix}@2x"
|
70
|
+
when 3
|
71
|
+
"#{@config.image_name}-#{size.last.to_i}h@3x"
|
72
|
+
else
|
73
|
+
@config.image_name
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "motion-splash"
|
7
|
+
spec.version = "1.0"
|
8
|
+
spec.authors = ["Ignacio Piantanida"]
|
9
|
+
spec.email = ["ijpiantanida@gmail.com"]
|
10
|
+
spec.description = "Create all your splash images from any UIViewController using whatever method you like to style it.\nWith Xcode 6 and iOS 8 came the ability to create your launch images from a XIB or storyboard file. This is a huge gain over manually creating every image in all the available resolutions.\nBut as a RubyMotion developer, I try to stay away as much as possible from the Xcode environment... I present you Motion-Splash"
|
11
|
+
spec.summary = "Create all your splash images from any UIViewController using whatever method you like to style it"
|
12
|
+
spec.homepage = "https://github.com/ijpiantanida/motion-splash"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$:.unshift("/Library/RubyMotion/lib")
|
3
|
+
require 'motion/project/template/ios'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'motion-splash'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.require
|
9
|
+
rescue LoadError
|
10
|
+
end
|
11
|
+
|
12
|
+
Motion::Project::App.setup do |app|
|
13
|
+
# Use `rake config' to see complete project settings.
|
14
|
+
app.name = 'sample-1'
|
15
|
+
|
16
|
+
MotionSplash.setup(app) do |c|
|
17
|
+
#c.exclude_scales = [1]
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class AppDelegate
|
2
|
+
def application(application, didFinishLaunchingWithOptions:launchOptions)
|
3
|
+
@window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
|
4
|
+
@window.rootViewController = NormalViewController.alloc.init
|
5
|
+
@window.makeKeyAndVisible
|
6
|
+
true
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
class SplashLayout < MK::Layout
|
2
|
+
def layout
|
3
|
+
root :splash do
|
4
|
+
add UILabel, :title
|
5
|
+
add UIView, :center_box do
|
6
|
+
add UIImageView, :icon
|
7
|
+
end
|
8
|
+
add UIView, :bottom_box
|
9
|
+
add UIVisualEffectView, :blurry_box
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def splash_style
|
14
|
+
background_color UIColor.greenColor
|
15
|
+
end
|
16
|
+
|
17
|
+
def title_style
|
18
|
+
text 'Awesome App'
|
19
|
+
font UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
|
20
|
+
constraints do
|
21
|
+
top.equals(30)
|
22
|
+
center_x.equals(:superview)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def center_box_style
|
27
|
+
background_color UIColor.redColor
|
28
|
+
constraints do
|
29
|
+
center.equals(:superview)
|
30
|
+
width.equals(:superview).times(0.9)
|
31
|
+
height.equals(:superview, :width).times(0.9)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def icon_style
|
36
|
+
image UIImage.imageNamed("motionkit_logo")
|
37
|
+
constraints do
|
38
|
+
center.equals(:superview)
|
39
|
+
size.is <= :superview
|
40
|
+
height(:scale)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def bottom_box_style
|
45
|
+
background_color UIColor.blueColor
|
46
|
+
constraints do
|
47
|
+
center_x.equals(:superview)
|
48
|
+
width.equals(:center_box)
|
49
|
+
height.equals(40)
|
50
|
+
bottom.equals(:superview).minus(15)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def blurry_box_style
|
55
|
+
effect UIBlurEffect.effectWithStyle(UIBlurEffectStyleLight)
|
56
|
+
constraints do
|
57
|
+
center_x.equals(:bottom_box)
|
58
|
+
width.equals(:superview)
|
59
|
+
height.equals(:bottom_box).plus(60)
|
60
|
+
bottom.equals(:superview)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$:.unshift("/Library/RubyMotion/lib")
|
3
|
+
require 'motion/project/template/ios'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'motion-splash'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.require
|
9
|
+
rescue LoadError
|
10
|
+
end
|
11
|
+
|
12
|
+
Motion::Project::App.setup do |app|
|
13
|
+
# Use `rake config' to see complete project settings.
|
14
|
+
app.name = 'sample-2'
|
15
|
+
|
16
|
+
MotionSplash.setup(app) do |c|
|
17
|
+
c.controller_class = "CustomSplashViewController"
|
18
|
+
c.custom_sizes = [[[667, 375], 2]]
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class AppDelegate
|
2
|
+
def application(application, didFinishLaunchingWithOptions:launchOptions)
|
3
|
+
@window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
|
4
|
+
@window.rootViewController = NormalViewController.alloc.init
|
5
|
+
@window.makeKeyAndVisible
|
6
|
+
true
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class CustomSplashViewController < UINavigationController
|
2
|
+
attr_writer :splash_generator
|
3
|
+
|
4
|
+
def viewDidLoad
|
5
|
+
super
|
6
|
+
UINavigationBar.appearance.barTintColor = UIColor.colorWithRed(0.28, green: 0.46, blue: 0.61, alpha: 1)
|
7
|
+
|
8
|
+
controller = SplashController.alloc.init
|
9
|
+
controller.splash_generator = @splash_generator
|
10
|
+
self.setViewControllers([controller], animated: false)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class SplashController < UIViewController
|
15
|
+
attr_accessor :splash_generator
|
16
|
+
|
17
|
+
def viewDidLoad
|
18
|
+
self.view.backgroundColor = UIColor.whiteColor
|
19
|
+
end
|
20
|
+
|
21
|
+
def viewDidAppear(animated)
|
22
|
+
super
|
23
|
+
@splash_generator.take_snapshot
|
24
|
+
end
|
25
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: motion-splash
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ignacio Piantanida
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: |-
|
42
|
+
Create all your splash images from any UIViewController using whatever method you like to style it.
|
43
|
+
With Xcode 6 and iOS 8 came the ability to create your launch images from a XIB or storyboard file. This is a huge gain over manually creating every image in all the available resolutions.
|
44
|
+
But as a RubyMotion developer, I try to stay away as much as possible from the Xcode environment... I present you Motion-Splash
|
45
|
+
email:
|
46
|
+
- ijpiantanida@gmail.com
|
47
|
+
executables: []
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- .gitignore
|
52
|
+
- Gemfile
|
53
|
+
- README.md
|
54
|
+
- Rakefile
|
55
|
+
- lib/motion-splash.rb
|
56
|
+
- lib/motion-splash/config.rb
|
57
|
+
- lib/motion-splash/generator.rb
|
58
|
+
- lib/motion-splash/splash_app_delegate.rb
|
59
|
+
- motion-splash.gemspec
|
60
|
+
- samples/sample-1/.gitignore
|
61
|
+
- samples/sample-1/Gemfile
|
62
|
+
- samples/sample-1/Rakefile
|
63
|
+
- samples/sample-1/app/app_delegate.rb
|
64
|
+
- samples/sample-1/app/layouts/splash_layout.rb
|
65
|
+
- samples/sample-1/app/normal_view_controller.rb
|
66
|
+
- samples/sample-1/app/splash_view_controller.rb
|
67
|
+
- samples/sample-1/resources/Default-568h@2x.png
|
68
|
+
- samples/sample-1/resources/Default-667h@2x.png
|
69
|
+
- samples/sample-1/resources/Default-736h@3x.png
|
70
|
+
- samples/sample-1/resources/Default.png
|
71
|
+
- samples/sample-1/resources/Default@2x.png
|
72
|
+
- samples/sample-1/resources/motionkit_logo.png
|
73
|
+
- samples/sample-1/spec/main_spec.rb
|
74
|
+
- samples/sample-2/.gitignore
|
75
|
+
- samples/sample-2/Gemfile
|
76
|
+
- samples/sample-2/Rakefile
|
77
|
+
- samples/sample-2/app/app_delegate.rb
|
78
|
+
- samples/sample-2/app/normal_view_controller.rb
|
79
|
+
- samples/sample-2/app/splash_view_controller.rb
|
80
|
+
- samples/sample-2/resources/Default-375h@2x.png
|
81
|
+
- samples/sample-2/resources/Default-568h@2x.png
|
82
|
+
- samples/sample-2/resources/Default-667h@2x.png
|
83
|
+
- samples/sample-2/resources/Default-736h@3x.png
|
84
|
+
- samples/sample-2/resources/Default.png
|
85
|
+
- samples/sample-2/resources/Default@2x.png
|
86
|
+
- samples/sample-2/spec/main_spec.rb
|
87
|
+
homepage: https://github.com/ijpiantanida/motion-splash
|
88
|
+
licenses:
|
89
|
+
- MIT
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.1.5
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: Create all your splash images from any UIViewController using whatever method
|
111
|
+
you like to style it
|
112
|
+
test_files: []
|