summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2016-03-03 16:33:25 -0800
committerMinh Nguyễn <mxn@1ec5.org>2016-03-10 17:08:58 -0800
commita65730803e4185600ff7251cf0a18a4835f4f41b (patch)
tree30cabbcf8bea3ba9925ea034c9d8061e4e319eb5
parent3879bc6a4e2e322fb7ba8ab61db3c54ede6bb6a7 (diff)
downloadqtlocation-mapboxgl-a65730803e4185600ff7251cf0a18a4835f4f41b.tar.gz
[ios] Converted iosapp to use storyboard
-rw-r--r--platform/ios/app/MBXAppDelegate.m4
-rw-r--r--platform/ios/app/MBXViewController.mm112
-rw-r--r--platform/ios/app/Storyboard.storyboard97
-rw-r--r--platform/ios/app/app-info.plist2
-rw-r--r--platform/ios/app/mapboxgl-app.gypi1
5 files changed, 136 insertions, 80 deletions
diff --git a/platform/ios/app/MBXAppDelegate.m b/platform/ios/app/MBXAppDelegate.m
index a06424feb7..9ceee7cad0 100644
--- a/platform/ios/app/MBXAppDelegate.m
+++ b/platform/ios/app/MBXAppDelegate.m
@@ -23,10 +23,6 @@
[MGLAccountManager setAccessToken:accessToken];
}
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[MBXViewController new]];
- [self.window makeKeyAndVisible];
-
return YES;
}
diff --git a/platform/ios/app/MBXViewController.mm b/platform/ios/app/MBXViewController.mm
index af4e425841..548a5e7100 100644
--- a/platform/ios/app/MBXViewController.mm
+++ b/platform/ios/app/MBXViewController.mm
@@ -19,7 +19,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
@interface MBXViewController () <UIActionSheetDelegate, MGLMapViewDelegate>
-@property (nonatomic) MGLMapView *mapView;
+@property (nonatomic) IBOutlet MGLMapView *mapView;
@property (nonatomic) NSUInteger styleIndex;
@end
@@ -44,94 +44,54 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
}
-- (id)init
-{
- self = [super init];
-
- if (self)
- {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveState:) name:UIApplicationDidEnterBackgroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(restoreState:) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveState:) name:UIApplicationWillTerminateNotification object:nil];
- }
-
- return self;
-}
-
- (void)viewDidLoad
{
[super viewDidLoad];
-
- self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds];
- self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- self.mapView.delegate = self;
- [self.view addSubview:self.mapView];
-
- self.view.tintColor = kTintColor;
- self.navigationController.navigationBar.tintColor = kTintColor;
- self.mapView.tintColor = kTintColor;
-
- self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"settings.png"]
- style:UIBarButtonItemStylePlain
- target:self
- action:@selector(showSettings)];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveState:) name:UIApplicationDidEnterBackgroundNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(restoreState:) name:UIApplicationWillEnterForegroundNotification object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(saveState:) name:UIApplicationWillTerminateNotification object:nil];
+
self.styleIndex = 0;
- UIButton *titleButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [titleButton setFrame:CGRectMake(0, 0, 150, 40)];
+ UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
[titleButton setTitle:@(mbgl::util::default_styles::orderedStyles[self.styleIndex].name) forState:UIControlStateNormal];
- [titleButton setTitleColor:kTintColor forState:UIControlStateNormal];
- [titleButton addTarget:self action:@selector(cycleStyles) forControlEvents:UIControlEventTouchUpInside];
- self.navigationItem.titleView = titleButton;
-
- self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"TrackingLocationOffMask.png"]
- style:UIBarButtonItemStylePlain
- target:self
- action:@selector(locateUser)];
-
- [self.mapView addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]];
[self restoreState:nil];
}
- (void)saveState:(__unused NSNotification *)notification
{
- if (self.mapView)
- {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSData *archivedCamera = [NSKeyedArchiver archivedDataWithRootObject:self.mapView.camera];
- [defaults setObject:archivedCamera forKey:@"MBXCamera"];
- [defaults setInteger:self.mapView.userTrackingMode forKey:@"MBXUserTrackingMode"];
- [defaults setBool:self.mapView.showsUserLocation forKey:@"MBXShowsUserLocation"];
- [defaults setInteger:self.mapView.debugMask forKey:@"MBXDebugMask"];
- [defaults synchronize];
- }
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ NSData *archivedCamera = [NSKeyedArchiver archivedDataWithRootObject:self.mapView.camera];
+ [defaults setObject:archivedCamera forKey:@"MBXCamera"];
+ [defaults setInteger:self.mapView.userTrackingMode forKey:@"MBXUserTrackingMode"];
+ [defaults setBool:self.mapView.showsUserLocation forKey:@"MBXShowsUserLocation"];
+ [defaults setInteger:self.mapView.debugMask forKey:@"MBXDebugMask"];
+ [defaults synchronize];
}
- (void)restoreState:(__unused NSNotification *)notification
{
- if (self.mapView) {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSData *archivedCamera = [defaults objectForKey:@"MBXCamera"];
- MGLMapCamera *camera = archivedCamera ? [NSKeyedUnarchiver unarchiveObjectWithData:archivedCamera] : nil;
- if (camera)
- {
- self.mapView.camera = camera;
- }
- NSInteger uncheckedTrackingMode = [defaults integerForKey:@"MBXUserTrackingMode"];
- if (uncheckedTrackingMode >= 0 &&
- (NSUInteger)uncheckedTrackingMode >= MGLUserTrackingModeNone &&
- (NSUInteger)uncheckedTrackingMode <= MGLUserTrackingModeFollowWithCourse)
- {
- self.mapView.userTrackingMode = (MGLUserTrackingMode)uncheckedTrackingMode;
- }
- self.mapView.showsUserLocation = [defaults boolForKey:@"MBXShowsUserLocation"];
- NSInteger uncheckedDebugMask = [defaults integerForKey:@"MBXDebugMask"];
- if (uncheckedDebugMask >= 0)
- {
- self.mapView.debugMask = (MGLMapDebugMaskOptions)uncheckedDebugMask;
- }
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ NSData *archivedCamera = [defaults objectForKey:@"MBXCamera"];
+ MGLMapCamera *camera = archivedCamera ? [NSKeyedUnarchiver unarchiveObjectWithData:archivedCamera] : nil;
+ if (camera)
+ {
+ self.mapView.camera = camera;
+ }
+ NSInteger uncheckedTrackingMode = [defaults integerForKey:@"MBXUserTrackingMode"];
+ if (uncheckedTrackingMode >= 0 &&
+ (NSUInteger)uncheckedTrackingMode >= MGLUserTrackingModeNone &&
+ (NSUInteger)uncheckedTrackingMode <= MGLUserTrackingModeFollowWithCourse)
+ {
+ self.mapView.userTrackingMode = (MGLUserTrackingMode)uncheckedTrackingMode;
+ }
+ self.mapView.showsUserLocation = [defaults boolForKey:@"MBXShowsUserLocation"];
+ NSInteger uncheckedDebugMask = [defaults integerForKey:@"MBXDebugMask"];
+ if (uncheckedDebugMask >= 0)
+ {
+ self.mapView.debugMask = (MGLMapDebugMaskOptions)uncheckedDebugMask;
}
}
@@ -142,7 +102,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
#pragma mark - Actions
-- (void)showSettings
+- (IBAction)showSettings:(__unused id)sender
{
MGLMapDebugMaskOptions debugMask = self.mapView.debugMask;
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Map Settings"
@@ -441,7 +401,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
[self.mapView showAnnotations:@[annotation] animated:YES];
}
-- (void)handleLongPress:(UILongPressGestureRecognizer *)longPress
+- (IBAction)handleLongPress:(UILongPressGestureRecognizer *)longPress
{
if (longPress.state == UIGestureRecognizerStateBegan)
{
@@ -455,7 +415,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
}
-- (void)cycleStyles
+- (IBAction)cycleStyles:(__unused id)sender
{
UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
@@ -466,7 +426,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
[titleButton setTitle:@(mbgl::util::default_styles::orderedStyles[self.styleIndex].name) forState:UIControlStateNormal];
}
-- (void)locateUser
+- (IBAction)locateUser:(__unused id)sender
{
MGLUserTrackingMode nextMode;
switch (self.mapView.userTrackingMode) {
diff --git a/platform/ios/app/Storyboard.storyboard b/platform/ios/app/Storyboard.storyboard
new file mode 100644
index 0000000000..68ee45b8d2
--- /dev/null
+++ b/platform/ios/app/Storyboard.storyboard
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10109" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="PSe-Ot-7Ff">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10083"/>
+ </dependencies>
+ <scenes>
+ <!--Map View Controller-->
+ <scene sceneID="p0T-1N-kQ6">
+ <objects>
+ <viewController id="WaX-pd-UZQ" userLabel="Map View Controller" customClass="MBXViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="f0q-9O-L15"/>
+ <viewControllerLayoutGuide type="bottom" id="m8o-i7-QIy"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="Z9X-fc-PUC">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kNe-zV-9ha" customClass="MGLMapView">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <gestureRecognizers/>
+ <connections>
+ <outlet property="delegate" destination="WaX-pd-UZQ" id="za0-3B-qR6"/>
+ <outletCollection property="gestureRecognizers" destination="lfd-mn-7en" appends="YES" id="0PH-gH-GRm"/>
+ </connections>
+ </view>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstItem="kNe-zV-9ha" firstAttribute="leading" secondItem="Z9X-fc-PUC" secondAttribute="leading" id="53e-Tz-QxF"/>
+ <constraint firstItem="kNe-zV-9ha" firstAttribute="bottom" secondItem="m8o-i7-QIy" secondAttribute="top" id="Etp-BC-E1N"/>
+ <constraint firstAttribute="trailing" secondItem="kNe-zV-9ha" secondAttribute="trailing" id="MGr-8G-VEb"/>
+ <constraint firstItem="kNe-zV-9ha" firstAttribute="top" secondItem="Z9X-fc-PUC" secondAttribute="top" id="qMm-e9-jxH"/>
+ </constraints>
+ </view>
+ <navigationItem key="navigationItem" id="p8W-eP-el5">
+ <nil key="title"/>
+ <barButtonItem key="leftBarButtonItem" image="settings.png" id="Jw8-JP-CaZ">
+ <connections>
+ <action selector="showSettings:" destination="WaX-pd-UZQ" id="X2C-Ee-Qvt"/>
+ </connections>
+ </barButtonItem>
+ <button key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="KsN-ny-Hou">
+ <rect key="frame" x="180" y="7" width="240" height="30"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
+ <state key="normal" title="Streets"/>
+ <connections>
+ <action selector="cycleStyles:" destination="WaX-pd-UZQ" eventType="touchUpInside" id="PnY-mb-J6m"/>
+ </connections>
+ </button>
+ <barButtonItem key="rightBarButtonItem" image="TrackingLocationOffMask.png" id="CQ1-GP-M6x">
+ <connections>
+ <action selector="locateUser:" destination="WaX-pd-UZQ" id="XgF-DB-z3f"/>
+ </connections>
+ </barButtonItem>
+ </navigationItem>
+ <connections>
+ <outlet property="mapView" destination="kNe-zV-9ha" id="VNR-WO-1q4"/>
+ </connections>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="AAd-8J-9UU" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ <pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="0.5" id="lfd-mn-7en">
+ <connections>
+ <action selector="handleLongPress:" destination="WaX-pd-UZQ" id="dkk-bc-rvl"/>
+ </connections>
+ </pongPressGestureRecognizer>
+ </objects>
+ <point key="canvasLocation" x="1366" y="350"/>
+ </scene>
+ <!--Navigation Controller-->
+ <scene sceneID="LFg-oU-zTK">
+ <objects>
+ <navigationController automaticallyAdjustsScrollViewInsets="NO" id="PSe-Ot-7Ff" sceneMemberID="viewController">
+ <toolbarItems/>
+ <navigationBar key="navigationBar" contentMode="scaleToFill" id="ONr-CS-J5X">
+ <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </navigationBar>
+ <nil name="viewControllers"/>
+ <connections>
+ <segue destination="WaX-pd-UZQ" kind="relationship" relationship="rootViewController" id="lV0-PD-2Ag"/>
+ </connections>
+ </navigationController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="Lom-R7-kwe" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="554" y="350"/>
+ </scene>
+ </scenes>
+ <resources>
+ <image name="TrackingLocationOffMask.png" width="23" height="23"/>
+ <image name="settings.png" width="28" height="28"/>
+ </resources>
+ <color key="tintColor" red="0.12156862745098039" green="0.5490196078431373" blue="0.6705882352941176" alpha="1" colorSpace="calibratedRGB"/>
+</document>
diff --git a/platform/ios/app/app-info.plist b/platform/ios/app/app-info.plist
index eb2080dd08..13452c9427 100644
--- a/platform/ios/app/app-info.plist
+++ b/platform/ios/app/app-info.plist
@@ -45,6 +45,8 @@
<string>The map will display the user's location.</string>
<key>UILaunchStoryboardName</key>
<string>Default</string>
+ <key>UIMainStoryboardFile</key>
+ <string>Storyboard</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
diff --git a/platform/ios/app/mapboxgl-app.gypi b/platform/ios/app/mapboxgl-app.gypi
index 5f9a11873a..21941e309d 100644
--- a/platform/ios/app/mapboxgl-app.gypi
+++ b/platform/ios/app/mapboxgl-app.gypi
@@ -11,6 +11,7 @@
'mac_bundle': 1,
'mac_bundle_resources': [
'<!@(find ../platform/ios/app/img -type f)',
+ './Storyboard.storyboard',
'./points.geojson',
'./polyline.geojson',
'./threestates.geojson',