ovaltine 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +17 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE +22 -0
- data/README.md +15 -0
- data/Rakefile +5 -0
- data/TODO.md +6 -0
- data/bin/ovaltine +54 -0
- data/features/fixtures/Sample/Sample/Base.lproj/Main.storyboard +125 -0
- data/features/fixtures/Sample/Sample/DMMAppDelegate.h +15 -0
- data/features/fixtures/Sample/Sample/DMMAppDelegate.m +46 -0
- data/features/fixtures/Sample/Sample/DMMViewController.h +13 -0
- data/features/fixtures/Sample/Sample/DMMViewController.m +29 -0
- data/features/fixtures/Sample/Sample/Images.xcassets/AppIcon.appiconset/Contents.json +23 -0
- data/features/fixtures/Sample/Sample/Images.xcassets/LaunchImage.launchimage/Contents.json +23 -0
- data/features/fixtures/Sample/Sample/Sample-Info.plist +40 -0
- data/features/fixtures/Sample/Sample/Sample-Prefix.pch +16 -0
- data/features/fixtures/Sample/Sample/en.lproj/InfoPlist.strings +2 -0
- data/features/fixtures/Sample/Sample/main.m +18 -0
- data/features/fixtures/Sample/Sample.xcodeproj/project.pbxproj +472 -0
- data/features/fixtures/Sample/Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/features/fixtures/Sample/SampleTests/SampleTests-Info.plist +22 -0
- data/features/fixtures/Sample/SampleTests/SampleTests.m +34 -0
- data/features/fixtures/Sample/SampleTests/en.lproj/InfoPlist.strings +2 -0
- data/lib/ovaltine/objc/storyboard_formatter.rb +139 -0
- data/lib/ovaltine/objc/storyboard_templates.rb +59 -0
- data/lib/ovaltine/storyboard.rb +51 -0
- data/lib/ovaltine/version.rb +3 -0
- data/lib/ovaltine.rb +51 -0
- data/ovaltine.gemspec +28 -0
- data/specs/storyboard_formatter_spec.rb +29 -0
- data/specs/storyboard_spec.rb +36 -0
- metadata +134 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 27a15d8a6cfd8028b6ed757858fec465d9bf2afc
|
4
|
+
data.tar.gz: 2b2502d9fbb12440abbe37b224116d649695388d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 64929cba79d0660909ac0b17a35c48e9c3eb34a4b653cd9278d2e8766423182cd09845b15f58a28091fed4934e519c3a1d7461d92894f08d7fbf5037012449c8
|
7
|
+
data.tar.gz: 3689f04525b55b8a58fdbbafc84c065ed2720c07a407dd812c3991523eadb5486772b871d271e3bd543d77cb9aead1ba9fcf89a86a816998d6bb41a77950a2f6
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Delisa Mason
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Ovaltine
|
2
|
+
|
3
|
+
The chocolatey treat which makes your code clean! Yum!
|
4
|
+
|
5
|
+
`Ovaltine` scans your `storyboard` files and generates constant files for view controller, segue, and reuse identifiers. For instance, if you have a storyboard called `Main` and a view controller with the Storyboard ID `authenticationViewController`, then you can instantiate that controller with something like `[ABCMainStoryboard instantiateAuthenticationViewController]`. No mistyping, plenty of chocolately goodness.
|
6
|
+
|
7
|
+
# Installation
|
8
|
+
|
9
|
+
```
|
10
|
+
gem install ovaltine
|
11
|
+
```
|
12
|
+
|
13
|
+
# Usage
|
14
|
+
|
15
|
+
Run `ovaltine` from the command line
|
data/Rakefile
ADDED
data/TODO.md
ADDED
data/bin/ovaltine
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
if RUBY_VERSION < '1.8.7'
|
4
|
+
abort "error: Ovaltine requires Ruby 1.8.7 or higher."
|
5
|
+
end
|
6
|
+
|
7
|
+
if $0 == __FILE__
|
8
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'ovaltine'
|
12
|
+
require 'optparse'
|
13
|
+
|
14
|
+
parser_options = {
|
15
|
+
:output_directory => '.',
|
16
|
+
:prefix => ''
|
17
|
+
}
|
18
|
+
|
19
|
+
def exit_with_error(message)
|
20
|
+
$stderr.puts "[!] #{message}"
|
21
|
+
$stderr.puts opts
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
OptionParser.new do |opts|
|
26
|
+
opts.banner = "Usage: ovaltine [options] PATH"
|
27
|
+
opts.on('-p', '--project PROJECT', 'Specify path to .xcodeproj directory') do |path|
|
28
|
+
parser_options[:project] = path
|
29
|
+
end
|
30
|
+
opts.on('-o', '--output DIR', 'Specify output directory. Default is pwd') do |path|
|
31
|
+
parser_options[:output_directory] = path
|
32
|
+
end
|
33
|
+
opts.on('--prefix PREFIX', 'Class prefix for generated files') do |prefix|
|
34
|
+
parser_options[:prefix] = prefix
|
35
|
+
end
|
36
|
+
opts.on('--auto-add', 'Automatically add generated files to the Xcode project') do
|
37
|
+
parser_options[:auto_add] = true
|
38
|
+
end
|
39
|
+
opts.on('--auto-replace', 'Automatically replace files with the same name as generated files') do
|
40
|
+
parser_options[:auto_replace] = true
|
41
|
+
end
|
42
|
+
opts.on_tail('-h', '--help', 'Show this message') { puts opts; exit }
|
43
|
+
opts.on_tail("-v", "--version", "Show version") { puts Ovaltine::VERSION; exit }
|
44
|
+
opts.parse!
|
45
|
+
end
|
46
|
+
|
47
|
+
project_path = ARGV.last
|
48
|
+
if !project_path
|
49
|
+
exit_with_error("No file path specified")
|
50
|
+
elsif !File.exist?(project_path)
|
51
|
+
exit_with_error("File not found for path: #{project_path}")
|
52
|
+
end
|
53
|
+
|
54
|
+
Ovaltine.create_constant_files(project_path, parser_options)
|
@@ -0,0 +1,125 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="Rge-Ae-WFm">
|
3
|
+
<dependencies>
|
4
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
|
5
|
+
</dependencies>
|
6
|
+
<scenes>
|
7
|
+
<!--View Controller-->
|
8
|
+
<scene sceneID="ufC-wZ-h7g">
|
9
|
+
<objects>
|
10
|
+
<viewController storyboardIdentifier="sampleViewController" id="vXZ-lx-hvc" customClass="DMMViewController" sceneMemberID="viewController">
|
11
|
+
<layoutGuides>
|
12
|
+
<viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
|
13
|
+
<viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
|
14
|
+
</layoutGuides>
|
15
|
+
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
|
16
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
17
|
+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
18
|
+
<subviews>
|
19
|
+
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yMY-0R-ijt">
|
20
|
+
<rect key="frame" x="137" y="359" width="46" height="30"/>
|
21
|
+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
22
|
+
<state key="normal" title="Button">
|
23
|
+
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
24
|
+
</state>
|
25
|
+
<connections>
|
26
|
+
<segue destination="5au-Nw-4lc" kind="push" identifier="starterSegueIdentifier" id="1Jc-Bc-ntv"/>
|
27
|
+
</connections>
|
28
|
+
</button>
|
29
|
+
</subviews>
|
30
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
31
|
+
</view>
|
32
|
+
<navigationItem key="navigationItem" id="6dJ-W9-jgX"/>
|
33
|
+
</viewController>
|
34
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
|
35
|
+
</objects>
|
36
|
+
<point key="canvasLocation" x="621" y="112"/>
|
37
|
+
</scene>
|
38
|
+
<!--Table View Controller-->
|
39
|
+
<scene sceneID="js1-cK-hm4">
|
40
|
+
<objects>
|
41
|
+
<tableViewController storyboardIdentifier="listViewController" id="5au-Nw-4lc" sceneMemberID="viewController">
|
42
|
+
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="gae-V3-cAi">
|
43
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
44
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
45
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
46
|
+
<prototypes>
|
47
|
+
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="sampleCellIdentifier" id="Na8-u9-vI1">
|
48
|
+
<rect key="frame" x="0.0" y="86" width="320" height="44"/>
|
49
|
+
<autoresizingMask key="autoresizingMask"/>
|
50
|
+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Na8-u9-vI1" id="5hw-Zc-gxr">
|
51
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
52
|
+
<autoresizingMask key="autoresizingMask"/>
|
53
|
+
</tableViewCellContentView>
|
54
|
+
</tableViewCell>
|
55
|
+
</prototypes>
|
56
|
+
<connections>
|
57
|
+
<outlet property="dataSource" destination="5au-Nw-4lc" id="pgF-lu-lId"/>
|
58
|
+
<outlet property="delegate" destination="5au-Nw-4lc" id="NRK-mw-uWQ"/>
|
59
|
+
</connections>
|
60
|
+
</tableView>
|
61
|
+
<navigationItem key="navigationItem" id="DmE-ek-7YY"/>
|
62
|
+
</tableViewController>
|
63
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="L8a-Lh-xxy" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
64
|
+
</objects>
|
65
|
+
<point key="canvasLocation" x="959" y="112"/>
|
66
|
+
</scene>
|
67
|
+
<!--Collection View Controller-->
|
68
|
+
<scene sceneID="P5w-Ff-Sbg">
|
69
|
+
<objects>
|
70
|
+
<collectionViewController storyboardIdentifier="collectionViewController" autoresizesArchivedViewToFullSize="NO" id="Ng9-Ce-lhk" sceneMemberID="viewController">
|
71
|
+
<collectionView key="view" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" minimumZoomScale="0.0" maximumZoomScale="0.0" dataMode="prototypes" id="ZVh-E3-eOP">
|
72
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
73
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
74
|
+
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="5cp-KN-Cx8">
|
75
|
+
<size key="itemSize" width="50" height="50"/>
|
76
|
+
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
77
|
+
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
78
|
+
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
79
|
+
</collectionViewFlowLayout>
|
80
|
+
<cells>
|
81
|
+
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="squareCellIdentifier" id="yyf-Ud-STC">
|
82
|
+
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
|
83
|
+
<autoresizingMask key="autoresizingMask"/>
|
84
|
+
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
85
|
+
<rect key="frame" x="0.0" y="0.0" width="50" height="50"/>
|
86
|
+
<autoresizingMask key="autoresizingMask"/>
|
87
|
+
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
88
|
+
</view>
|
89
|
+
</collectionViewCell>
|
90
|
+
</cells>
|
91
|
+
<connections>
|
92
|
+
<outlet property="dataSource" destination="Ng9-Ce-lhk" id="IK5-dX-2DS"/>
|
93
|
+
<outlet property="delegate" destination="Ng9-Ce-lhk" id="ZLV-Ol-7La"/>
|
94
|
+
</connections>
|
95
|
+
</collectionView>
|
96
|
+
</collectionViewController>
|
97
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="DNz-X4-ZRW" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
98
|
+
</objects>
|
99
|
+
<point key="canvasLocation" x="1298" y="112"/>
|
100
|
+
</scene>
|
101
|
+
<!--Navigation Controller-->
|
102
|
+
<scene sceneID="i23-07-0sf">
|
103
|
+
<objects>
|
104
|
+
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="Rge-Ae-WFm" sceneMemberID="viewController">
|
105
|
+
<toolbarItems/>
|
106
|
+
<navigationBar key="navigationBar" contentMode="scaleToFill" id="gRu-BS-tP3">
|
107
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
108
|
+
<autoresizingMask key="autoresizingMask"/>
|
109
|
+
</navigationBar>
|
110
|
+
<nil name="viewControllers"/>
|
111
|
+
<connections>
|
112
|
+
<segue destination="vXZ-lx-hvc" kind="relationship" relationship="rootViewController" id="fVy-EK-YUg"/>
|
113
|
+
</connections>
|
114
|
+
</navigationController>
|
115
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="syy-dE-biK" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
116
|
+
</objects>
|
117
|
+
<point key="canvasLocation" x="65" y="780"/>
|
118
|
+
</scene>
|
119
|
+
</scenes>
|
120
|
+
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
121
|
+
<simulatedStatusBarMetrics key="statusBar"/>
|
122
|
+
<simulatedOrientationMetrics key="orientation"/>
|
123
|
+
<simulatedScreenMetrics key="destination" type="retina4"/>
|
124
|
+
</simulatedMetricsContainer>
|
125
|
+
</document>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
//
|
2
|
+
// DMMAppDelegate.h
|
3
|
+
// Sample
|
4
|
+
//
|
5
|
+
// Created by Delisa Mason on 8/2/14.
|
6
|
+
// Copyright (c) 2014 Delisa Mason. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <UIKit/UIKit.h>
|
10
|
+
|
11
|
+
@interface DMMAppDelegate : UIResponder <UIApplicationDelegate>
|
12
|
+
|
13
|
+
@property (strong, nonatomic) UIWindow *window;
|
14
|
+
|
15
|
+
@end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
//
|
2
|
+
// DMMAppDelegate.m
|
3
|
+
// Sample
|
4
|
+
//
|
5
|
+
// Created by Delisa Mason on 8/2/14.
|
6
|
+
// Copyright (c) 2014 Delisa Mason. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import "DMMAppDelegate.h"
|
10
|
+
|
11
|
+
@implementation DMMAppDelegate
|
12
|
+
|
13
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
14
|
+
{
|
15
|
+
// Override point for customization after application launch.
|
16
|
+
return YES;
|
17
|
+
}
|
18
|
+
|
19
|
+
- (void)applicationWillResignActive:(UIApplication *)application
|
20
|
+
{
|
21
|
+
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
22
|
+
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
|
23
|
+
}
|
24
|
+
|
25
|
+
- (void)applicationDidEnterBackground:(UIApplication *)application
|
26
|
+
{
|
27
|
+
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
28
|
+
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
29
|
+
}
|
30
|
+
|
31
|
+
- (void)applicationWillEnterForeground:(UIApplication *)application
|
32
|
+
{
|
33
|
+
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
|
34
|
+
}
|
35
|
+
|
36
|
+
- (void)applicationDidBecomeActive:(UIApplication *)application
|
37
|
+
{
|
38
|
+
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
39
|
+
}
|
40
|
+
|
41
|
+
- (void)applicationWillTerminate:(UIApplication *)application
|
42
|
+
{
|
43
|
+
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
44
|
+
}
|
45
|
+
|
46
|
+
@end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
//
|
2
|
+
// DMMViewController.m
|
3
|
+
// Sample
|
4
|
+
//
|
5
|
+
// Created by Delisa Mason on 8/2/14.
|
6
|
+
// Copyright (c) 2014 Delisa Mason. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import "DMMViewController.h"
|
10
|
+
|
11
|
+
@interface DMMViewController ()
|
12
|
+
|
13
|
+
@end
|
14
|
+
|
15
|
+
@implementation DMMViewController
|
16
|
+
|
17
|
+
- (void)viewDidLoad
|
18
|
+
{
|
19
|
+
[super viewDidLoad];
|
20
|
+
// Do any additional setup after loading the view, typically from a nib.
|
21
|
+
}
|
22
|
+
|
23
|
+
- (void)didReceiveMemoryWarning
|
24
|
+
{
|
25
|
+
[super didReceiveMemoryWarning];
|
26
|
+
// Dispose of any resources that can be recreated.
|
27
|
+
}
|
28
|
+
|
29
|
+
@end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"images" : [
|
3
|
+
{
|
4
|
+
"idiom" : "iphone",
|
5
|
+
"size" : "29x29",
|
6
|
+
"scale" : "2x"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"idiom" : "iphone",
|
10
|
+
"size" : "40x40",
|
11
|
+
"scale" : "2x"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"idiom" : "iphone",
|
15
|
+
"size" : "60x60",
|
16
|
+
"scale" : "2x"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"info" : {
|
20
|
+
"version" : 1,
|
21
|
+
"author" : "xcode"
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"images" : [
|
3
|
+
{
|
4
|
+
"orientation" : "portrait",
|
5
|
+
"idiom" : "iphone",
|
6
|
+
"extent" : "full-screen",
|
7
|
+
"minimum-system-version" : "7.0",
|
8
|
+
"scale" : "2x"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"orientation" : "portrait",
|
12
|
+
"idiom" : "iphone",
|
13
|
+
"subtype" : "retina4",
|
14
|
+
"extent" : "full-screen",
|
15
|
+
"minimum-system-version" : "7.0",
|
16
|
+
"scale" : "2x"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"info" : {
|
20
|
+
"version" : 1,
|
21
|
+
"author" : "xcode"
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>en</string>
|
7
|
+
<key>CFBundleDisplayName</key>
|
8
|
+
<string>${PRODUCT_NAME}</string>
|
9
|
+
<key>CFBundleExecutable</key>
|
10
|
+
<string>${EXECUTABLE_NAME}</string>
|
11
|
+
<key>CFBundleIdentifier</key>
|
12
|
+
<string>me.delisa.${PRODUCT_NAME:rfc1034identifier}</string>
|
13
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
14
|
+
<string>6.0</string>
|
15
|
+
<key>CFBundleName</key>
|
16
|
+
<string>${PRODUCT_NAME}</string>
|
17
|
+
<key>CFBundlePackageType</key>
|
18
|
+
<string>APPL</string>
|
19
|
+
<key>CFBundleShortVersionString</key>
|
20
|
+
<string>1.0</string>
|
21
|
+
<key>CFBundleSignature</key>
|
22
|
+
<string>????</string>
|
23
|
+
<key>CFBundleVersion</key>
|
24
|
+
<string>1.0</string>
|
25
|
+
<key>LSRequiresIPhoneOS</key>
|
26
|
+
<true/>
|
27
|
+
<key>UIMainStoryboardFile</key>
|
28
|
+
<string>Main</string>
|
29
|
+
<key>UIRequiredDeviceCapabilities</key>
|
30
|
+
<array>
|
31
|
+
<string>armv7</string>
|
32
|
+
</array>
|
33
|
+
<key>UISupportedInterfaceOrientations</key>
|
34
|
+
<array>
|
35
|
+
<string>UIInterfaceOrientationPortrait</string>
|
36
|
+
<string>UIInterfaceOrientationLandscapeLeft</string>
|
37
|
+
<string>UIInterfaceOrientationLandscapeRight</string>
|
38
|
+
</array>
|
39
|
+
</dict>
|
40
|
+
</plist>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
//
|
2
|
+
// Prefix header
|
3
|
+
//
|
4
|
+
// The contents of this file are implicitly included at the beginning of every source file.
|
5
|
+
//
|
6
|
+
|
7
|
+
#import <Availability.h>
|
8
|
+
|
9
|
+
#ifndef __IPHONE_5_0
|
10
|
+
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
11
|
+
#endif
|
12
|
+
|
13
|
+
#ifdef __OBJC__
|
14
|
+
#import <UIKit/UIKit.h>
|
15
|
+
#import <Foundation/Foundation.h>
|
16
|
+
#endif
|
@@ -0,0 +1,18 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// Sample
|
4
|
+
//
|
5
|
+
// Created by Delisa Mason on 8/2/14.
|
6
|
+
// Copyright (c) 2014 Delisa Mason. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <UIKit/UIKit.h>
|
10
|
+
|
11
|
+
#import "DMMAppDelegate.h"
|
12
|
+
|
13
|
+
int main(int argc, char * argv[])
|
14
|
+
{
|
15
|
+
@autoreleasepool {
|
16
|
+
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DMMAppDelegate class]));
|
17
|
+
}
|
18
|
+
}
|