furter 0.0.3
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.
- data/.gitignore +21 -0
- data/.rspec +2 -0
- data/.travis.yml +2 -0
- data/Changelog +3 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +25 -0
- data/Rakefile +30 -0
- data/app/FurterApp/Frank/features/my_first.feature +12 -0
- data/app/FurterApp/Frank/features/step_definitions/launch_steps.rb +20 -0
- data/app/FurterApp/Frank/features/support/env.rb +8 -0
- data/app/FurterApp/Frank/frankify.xcconfig +6 -0
- data/app/FurterApp/Frank/libCocoaAsyncSocket.a +0 -0
- data/app/FurterApp/Frank/libCocoaAsyncSocketMac.a +0 -0
- data/app/FurterApp/Frank/libCocoaHTTPServer.a +0 -0
- data/app/FurterApp/Frank/libCocoaHTTPServerMac.a +0 -0
- data/app/FurterApp/Frank/libCocoaLumberjack.a +0 -0
- data/app/FurterApp/Frank/libCocoaLumberjackMac.a +0 -0
- data/app/FurterApp/Frank/libFrank.a +0 -0
- data/app/FurterApp/Frank/libFrankMac.a +0 -0
- data/app/FurterApp/Frank/libShelley.a +0 -0
- data/app/FurterApp/Frank/libShelleyMac.a +0 -0
- data/app/FurterApp/FurterApp.xcodeproj/project.pbxproj +807 -0
- data/app/FurterApp/FurterApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/app/FurterApp/FurterApp.xcodeproj/project.xcworkspace/xcuserdata/lwilson.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/app/FurterApp/FurterApp.xcodeproj/xcuserdata/lwilson.xcuserdatad/xcschemes/FurterApp.xcscheme +86 -0
- data/app/FurterApp/FurterApp.xcodeproj/xcuserdata/lwilson.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
- data/app/FurterApp/FurterApp/AppDelegate.h +22 -0
- data/app/FurterApp/FurterApp/AppDelegate.m +161 -0
- data/app/FurterApp/FurterApp/Default-568h@2x.png +0 -0
- data/app/FurterApp/FurterApp/Default.png +0 -0
- data/app/FurterApp/FurterApp/Default@2x.png +0 -0
- data/app/FurterApp/FurterApp/DetailViewController.h +23 -0
- data/app/FurterApp/FurterApp/DetailViewController.m +80 -0
- data/app/FurterApp/FurterApp/FurterApp-Info.plist +59 -0
- data/app/FurterApp/FurterApp/FurterApp-Prefix.pch +15 -0
- data/app/FurterApp/FurterApp/FurterApp.xcdatamodeld/.xccurrentversion +8 -0
- data/app/FurterApp/FurterApp/FurterApp.xcdatamodeld/FurterApp.xcdatamodel/contents +9 -0
- data/app/FurterApp/FurterApp/MasterViewController.h +22 -0
- data/app/FurterApp/FurterApp/MasterViewController.m +235 -0
- data/app/FurterApp/FurterApp/en.lproj/InfoPlist.strings +2 -0
- data/app/FurterApp/FurterApp/en.lproj/MainStoryboard_iPad.storyboard +260 -0
- data/app/FurterApp/FurterApp/en.lproj/MainStoryboard_iPhone.storyboard +129 -0
- data/app/FurterApp/FurterApp/main.m +18 -0
- data/cucumber.yml +2 -0
- data/features/button.feature +12 -0
- data/features/label.feature +10 -0
- data/features/navigation.feature +5 -0
- data/features/step_definitions/button_steps.rb +7 -0
- data/features/step_definitions/label_steps.rb +8 -0
- data/features/step_definitions/navigation_steps.rb +7 -0
- data/features/step_definitions/switches_steps.rb +12 -0
- data/features/step_definitions/text_steps.rb +25 -0
- data/features/support/core_ext/string.rb +9 -0
- data/features/support/env.rb +25 -0
- data/features/support/hooks.rb +3 -0
- data/features/support/screens/detail.rb +15 -0
- data/features/support/screens/elsewhere_page.rb +7 -0
- data/features/switches.feature +7 -0
- data/features/text.feature +15 -0
- data/furter.gemspec +26 -0
- data/lib/furter.rb +53 -0
- data/lib/furter/accessors.rb +87 -0
- data/lib/furter/accessors/alert_button.rb +18 -0
- data/lib/furter/accessors/button.rb +17 -0
- data/lib/furter/accessors/label.rb +13 -0
- data/lib/furter/accessors/map_pin.rb +18 -0
- data/lib/furter/accessors/switch.rb +20 -0
- data/lib/furter/accessors/table.rb +15 -0
- data/lib/furter/accessors/table_item.rb +10 -0
- data/lib/furter/accessors/text.rb +27 -0
- data/lib/furter/accessors/view.rb +46 -0
- data/lib/furter/navigation.rb +25 -0
- data/lib/furter/version.rb +3 -0
- data/spec/lib/furter/accessors/button_spec.rb +23 -0
- data/spec/lib/furter/accessors/label_spec.rb +24 -0
- data/spec/lib/furter/accessors/switch_spec.rb +28 -0
- data/spec/lib/furter/accessors/text_spec.rb +39 -0
- data/spec/lib/furter/accessors/view_spec.rb +43 -0
- data/spec/lib/furter/accessors_spec.rb +116 -0
- data/spec/spec_helper.rb +18 -0
- metadata +234 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Prefix header for all source files of the 'FurterApp' target in the 'FurterApp' project
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import <Availability.h>
|
|
6
|
+
|
|
7
|
+
#ifndef __IPHONE_5_0
|
|
8
|
+
#warning "This project uses features only available in iOS SDK 5.0 and later."
|
|
9
|
+
#endif
|
|
10
|
+
|
|
11
|
+
#ifdef __OBJC__
|
|
12
|
+
#import <UIKit/UIKit.h>
|
|
13
|
+
#import <Foundation/Foundation.h>
|
|
14
|
+
#import <CoreData/CoreData.h>
|
|
15
|
+
#endif
|
|
@@ -0,0 +1,8 @@
|
|
|
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>_XCCurrentVersionName</key>
|
|
6
|
+
<string>FurterApp.xcdatamodel</string>
|
|
7
|
+
</dict>
|
|
8
|
+
</plist>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
2
|
+
<model name="Test1.xcdatamodel" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
|
|
3
|
+
<entity name="Event">
|
|
4
|
+
<attribute name="timeStamp" optional="YES" attributeType="Date"/>
|
|
5
|
+
</entity>
|
|
6
|
+
<elements>
|
|
7
|
+
<element name="Event" positionX="261" positionY="189" width="128" height="60"/>
|
|
8
|
+
</elements>
|
|
9
|
+
</model>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MasterViewController.h
|
|
3
|
+
// FurterApp
|
|
4
|
+
//
|
|
5
|
+
// Created by Levi Wilson on 3/20/13.
|
|
6
|
+
// Copyright (c) 2013 Levi Wilson. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <UIKit/UIKit.h>
|
|
10
|
+
|
|
11
|
+
@class DetailViewController;
|
|
12
|
+
|
|
13
|
+
#import <CoreData/CoreData.h>
|
|
14
|
+
|
|
15
|
+
@interface MasterViewController : UITableViewController <NSFetchedResultsControllerDelegate>
|
|
16
|
+
|
|
17
|
+
@property (strong, nonatomic) DetailViewController *detailViewController;
|
|
18
|
+
|
|
19
|
+
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
|
|
20
|
+
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
|
|
21
|
+
|
|
22
|
+
@end
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MasterViewController.m
|
|
3
|
+
// FurterApp
|
|
4
|
+
//
|
|
5
|
+
// Created by Levi Wilson on 3/20/13.
|
|
6
|
+
// Copyright (c) 2013 Levi Wilson. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "MasterViewController.h"
|
|
10
|
+
|
|
11
|
+
#import "DetailViewController.h"
|
|
12
|
+
|
|
13
|
+
@interface MasterViewController ()
|
|
14
|
+
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@implementation MasterViewController
|
|
18
|
+
|
|
19
|
+
- (void)awakeFromNib
|
|
20
|
+
{
|
|
21
|
+
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
|
22
|
+
self.clearsSelectionOnViewWillAppear = NO;
|
|
23
|
+
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);
|
|
24
|
+
}
|
|
25
|
+
[super awakeFromNib];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
- (void)viewDidLoad
|
|
29
|
+
{
|
|
30
|
+
[super viewDidLoad];
|
|
31
|
+
// Do any additional setup after loading the view, typically from a nib.
|
|
32
|
+
self.navigationItem.leftBarButtonItem = self.editButtonItem;
|
|
33
|
+
|
|
34
|
+
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
|
|
35
|
+
self.navigationItem.rightBarButtonItem = addButton;
|
|
36
|
+
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (void)didReceiveMemoryWarning
|
|
40
|
+
{
|
|
41
|
+
[super didReceiveMemoryWarning];
|
|
42
|
+
// Dispose of any resources that can be recreated.
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
- (void)insertNewObject:(id)sender
|
|
46
|
+
{
|
|
47
|
+
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
|
|
48
|
+
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
|
|
49
|
+
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
|
|
50
|
+
|
|
51
|
+
// If appropriate, configure the new managed object.
|
|
52
|
+
// Normally you should use accessor methods, but using KVC here avoids the need to add a custom class to the template.
|
|
53
|
+
[newManagedObject setValue:[NSDate date] forKey:@"timeStamp"];
|
|
54
|
+
|
|
55
|
+
// Save the context.
|
|
56
|
+
NSError *error = nil;
|
|
57
|
+
if (![context save:&error]) {
|
|
58
|
+
// Replace this implementation with code to handle the error appropriately.
|
|
59
|
+
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
|
|
60
|
+
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
|
|
61
|
+
abort();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
#pragma mark - Table View
|
|
66
|
+
|
|
67
|
+
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
|
|
68
|
+
{
|
|
69
|
+
return [[self.fetchedResultsController sections] count];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
|
73
|
+
{
|
|
74
|
+
id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
|
|
75
|
+
return [sectionInfo numberOfObjects];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
|
79
|
+
{
|
|
80
|
+
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
|
|
81
|
+
[self configureCell:cell atIndexPath:indexPath];
|
|
82
|
+
return cell;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
|
|
86
|
+
{
|
|
87
|
+
// Return NO if you do not want the specified item to be editable.
|
|
88
|
+
return YES;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
|
|
92
|
+
{
|
|
93
|
+
if (editingStyle == UITableViewCellEditingStyleDelete) {
|
|
94
|
+
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
|
|
95
|
+
[context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
|
|
96
|
+
|
|
97
|
+
NSError *error = nil;
|
|
98
|
+
if (![context save:&error]) {
|
|
99
|
+
// Replace this implementation with code to handle the error appropriately.
|
|
100
|
+
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
|
|
101
|
+
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
|
|
102
|
+
abort();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
|
|
108
|
+
{
|
|
109
|
+
// The table view should not be re-orderable.
|
|
110
|
+
return NO;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|
114
|
+
{
|
|
115
|
+
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
|
|
116
|
+
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
|
|
117
|
+
self.detailViewController.detailItem = object;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
|
|
122
|
+
{
|
|
123
|
+
if ([[segue identifier] isEqualToString:@"showDetail"]) {
|
|
124
|
+
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
|
|
125
|
+
NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
|
|
126
|
+
[[segue destinationViewController] setDetailItem:object];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
#pragma mark - Fetched results controller
|
|
131
|
+
|
|
132
|
+
- (NSFetchedResultsController *)fetchedResultsController
|
|
133
|
+
{
|
|
134
|
+
if (_fetchedResultsController != nil) {
|
|
135
|
+
return _fetchedResultsController;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
|
|
139
|
+
// Edit the entity name as appropriate.
|
|
140
|
+
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];
|
|
141
|
+
[fetchRequest setEntity:entity];
|
|
142
|
+
|
|
143
|
+
// Set the batch size to a suitable number.
|
|
144
|
+
[fetchRequest setFetchBatchSize:20];
|
|
145
|
+
|
|
146
|
+
// Edit the sort key as appropriate.
|
|
147
|
+
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
|
|
148
|
+
NSArray *sortDescriptors = @[sortDescriptor];
|
|
149
|
+
|
|
150
|
+
[fetchRequest setSortDescriptors:sortDescriptors];
|
|
151
|
+
|
|
152
|
+
// Edit the section name key path and cache name if appropriate.
|
|
153
|
+
// nil for section name key path means "no sections".
|
|
154
|
+
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"];
|
|
155
|
+
aFetchedResultsController.delegate = self;
|
|
156
|
+
self.fetchedResultsController = aFetchedResultsController;
|
|
157
|
+
|
|
158
|
+
NSError *error = nil;
|
|
159
|
+
if (![self.fetchedResultsController performFetch:&error]) {
|
|
160
|
+
// Replace this implementation with code to handle the error appropriately.
|
|
161
|
+
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
|
|
162
|
+
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
|
|
163
|
+
abort();
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return _fetchedResultsController;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
|
|
170
|
+
{
|
|
171
|
+
[self.tableView beginUpdates];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
|
|
175
|
+
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type
|
|
176
|
+
{
|
|
177
|
+
switch(type) {
|
|
178
|
+
case NSFetchedResultsChangeInsert:
|
|
179
|
+
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
|
|
180
|
+
break;
|
|
181
|
+
|
|
182
|
+
case NSFetchedResultsChangeDelete:
|
|
183
|
+
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
|
|
189
|
+
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
|
|
190
|
+
newIndexPath:(NSIndexPath *)newIndexPath
|
|
191
|
+
{
|
|
192
|
+
UITableView *tableView = self.tableView;
|
|
193
|
+
|
|
194
|
+
switch(type) {
|
|
195
|
+
case NSFetchedResultsChangeInsert:
|
|
196
|
+
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
|
|
197
|
+
break;
|
|
198
|
+
|
|
199
|
+
case NSFetchedResultsChangeDelete:
|
|
200
|
+
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
|
201
|
+
break;
|
|
202
|
+
|
|
203
|
+
case NSFetchedResultsChangeUpdate:
|
|
204
|
+
[self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
|
|
205
|
+
break;
|
|
206
|
+
|
|
207
|
+
case NSFetchedResultsChangeMove:
|
|
208
|
+
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
|
209
|
+
[tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
|
|
215
|
+
{
|
|
216
|
+
[self.tableView endUpdates];
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
// Implementing the above methods to update the table view in response to individual changes may have performance implications if a large number of changes are made simultaneously. If this proves to be an issue, you can instead just implement controllerDidChangeContent: which notifies the delegate that all section and object changes have been processed.
|
|
221
|
+
|
|
222
|
+
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
|
|
223
|
+
{
|
|
224
|
+
// In the simplest, most efficient, case, reload the table view.
|
|
225
|
+
[self.tableView reloadData];
|
|
226
|
+
}
|
|
227
|
+
*/
|
|
228
|
+
|
|
229
|
+
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
|
|
230
|
+
{
|
|
231
|
+
NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
|
|
232
|
+
cell.textLabel.text = [[object valueForKey:@"timeStamp"] description];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@end
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="12D78" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" initialViewController="5">
|
|
3
|
+
<dependencies>
|
|
4
|
+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
|
|
5
|
+
</dependencies>
|
|
6
|
+
<scenes>
|
|
7
|
+
<!--Navigation Controller-->
|
|
8
|
+
<scene sceneID="14">
|
|
9
|
+
<objects>
|
|
10
|
+
<navigationController id="3" sceneMemberID="viewController">
|
|
11
|
+
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="6">
|
|
12
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
13
|
+
</navigationBar>
|
|
14
|
+
<connections>
|
|
15
|
+
<segue destination="19" kind="relationship" relationship="rootViewController" id="25"/>
|
|
16
|
+
</connections>
|
|
17
|
+
</navigationController>
|
|
18
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="13" sceneMemberID="firstResponder"/>
|
|
19
|
+
</objects>
|
|
20
|
+
<point key="canvasLocation" x="448" y="-630"/>
|
|
21
|
+
</scene>
|
|
22
|
+
<!--Detail View Controller - Detail-->
|
|
23
|
+
<scene sceneID="16">
|
|
24
|
+
<objects>
|
|
25
|
+
<viewController storyboardIdentifier="" title="Detail" id="4" customClass="DetailViewController" sceneMemberID="viewController">
|
|
26
|
+
<view key="view" contentMode="scaleToFill" id="26">
|
|
27
|
+
<rect key="frame" x="0.0" y="64" width="703" height="704"/>
|
|
28
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
29
|
+
<subviews>
|
|
30
|
+
<label clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Detail view content goes here" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="27">
|
|
31
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
32
|
+
<accessibility key="accessibilityConfiguration" label="labelByAccessibilityLabel"/>
|
|
33
|
+
<fontDescription key="fontDescription" type="system" size="system"/>
|
|
34
|
+
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
35
|
+
<nil key="highlightedColor"/>
|
|
36
|
+
</label>
|
|
37
|
+
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="First Field" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mEd-bW-xG3">
|
|
38
|
+
<accessibility key="accessibilityConfiguration" hint="First Field">
|
|
39
|
+
<accessibilityTraits key="traits" none="YES"/>
|
|
40
|
+
</accessibility>
|
|
41
|
+
<constraints>
|
|
42
|
+
<constraint firstAttribute="height" constant="30" id="ZDx-36-Vlf"/>
|
|
43
|
+
<constraint firstAttribute="width" constant="201" id="v52-Lv-Kpf"/>
|
|
44
|
+
</constraints>
|
|
45
|
+
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
46
|
+
<textInputTraits key="textInputTraits"/>
|
|
47
|
+
</textField>
|
|
48
|
+
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HNa-e4-2od">
|
|
49
|
+
<accessibility key="accessibilityConfiguration" hint="" label="textByLabel">
|
|
50
|
+
<accessibilityTraits key="traits" none="YES"/>
|
|
51
|
+
</accessibility>
|
|
52
|
+
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
53
|
+
<textInputTraits key="textInputTraits"/>
|
|
54
|
+
</textField>
|
|
55
|
+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Placeholder" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="79f-eU-bDt">
|
|
56
|
+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
57
|
+
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
58
|
+
<nil key="highlightedColor"/>
|
|
59
|
+
</label>
|
|
60
|
+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nbu-fr-Znd">
|
|
61
|
+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
62
|
+
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
63
|
+
<nil key="highlightedColor"/>
|
|
64
|
+
</label>
|
|
65
|
+
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Nyi-ck-8hR">
|
|
66
|
+
<accessibility key="accessibilityConfiguration" label="switchToggle"/>
|
|
67
|
+
</switch>
|
|
68
|
+
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MgB-Y1-P3J">
|
|
69
|
+
<constraints>
|
|
70
|
+
<constraint firstAttribute="width" constant="155" id="1Nz-03-QXb"/>
|
|
71
|
+
</constraints>
|
|
72
|
+
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
73
|
+
<state key="normal" title="Some Button">
|
|
74
|
+
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
75
|
+
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
76
|
+
</state>
|
|
77
|
+
<state key="highlighted">
|
|
78
|
+
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
79
|
+
</state>
|
|
80
|
+
<connections>
|
|
81
|
+
<action selector="someButtonClick:" destination="4" eventType="touchDown" id="LKw-by-anH"/>
|
|
82
|
+
</connections>
|
|
83
|
+
</button>
|
|
84
|
+
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6Hu-uu-EUY">
|
|
85
|
+
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
86
|
+
<state key="normal" title="Labeled Button">
|
|
87
|
+
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
88
|
+
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
89
|
+
</state>
|
|
90
|
+
<state key="highlighted">
|
|
91
|
+
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
92
|
+
</state>
|
|
93
|
+
<connections>
|
|
94
|
+
<action selector="onLabeledButtonClicked:" destination="4" eventType="touchDown" id="SRl-Pb-TKU"/>
|
|
95
|
+
</connections>
|
|
96
|
+
</button>
|
|
97
|
+
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n4M-Kb-ePv">
|
|
98
|
+
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
99
|
+
<state key="normal" title="Go Elsewhere">
|
|
100
|
+
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
|
101
|
+
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
|
102
|
+
</state>
|
|
103
|
+
<state key="highlighted">
|
|
104
|
+
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
105
|
+
</state>
|
|
106
|
+
<connections>
|
|
107
|
+
<segue destination="2m6-NE-oGx" kind="push" id="g3T-p0-Sec"/>
|
|
108
|
+
</connections>
|
|
109
|
+
</button>
|
|
110
|
+
</subviews>
|
|
111
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
112
|
+
<constraints>
|
|
113
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="leading" secondItem="mEd-bW-xG3" secondAttribute="leading" type="default" id="078-hV-XP8"/>
|
|
114
|
+
<constraint firstItem="79f-eU-bDt" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="1JC-Aj-NzB"/>
|
|
115
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="top" secondItem="6Hu-uu-EUY" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="9II-fH-f7K"/>
|
|
116
|
+
<constraint firstAttribute="trailing" secondItem="27" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="CON-Cb-dBe"/>
|
|
117
|
+
<constraint firstAttribute="trailing" secondItem="Nyi-ck-8hR" secondAttribute="trailing" constant="227" id="G0P-fu-R9M"/>
|
|
118
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="leading" secondItem="MgB-Y1-P3J" secondAttribute="leading" type="default" id="GwV-n1-zD7"/>
|
|
119
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="top" secondItem="mEd-bW-xG3" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="IGG-em-f1e"/>
|
|
120
|
+
<constraint firstItem="mEd-bW-xG3" firstAttribute="top" secondItem="26" secondAttribute="top" constant="19" id="KGI-gf-TAe"/>
|
|
121
|
+
<constraint firstItem="27" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="LAk-gc-aCl"/>
|
|
122
|
+
<constraint firstItem="nbu-fr-Znd" firstAttribute="baseline" secondItem="HNa-e4-2od" secondAttribute="baseline" type="default" id="M5i-yy-h0N"/>
|
|
123
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="top" secondItem="MgB-Y1-P3J" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="MWf-xM-HxM"/>
|
|
124
|
+
<constraint firstItem="nbu-fr-Znd" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="RZE-cI-a2V"/>
|
|
125
|
+
<constraint firstItem="MgB-Y1-P3J" firstAttribute="leading" secondItem="HNa-e4-2od" secondAttribute="leading" type="default" id="TI6-aB-T6l"/>
|
|
126
|
+
<constraint firstItem="6Hu-uu-EUY" firstAttribute="trailing" secondItem="MgB-Y1-P3J" secondAttribute="trailing" type="default" id="Tkv-gE-Bb0"/>
|
|
127
|
+
<constraint firstItem="79f-eU-bDt" firstAttribute="top" secondItem="26" secondAttribute="top" constant="23" id="WAb-82-oiE"/>
|
|
128
|
+
<constraint firstItem="HNa-e4-2od" firstAttribute="trailing" secondItem="mEd-bW-xG3" secondAttribute="trailing" type="default" id="e4T-wS-zIa"/>
|
|
129
|
+
<constraint firstItem="27" firstAttribute="centerY" secondItem="26" secondAttribute="centerY" type="default" id="fbb-bQ-YI1"/>
|
|
130
|
+
<constraint firstItem="MgB-Y1-P3J" firstAttribute="top" secondItem="26" secondAttribute="top" constant="120" id="fxO-Da-wfr"/>
|
|
131
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="leading" secondItem="6Hu-uu-EUY" secondAttribute="leading" type="default" id="gQf-GL-AtC"/>
|
|
132
|
+
<constraint firstItem="mEd-bW-xG3" firstAttribute="leading" secondItem="26" secondAttribute="leading" constant="163" id="kHo-k9-xfB"/>
|
|
133
|
+
<constraint firstItem="n4M-Kb-ePv" firstAttribute="trailing" secondItem="6Hu-uu-EUY" secondAttribute="trailing" type="default" id="kXJ-R6-5W3"/>
|
|
134
|
+
<constraint firstItem="79f-eU-bDt" firstAttribute="baseline" secondItem="mEd-bW-xG3" secondAttribute="baseline" type="default" id="piK-8v-q9x"/>
|
|
135
|
+
<constraint firstItem="Nyi-ck-8hR" firstAttribute="top" secondItem="nbu-fr-Znd" secondAttribute="top" type="default" id="wtS-Ul-nbp"/>
|
|
136
|
+
</constraints>
|
|
137
|
+
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
138
|
+
</view>
|
|
139
|
+
<toolbarItems/>
|
|
140
|
+
<navigationItem key="navigationItem" title="Detail" id="53"/>
|
|
141
|
+
<connections>
|
|
142
|
+
<outlet property="detailDescriptionLabel" destination="27" id="29"/>
|
|
143
|
+
<outlet property="labelTextField" destination="HNa-e4-2od" id="SHv-1W-wQm"/>
|
|
144
|
+
<outlet property="labeledButton" destination="6Hu-uu-EUY" id="lP4-Wp-TLL"/>
|
|
145
|
+
<outlet property="labeledLabel" destination="27" id="GUQ-6K-Ygb"/>
|
|
146
|
+
<outlet property="placeholderTextField" destination="mEd-bW-xG3" id="WJN-WF-CeJ"/>
|
|
147
|
+
<outlet property="textButton" destination="MgB-Y1-P3J" id="dgB-Uo-P2L"/>
|
|
148
|
+
</connections>
|
|
149
|
+
</viewController>
|
|
150
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="15" sceneMemberID="firstResponder"/>
|
|
151
|
+
</objects>
|
|
152
|
+
<point key="canvasLocation" x="436" y="248"/>
|
|
153
|
+
</scene>
|
|
154
|
+
<!--View Controller - Elsewhere-->
|
|
155
|
+
<scene sceneID="c75-js-XhF">
|
|
156
|
+
<objects>
|
|
157
|
+
<viewController title="Elsewhere" id="2m6-NE-oGx" sceneMemberID="viewController">
|
|
158
|
+
<view key="view" contentMode="scaleToFill" id="L6v-eP-0Ap">
|
|
159
|
+
<rect key="frame" x="0.0" y="64" width="703" height="704"/>
|
|
160
|
+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
161
|
+
<subviews>
|
|
162
|
+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="You are now elsewhere." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Sw-kC-LPj">
|
|
163
|
+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
164
|
+
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
165
|
+
<nil key="highlightedColor"/>
|
|
166
|
+
</label>
|
|
167
|
+
</subviews>
|
|
168
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
169
|
+
<constraints>
|
|
170
|
+
<constraint firstItem="2Sw-kC-LPj" firstAttribute="top" secondItem="L6v-eP-0Ap" secondAttribute="top" constant="341" id="fPL-qj-geg"/>
|
|
171
|
+
<constraint firstItem="2Sw-kC-LPj" firstAttribute="centerX" secondItem="L6v-eP-0Ap" secondAttribute="centerX" type="default" id="iV6-oV-7kk"/>
|
|
172
|
+
</constraints>
|
|
173
|
+
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
174
|
+
</view>
|
|
175
|
+
<navigationItem key="navigationItem" title="Elsewhere" id="Y1Z-Bv-f1J"/>
|
|
176
|
+
</viewController>
|
|
177
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="Noc-VA-Z4v" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
178
|
+
</objects>
|
|
179
|
+
<point key="canvasLocation" x="1193" y="248"/>
|
|
180
|
+
</scene>
|
|
181
|
+
<!--Split View Controller-->
|
|
182
|
+
<scene sceneID="18">
|
|
183
|
+
<objects>
|
|
184
|
+
<splitViewController id="5" sceneMemberID="viewController">
|
|
185
|
+
<toolbarItems/>
|
|
186
|
+
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
|
|
187
|
+
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
188
|
+
<connections>
|
|
189
|
+
<segue destination="3" kind="relationship" relationship="masterViewController" id="9"/>
|
|
190
|
+
<segue destination="42" kind="relationship" relationship="detailViewController" id="51"/>
|
|
191
|
+
</connections>
|
|
192
|
+
</splitViewController>
|
|
193
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="17" sceneMemberID="firstResponder"/>
|
|
194
|
+
</objects>
|
|
195
|
+
<point key="canvasLocation" x="-687" y="-630"/>
|
|
196
|
+
</scene>
|
|
197
|
+
<!--Master View Controller - Master-->
|
|
198
|
+
<scene sceneID="24">
|
|
199
|
+
<objects>
|
|
200
|
+
<tableViewController storyboardIdentifier="" title="Master" clearsSelectionOnViewWillAppear="NO" id="19" customClass="MasterViewController" sceneMemberID="viewController">
|
|
201
|
+
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="20">
|
|
202
|
+
<rect key="frame" x="0.0" y="64" width="320" height="704"/>
|
|
203
|
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
204
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
205
|
+
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
|
206
|
+
<prototypes>
|
|
207
|
+
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="Cell" textLabel="tIi-5l-S0i" style="IBUITableViewCellStyleDefault" id="ZSw-0O-9Pw">
|
|
208
|
+
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
|
|
209
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
210
|
+
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
|
211
|
+
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
|
212
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
213
|
+
<subviews>
|
|
214
|
+
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tIi-5l-S0i">
|
|
215
|
+
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
|
216
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
217
|
+
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
|
|
218
|
+
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
219
|
+
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
220
|
+
</label>
|
|
221
|
+
</subviews>
|
|
222
|
+
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
223
|
+
</view>
|
|
224
|
+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
225
|
+
</tableViewCell>
|
|
226
|
+
</prototypes>
|
|
227
|
+
<sections/>
|
|
228
|
+
<connections>
|
|
229
|
+
<outlet property="dataSource" destination="19" id="22"/>
|
|
230
|
+
<outlet property="delegate" destination="19" id="21"/>
|
|
231
|
+
</connections>
|
|
232
|
+
</tableView>
|
|
233
|
+
<navigationItem key="navigationItem" title="Master" id="40"/>
|
|
234
|
+
</tableViewController>
|
|
235
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="23" sceneMemberID="firstResponder"/>
|
|
236
|
+
</objects>
|
|
237
|
+
<point key="canvasLocation" x="859" y="-631"/>
|
|
238
|
+
</scene>
|
|
239
|
+
<!--Navigation Controller-->
|
|
240
|
+
<scene sceneID="50">
|
|
241
|
+
<objects>
|
|
242
|
+
<navigationController id="42" sceneMemberID="viewController">
|
|
243
|
+
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="43">
|
|
244
|
+
<autoresizingMask key="autoresizingMask"/>
|
|
245
|
+
</navigationBar>
|
|
246
|
+
<connections>
|
|
247
|
+
<segue destination="4" kind="relationship" relationship="rootViewController" id="52"/>
|
|
248
|
+
</connections>
|
|
249
|
+
</navigationController>
|
|
250
|
+
<placeholder placeholderIdentifier="IBFirstResponder" id="49" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
251
|
+
</objects>
|
|
252
|
+
<point key="canvasLocation" x="-366" y="248"/>
|
|
253
|
+
</scene>
|
|
254
|
+
</scenes>
|
|
255
|
+
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
|
256
|
+
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
|
|
257
|
+
<simulatedOrientationMetrics key="orientation"/>
|
|
258
|
+
<simulatedScreenMetrics key="destination"/>
|
|
259
|
+
</simulatedMetricsContainer>
|
|
260
|
+
</document>
|