summaryrefslogtreecommitdiff
path: root/platform/ios
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios')
-rw-r--r--platform/ios/CHANGELOG.md34
-rw-r--r--platform/ios/DEVELOPING.md108
-rw-r--r--platform/ios/INSTALL.md71
-rw-r--r--platform/ios/Mapbox-iOS-SDK-symbols.podspec4
-rw-r--r--platform/ios/Mapbox-iOS-SDK.podspec4
-rw-r--r--platform/ios/Mapbox.playground/Contents.swift158
-rw-r--r--platform/ios/Mapbox.playground/contents.xcplayground4
-rw-r--r--platform/ios/Mapbox.playground/timeline.xctimeline6
-rw-r--r--platform/ios/WorkspaceSettings.xcsettings18
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json86
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.pngbin0 -> 1103 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.pngbin0 -> 1103 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.pngbin0 -> 1234 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png (renamed from platform/ios/app/img/Icon-40.png)bin951 -> 951 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.pngbin0 -> 1276 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png (renamed from platform/ios/app/img/Icon-40@2x.png)bin1528 -> 1528 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png (renamed from platform/ios/app/img/Icon-60@2x.png)bin2091 -> 2091 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png (renamed from platform/ios/app/img/Icon-60@3x.png)bin1300 -> 1300 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png (renamed from platform/ios/app/img/Icon-76.png)bin1447 -> 1447 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png (renamed from platform/ios/app/img/Icon-76@2x.png)bin2520 -> 2520 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.pngbin0 -> 2536 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png (renamed from platform/ios/app/img/Icon-Small.png)bin684 -> 684 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png (renamed from platform/ios/app/img/Icon-Spotlight-40@3x.png)bin961 -> 961 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/Contents.json6
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png (renamed from platform/ios/app/img/TrackingHeadingMask.png)bin250 -> 250 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png (renamed from platform/ios/app/img/TrackingHeadingMask@2x.png)bin467 -> 467 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png (renamed from platform/ios/app/img/TrackingHeadingMask@3x.png)bin672 -> 672 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png (renamed from platform/ios/app/img/TrackingLocationMask.png)bin407 -> 407 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png (renamed from platform/ios/app/img/TrackingLocationMask@2x.png)bin680 -> 680 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png (renamed from platform/ios/app/img/TrackingLocationMask@3x.png)bin903 -> 903 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json26
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png (renamed from platform/ios/app/img/TrackingLocationOffMask.png)bin493 -> 493 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png (renamed from platform/ios/app/img/TrackingLocationOffMask@2x.png)bin973 -> 973 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png (renamed from platform/ios/app/img/TrackingLocationOffMask@3x.png)bin1407 -> 1407 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/settings.imageset/Contents.json25
-rw-r--r--platform/ios/app/Assets.xcassets/settings.imageset/settings.png (renamed from platform/ios/app/img/settings.png)bin528 -> 528 bytes
-rw-r--r--platform/ios/app/Assets.xcassets/settings.imageset/settings@2x.png (renamed from platform/ios/app/img/settings@2x.png)bin1130 -> 1130 bytes
-rw-r--r--platform/ios/app/Default-568h@2x.png (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png)bin18594 -> 18594 bytes
-rw-r--r--platform/ios/app/Info.plist (renamed from platform/ios/app/app-info.plist)27
-rw-r--r--platform/ios/app/LaunchScreen.storyboard27
-rw-r--r--platform/ios/app/MBXAnnotationView.h7
-rw-r--r--platform/ios/app/MBXAnnotationView.m28
-rw-r--r--platform/ios/app/MBXAppDelegate.h2
-rw-r--r--platform/ios/app/MBXAppDelegate.m8
-rw-r--r--platform/ios/app/MBXCustomCalloutView.m10
-rw-r--r--platform/ios/app/MBXOfflinePacksTableViewController.m5
-rw-r--r--platform/ios/app/MBXViewController.m (renamed from platform/ios/app/MBXViewController.mm)429
-rw-r--r--platform/ios/app/Main.storyboard (renamed from platform/ios/app/Storyboard.storyboard)19
-rw-r--r--platform/ios/app/Settings.bundle/Root.plist33
-rw-r--r--platform/ios/app/Settings.bundle/en.lproj/Root.strings3
-rw-r--r--platform/ios/app/img/Default-568h@2x.pngbin2239 -> 0 bytes
-rw-r--r--platform/ios/app/img/Default-667h@2x.pngbin2797 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-60.pngbin1313 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-72.pngbin1418 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-72@2x.pngbin2442 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-76@3x.pngbin1741 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Small-50.pngbin1118 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Small-50@2x.pngbin1839 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Small@2x.pngbin1231 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Small@3x.pngbin807 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Spotlight-40.pngbin951 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon-Spotlight-40@2x.pngbin1528 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon.pngbin1171 -> 0 bytes
-rw-r--r--platform/ios/app/img/Icon@2x.pngbin1931 -> 0 bytes
-rw-r--r--platform/ios/app/img/iTunesArtworkbin264721 -> 0 bytes
-rw-r--r--platform/ios/app/img/iTunesArtwork.pngbin5655 -> 0 bytes
-rw-r--r--platform/ios/app/img/iTunesArtwork@2xbin661346 -> 0 bytes
-rw-r--r--platform/ios/app/img/iTunesArtwork@2x.pngbin9293 -> 0 bytes
-rw-r--r--platform/ios/app/mapboxgl-app.gypi81
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json98
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.pngbin0 -> 2296 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.pngbin0 -> 5596 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.pngbin0 -> 1640 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.pngbin0 -> 5073 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png (renamed from platform/ios/benchmark/img/Icon-40.png)bin1295 -> 1295 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png (renamed from platform/ios/benchmark/img/Icon-40@2x.png)bin2971 -> 2971 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png (renamed from platform/ios/benchmark/img/Icon-40@3x.png)bin5936 -> 5936 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png (renamed from platform/ios/benchmark/img/Icon-76.png)bin2841 -> 2841 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png (renamed from platform/ios/benchmark/img/Icon-76@2x.png)bin8633 -> 8633 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png (renamed from platform/ios/benchmark/img/Icon-Small.png)bin1009 -> 1009 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png (renamed from platform/ios/benchmark/img/Icon-Small@2x.png)bin2046 -> 2046 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png (renamed from platform/ios/benchmark/img/Icon-Small@3x.png)bin3371 -> 3371 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.pngbin0 -> 3559 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png (renamed from platform/ios/benchmark/img/iTunesArtwork.png)bin113442 -> 113442 bytes
-rw-r--r--platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png (renamed from platform/ios/benchmark/img/iTunesArtwork@2x.png)bin399202 -> 399202 bytes
-rw-r--r--platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard27
-rw-r--r--platform/ios/benchmark/Info.plist (renamed from platform/ios/benchmark/app-info.plist)8
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.h2
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.m26
-rw-r--r--platform/ios/benchmark/MBXBenchViewController.mm61
-rw-r--r--platform/ios/benchmark/benchmark-ios.gypi78
-rw-r--r--platform/ios/benchmark/img/Icon-60.pngbin2051 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-60@2x.pngbin5936 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-60@3x.pngbin11806 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-72.pngbin2610 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-72@2x.pngbin7894 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small-50.pngbin1676 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small-50@2x.pngbin4490 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon.pngbin2009 -> 0 bytes
-rw-r--r--platform/ios/benchmark/img/Icon.svg6
-rw-r--r--platform/ios/benchmark/img/Icon@2x.pngbin5436 -> 0 bytes
-rw-r--r--platform/ios/benchmark/locations.hpp5
-rw-r--r--platform/ios/bitrise.yml36
-rw-r--r--platform/ios/docs/doc-README.md2
-rw-r--r--platform/ios/docs/pod-README.md60
-rw-r--r--platform/ios/framework/Info-static.plist26
-rw-r--r--platform/ios/framework/Info.plist16
-rw-r--r--platform/ios/framework/Mapbox.m32
-rw-r--r--platform/ios/framework/Settings.bundle/Base.lproj/Root.strings3
-rw-r--r--platform/ios/framework/Settings.bundle/Root.plist6
-rw-r--r--platform/ios/framework/Settings.bundle/en.lproj/Root.stringsbin552 -> 0 bytes
-rw-r--r--platform/ios/framework/framework-ios.gypi71
-rw-r--r--platform/ios/include/Mapbox.h22
-rw-r--r--platform/ios/ios.xcodeproj/project.pbxproj1972
-rw-r--r--platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme128
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme91
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme127
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme113
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme91
-rw-r--r--platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme89
-rw-r--r--platform/ios/ios.xcworkspace/contents.xcworkspacedata16
-rw-r--r--platform/ios/ios.xcworkspace/xcshareddata/ios.xcscmblueprint37
-rw-r--r--platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist25
-rw-r--r--platform/ios/jazzy.yml90
-rw-r--r--platform/ios/platform.gyp141
-rw-r--r--platform/ios/resources/Base.lproj/Localizable.strings84
-rw-r--r--platform/ios/resources/Compass.pngbin1061 -> 1139 bytes
-rw-r--r--platform/ios/resources/Compass@2x.pngbin1300 -> 1892 bytes
-rw-r--r--platform/ios/resources/Compass@3x.pngbin2514 -> 3398 bytes
-rw-r--r--platform/ios/resources/en.lproj/Localizable.stringsdict23
-rwxr-xr-xplatform/ios/scripts/after_failure.sh13
-rw-r--r--platform/ios/scripts/configure.sh13
-rw-r--r--platform/ios/scripts/defaults.mk11
-rwxr-xr-xplatform/ios/scripts/deploy-packages.sh1
-rwxr-xr-xplatform/ios/scripts/document.sh1
-rwxr-xr-xplatform/ios/scripts/install.sh20
-rwxr-xr-xplatform/ios/scripts/package.sh211
-rwxr-xr-xplatform/ios/scripts/run.sh52
-rw-r--r--platform/ios/scripts/setup.sh5
-rwxr-xr-xplatform/ios/scripts/test.sh13
-rw-r--r--platform/ios/src/MGLAPIClient.m26
-rw-r--r--platform/ios/src/MGLAnnotationContainerView.h17
-rw-r--r--platform/ios/src/MGLAnnotationContainerView.m52
-rw-r--r--platform/ios/src/MGLAnnotationImage.h (renamed from platform/ios/include/MGLAnnotationImage.h)2
-rw-r--r--platform/ios/src/MGLAnnotationImage.m2
-rw-r--r--platform/ios/src/MGLAnnotationImage_Private.h3
-rw-r--r--platform/ios/src/MGLAnnotationView.h61
-rw-r--r--platform/ios/src/MGLAnnotationView.mm147
-rw-r--r--platform/ios/src/MGLAnnotationView_Private.h15
-rw-r--r--platform/ios/src/MGLCalloutView.h (renamed from platform/ios/include/MGLCalloutView.h)12
-rw-r--r--platform/ios/src/MGLLocationManager.m18
-rw-r--r--platform/ios/src/MGLMapView+IBAdditions.h (renamed from platform/ios/include/MGLMapView+IBAdditions.h)0
-rw-r--r--platform/ios/src/MGLMapView+MGLCustomStyleLayerAdditions.h (renamed from platform/ios/include/MGLMapView+MGLCustomStyleLayerAdditions.h)0
-rw-r--r--platform/ios/src/MGLMapView.h (renamed from platform/ios/include/MGLMapView.h)471
-rw-r--r--platform/ios/src/MGLMapView.mm1334
-rw-r--r--platform/ios/src/MGLMapViewDelegate.h284
-rw-r--r--platform/ios/src/MGLMapView_Internal.h17
-rw-r--r--platform/ios/src/MGLMapboxEvents.m32
-rw-r--r--platform/ios/src/MGLUserLocation.h (renamed from platform/ios/include/MGLUserLocation.h)0
-rw-r--r--platform/ios/src/MGLUserLocation.m3
-rw-r--r--platform/ios/src/MGLUserLocationAnnotationView.m87
-rw-r--r--platform/ios/src/Mapbox.h (renamed from platform/ios/framework/Mapbox.h)10
-rw-r--r--platform/ios/test/Images.xcassets/AppIcon.appiconset/Contents.json162
-rw-r--r--platform/ios/test/Info.plist24
m---------platform/ios/test/KIF0
-rw-r--r--platform/ios/uitest/.gitignore (renamed from platform/ios/test/.gitignore)0
-rw-r--r--platform/ios/uitest/App-Info.plist (renamed from platform/ios/test/App-Info.plist)2
-rw-r--r--platform/ios/uitest/Bundle-Info.plist (renamed from platform/ios/test/Bundle-Info.plist)0
-rw-r--r--platform/ios/uitest/Images.xcassets/AppIcon.appiconset/Contents.json73
-rw-r--r--platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Contents.json (renamed from platform/ios/test/Images.xcassets/LaunchImage.launchimage/Contents.json)0
-rw-r--r--platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png (renamed from platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png)bin184 -> 184 bytes
-rw-r--r--platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default@2x.png (renamed from platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default@2x.png)bin170 -> 170 bytes
m---------platform/ios/uitest/KIF0
-rw-r--r--platform/ios/uitest/KIFTestActor+MapboxGL.h (renamed from platform/ios/test/KIFTestActor+MapboxGL.h)0
-rw-r--r--platform/ios/uitest/KIFTestActor+MapboxGL.m (renamed from platform/ios/test/KIFTestActor+MapboxGL.m)0
-rw-r--r--platform/ios/uitest/LaunchScreen.xib (renamed from platform/ios/test/LaunchScreen.xib)0
-rw-r--r--platform/ios/uitest/MGLTAppDelegate.h (renamed from platform/ios/test/MGLTAppDelegate.h)0
-rw-r--r--platform/ios/uitest/MGLTAppDelegate.m (renamed from platform/ios/test/MGLTAppDelegate.m)0
-rw-r--r--platform/ios/uitest/MGLTViewController.h (renamed from platform/ios/test/MGLTViewController.h)0
-rw-r--r--platform/ios/uitest/MGLTViewController.m (renamed from platform/ios/test/MGLTViewController.m)0
-rw-r--r--platform/ios/uitest/MapViewTests.m (renamed from platform/ios/test/MapViewTests.m)11
-rw-r--r--platform/ios/uitest/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h (renamed from platform/ios/test/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMArg.h (renamed from platform/ios/test/OCMock/OCMock/OCMArg.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMConstraint.h (renamed from platform/ios/test/OCMock/OCMock/OCMConstraint.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMLocation.h (renamed from platform/ios/test/OCMock/OCMock/OCMLocation.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMMacroState.h (renamed from platform/ios/test/OCMock/OCMock/OCMMacroState.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMRecorder.h (renamed from platform/ios/test/OCMock/OCMock/OCMRecorder.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMStubRecorder.h (renamed from platform/ios/test/OCMock/OCMock/OCMStubRecorder.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMock.h (renamed from platform/ios/test/OCMock/OCMock/OCMock.h)0
-rw-r--r--platform/ios/uitest/OCMock/OCMock/OCMockObject.h (renamed from platform/ios/test/OCMock/OCMock/OCMockObject.h)0
-rw-r--r--platform/ios/uitest/OCMock/libOCMock.a (renamed from platform/ios/test/OCMock/libOCMock.a)bin2071640 -> 2071640 bytes
-rw-r--r--platform/ios/uitest/OHHTTPStubs/.gitignore (renamed from platform/ios/test/OHHTTPStubs/.gitignore)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/.travis.yml (renamed from platform/ios/test/OHHTTPStubs/.travis.yml)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/CHANGELOG.md (renamed from platform/ios/test/OHHTTPStubs/CHANGELOG.md)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.m (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.xib (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.xib)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile.lock (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile.lock)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg)bin46859 -> 46859 bytes
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png)bin18594 -> 18594 bytes
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m (renamed from platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/AppDelegate.swift (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/AppDelegate.swift)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Main.storyboard (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Main.storyboard)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/MainViewController.swift (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/MainViewController.swift)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile.lock (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile.lock)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h)0
l---------platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg)bin46859 -> 46859 bytes
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.txt (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.txt)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.pngbin0 -> 18594 bytes
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib (renamed from platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/LICENSE (renamed from platform/ios/test/OHHTTPStubs/LICENSE)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs.podspec (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs.podspec)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile.lock (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile.lock)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h)0
l---------platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail)0
-rwxr-xr-xplatform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail (renamed from platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/README.md (renamed from platform/ios/test/OHHTTPStubs/README.md)0
-rw-r--r--platform/ios/uitest/OHHTTPStubs/Rakefile (renamed from platform/ios/test/OHHTTPStubs/Rakefile)0
-rw-r--r--platform/ios/uitest/ios-tests.xcodeproj/project.pbxproj (renamed from platform/ios/test/ios-tests.xcodeproj/project.pbxproj)134
-rw-r--r--platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata (renamed from platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata)0
-rw-r--r--platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout (renamed from platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout)0
-rw-r--r--platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout (renamed from platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout)0
-rw-r--r--platform/ios/uitest/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme (renamed from platform/ios/test/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme)0
-rw-r--r--platform/ios/uitest/main.m (renamed from platform/ios/test/main.m)0
480 files changed, 6433 insertions, 1806 deletions
diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md
index c0eaa9b7f5..2b34571d1c 100644
--- a/platform/ios/CHANGELOG.md
+++ b/platform/ios/CHANGELOG.md
@@ -1,6 +1,38 @@
# Changelog for Mapbox iOS SDK
-Mapbox welcomes participation and contributions from everyone. If you’d like to do so please see [CONTRIBUTING.md](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started.
+Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started.
+
+## master
+
+- Applications linking against the SDK static framework no longer need to add `-ObjC` to the Other Linker Flags (`OTHER_LDFLAGS`) build setting. If you previously added this flag solely for this SDK, removing the flag may potentially reduce the overall size of your application. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641))
+- Removed the `armv7s` slice from the SDK to reduce its size. iPhone 5 and iPhone 5c automatically use the `armv7` slice instead. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641))
+- MGLPointAnnotation and custom MGLAnnotation implementations (but not MGLMultiPoint) can be backed by an MGLAnnotationView instead of an MGLAnnotationImage. MGLAnnotationView is a subclass of UIView, so you can use Core Animation and other familiar technologies with it. To associate an MGLAnnotation with an MGLAnnotationView, implement `-mapView:viewForAnnotation:` in your MGLMapViewDelegate class. ([#4801](https://github.com/mapbox/mapbox-gl-native/pull/4801))
+- The user dot now moves smoothly between user location updates while user location tracking is disabled. ([#1582](https://github.com/mapbox/mapbox-gl-native/pull/1582))
+- An MGLAnnotation can be relocated by changing its `coordinate` property in a KVO-compliant way. An MGLMultiPoint cannot be relocated. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835))
+- Setting the `image` property of an MGLAnnotationImage to `nil` resets it to the default red pin image and reclaims resources that can be used to customize additional annotations. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835))
+- Added methods to MGLMapView for obtaining the underlying map data rendered by the current style, along with additional classes to represent complex geometry in that data. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110))
+- An MGLPolygon can now have interior polygons, representing holes knocked out of the overall shape. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110))
+- `MGLOfflinePackProgress` now indicates how many tiles have been downloaded and how much space they take up. ([#4874](https://github.com/mapbox/mapbox-gl-native/pull/4874))
+- The compass, user dot, and visible annotations are now accessible to VoiceOver users. ([#1496](https://github.com/mapbox/mapbox-gl-native/pull/1496))
+- Fixed an issue (speculatively) where the tile cache could be included in iCloud backups. ([#5124](https://github.com/mapbox/mapbox-gl-native/pull/5124))
+- Improved performance viewing regions with large landcover polygons when viewing a style that uses the Mapbox Streets source. ([#2444](https://github.com/mapbox/mapbox-gl-native/pull/2444))
+- Fixed a memory leak when using raster resources. ([#5141](https://github.com/mapbox/mapbox-gl-native/pull/5141))
+- The SDK is now localizable. No localizations are currently provided, other than English, but if you need a particular localization, you can install the SDK manually and drop a .lproj folder into the framework. ([#4783](https://github.com/mapbox/mapbox-gl-native/pull/4783))
+- Fixed an issue preventing KVO change notifications from being generated on MGLMapView’s `userTrackingMode` key path when `-setUserTrackingMode:animated:` is called. ([#4724](https://github.com/mapbox/mapbox-gl-native/pull/4724))
+- Rendering now occurs on the main thread, fixing a hang when calling `-[MGLMapView styleURL]` before the map view has fully loaded or while the application is in the background. ([#2909](https://github.com/mapbox/mapbox-gl-native/pull/2909))
+- Improved responsiveness when zooming in then immediately panning around. ([#4595](https://github.com/mapbox/mapbox-gl-native/pull/4595))
+- Fixed a crash setting MGLMapView’s `userLocationVerticalAlignment` property before a user location update has occurred. ([#5274](https://github.com/mapbox/mapbox-gl-native/issues/5274))
+- Added category methods on NSValue for converting to and from the structure types defined in MGLGeometry.h. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802))
+- Added NSFormatter subclasses for converting geographic coordinates and directions into display strings. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802))
+- Added a new method, `-[MGLMapView cameraThatFitsCoordinateBounds:]`, to get a camera that you can pass into `-setCamera:` that fits the given coordinate bounds. ([#4790](https://github.com/mapbox/mapbox-gl-native/pull/4790))
+- Added a `-reloadStyle:` action to MGLMapView to force a reload of the current style. ([#4728](https://github.com/mapbox/mapbox-gl-native/pull/4728))
+- A more specific user agent string is now sent with style and tile requests. ([#4012](https://github.com/mapbox/mapbox-gl-native/pull/4012))
+- Mapbox Telemetry is automatically disabled while the host application is running in the iOS Simulator. ([#4726](https://github.com/mapbox/mapbox-gl-native/pull/4726))
+- Suppressed “Unable to make space for entry” console spew. ([#4708](https://github.com/mapbox/mapbox-gl-native/pull/4708))
+- Removed unused SVG files from the SDK’s resource bundle. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641))
+- Deprecated `-[MGLMapView emptyMemoryCache]`. ([#4725](https://github.com/mapbox/mapbox-gl-native/pull/4725))
+- Added `MGLCoordinateInCoordinateBounds()`, a function that tests whether or not a coordinate is in a given bounds. ([#5053](https://github.com/mapbox/mapbox-gl-native/pull/5053))
+- Added a new option to `MGLMapDebugMaskOptions`, `MGLMapDebugWireframesMask`, that shows wireframes instead of the usual rendered output. ([#4359](https://github.com/mapbox/mapbox-gl-native/pull/4359))
## 3.2.3
diff --git a/platform/ios/DEVELOPING.md b/platform/ios/DEVELOPING.md
index 15693eadb6..d771f7541b 100644
--- a/platform/ios/DEVELOPING.md
+++ b/platform/ios/DEVELOPING.md
@@ -2,55 +2,117 @@
This document explains how to build the Mapbox iOS SDK from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox iOS SDK.
-### Requirements
+## Requirements
-The Mapbox iOS SDK and iosapp demo application build against the iOS 7.0 SDK and require Xcode on a computer running OS X.
+The Mapbox iOS SDK and iosapp demo application build against the iOS 7.0 SDK. The SDK is intended to run on iOS 7.0 and above, while iosapp is intended to run on iOS 8.0 and above due to the use of a dynamic framework. Both require Xcode on a computer running OS X.
-### Build
+## Building the SDK
-[Install core dependencies](../../INSTALL.md), then run
+Make sure that you have the [core dependencies](../../INSTALL.md) installed.
- make iproj
+Create and open an Xcode workspace that includes both the SDK source and some Objective-C test applications by running:
-Which will create and open an Xcode project that can build the entire library from source, as well as an Objective-C test app. Before building, use the scheme picker button in the toolbar to change the scheme from “All (ios project)” to “iosapp” and the destination from “My Mac” to one of the simulators or connected devices listed in the menu.
+```bash
+make iproj
+```
-If you don't have an Apple Developer account, change the destination from "My Mac" to a simulator such as "iPhone 6" before you run and build the app.
+### Xcode schemes
-`ipackage` is only one of several available `make` build targets. Others include:
+Before building, use the scheme picker button in the toolbar to change the scheme to **iosapp** and the destination to one of the simulators or connected devices listed in the menu.
-* `make ipackage` builds both dynamic and static frameworks in the Release configuration for devices and the iOS Simulator.
+**iosapp** is only one of several shared schemes. Others include:
+
+* **CI** builds exactly what gets built for continuous integration on Bitrise.
+* **bench** is a simple benchmarking application. For more consistent results between runs, run `platform/ios/benchmark/assets/{glyphs,tiles}/download.sh` to download any necessary resources.
+* **dynamic** builds the SDK as a dynamic framework.
+* **static** builds the SDK as a static library and separate resource bundle.
+* **dynamic+static** is a combination of the **dynamic** and **static** schemes.
+
+If you don’t have an Apple Developer account, change the destination to a simulator such as “iPhone 6s” before you run and build the app.
+
+### Packaging builds
+
+Install [jazzy](https://github.com/realm/jazzy) for generating API documentation:
+
+```bash
+[sudo] gem install jazzy
+```
+
+Build and package the SDK by using one of the following commands:
+
+* `make ipackage` builds both dynamic and static frameworks in the Debug configuration for devices and the iOS Simulator.
+* `make iframework` builds a dynamic framework in the Debug configuration for devices and the iOS Simulator. The CocoaPods pod downloads the output of this target.
* `make ipackage-sim` builds a dynamic framework in the Debug configuration for the iOS simulator. This is the fastest target.
-* `make ipackage-strip` builds both dynamic and static frameworks in the Release configuration, stripped of debug symbols, for devices and the iOS Simulator.
-* `make iframework` builds a dynamic framework in the Release configuration for devices and the iOS Simulator. The CocoaPods pod downloads the output of this target.
+* `make ipackage-strip` builds both dynamic and static frameworks in the Debug configuration, stripped of debug symbols, for devices and the iOS Simulator.
+* `make ifabric` builds a special static framework for compatibility with the Fabric Mac application.
You can customize the build output by passing the following arguments into the `make` invocation:
-* `BITCODE=NO` builds without Bitcode support.
+* `BUILDTYPE=Release` will optimize for distribution. Defaults to `Debug`.
* `BUILD_DEVICE=false` builds only for the iOS Simulator.
* `FORMAT=dynamic` builds only a dynamic framework. `FORMAT=static` builds only a static framework, for compatibility with iOS 7.x.
* `SYMBOLS=NO` strips the build output of any debug symbols, yielding much smaller binaries.
-### Access Tokens
+An example command that creates a dynamic framework suitable for eventual App Store distribution:
+
+```bash
+make iframework BUILDTYPE=Release SYMBOLS=NO
+```
+
+The products of these build commands can be found in the `build/ios/pkg` folder at the base of the repository.
+
+## Contributing
+
+### Adding a source code file
+
+To add an Objective-C header or implementation file to the iOS SDK:
+
+1. Add the file to the Headers or Compile Sources build phase, as appropriate, of both the “dynamic” and “static” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector.
+1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the iOS SDK’s umbrella header](./src/Mapbox.h).
+1. _(Optional.)_ If the file would also be used by the OS X SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion OS X document](../osx/DEVELOPING.md#adding-a-source-code-file) for further instructions.
+
+### Adding a resource
+
+To add a resource (such as an image, SSL certificate, property list, or strings table) to the iOS SDK:
+
+1. Add the header to the Copy Bundle Resources build phase of both the “dynamic” and “bundle” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector.
+1. _(Optional.)_ If the resource would also be used by the OS X SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion OS X document](../osx/DEVELOPING.md#adding-a-resource) for further instructions.
+
+### Adding user-facing text
+
+To add or update text that the user may see in the iOS SDK:
-_The demo applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/)._
+1. Make sure the implementation file imports [NSBundle+MGLAdditions.h](../darwin/src/NSBundle+MGLAdditions.h).
+1. Use the `NSLocalizedStringWithDefaultValue()` macro:
+ * `key` is a unique identifier that won’t change if the user-facing text ever needs to change.
+ * `tbl` is `Foundation` in code shared between the iOS and OS X SDKs, or `nil` otherwise.
+ * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument.
+ * `val` is the English string.
+1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages.
+1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the OS X SDK’s strings tables.
-Set up the access token by editing the scheme for the application target, then adding an environment variable with the name `MAPBOX_ACCESS_TOKEN`.
+## Testing
-![edit scheme](https://cloud.githubusercontent.com/assets/98601/5460702/c4610262-8519-11e4-873a-8597821da468.png)
+`make test-ios` builds and runs unit tests of cross-platform code as well as the SDK.
-![setting access token in Xcode scheme](https://cloud.githubusercontent.com/assets/162976/5349358/0a086f00-7f8c-11e4-8433-bdbaccda2b58.png)
+Before you can run unit tests of the cross-platform code on the command line, install ios-sim version 3.2.0 (not any other version):
-### Test
+```bash
+brew tap mapbox/homebrew-ios-sim-3
+brew install mapbox/homebrew-ios-sim-3/ios-sim
+```
-Run
+To instead run the cross-platform tests in Xcode instead of on the command line:
- make itest
+1. Run `make iproj` to set up the workspace.
+1. Change the scheme to “test (platform project)” and press Command-R to run core unit tests.
+1. Change the scheme to “CI” and press Command-U to run SDK integration tests.
-To run the included integration tests on the command line.
+## Access tokens
-If you want to run the tests in Xcode instead, first `make ipackage` to create a local static library version, then open `platform/ios/test/ios-tests.xcodeproj`, and lastly `Command + U` on the `Mapbox GL Tests` application target.
+The included applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). You will be prompted for this access token the first time you launch the demo or benchmarking application. In the iOS Simulator, you can paste your access token by pressing Command-V, holding down the left mouse button in the text field, and pressing the Paste button that appears.
-### Usage
+## Using iosapp
- Pan to move
- Pinch to zoom
diff --git a/platform/ios/INSTALL.md b/platform/ios/INSTALL.md
index 416bbc6381..bdda38946d 100644
--- a/platform/ios/INSTALL.md
+++ b/platform/ios/INSTALL.md
@@ -1,16 +1,16 @@
# Integrating the Mapbox iOS SDK into your application
-This document explains how to build a development version of Mapbox iOS SDK for the purpose of incorporating it into your own Cocoa Touch application.
+This document explains how to build a development version of Mapbox iOS SDK for use in your own Cocoa Touch application. To use a production-ready version of the SDK, see the [Mapbox iOS SDK homepage](https://github.com/mapbox/ios-sdk).
### Requirements
-The Mapbox iOS SDK and iosapp demo application build against the iOS 7.0 SDK. They are intended to run on iOS 7.0 and above on the following devices and their simulators:
+The Mapbox iOS SDK application builds against the iOS 7.0 SDK. It is intended to run on iOS 7.0 and above on the following devices and their simulators:
* iPhone 4S and above (5, 5c, 5s, 6, 6 Plus)
* iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2)
* iPod touch 5th generation and above
-### Build
+### Building the SDK
1. [Install core dependencies](../../INSTALL.md).
@@ -26,7 +26,7 @@ The Mapbox iOS SDK and iosapp demo application build against the iOS 7.0 SDK. Th
- a `documentation` folder with HTML API documentation
- an example `Settings.bundle` containing an optional Mapbox Telemetry opt-out setting
-### Install
+### Installation
There are a few ways to install the Mapbox iOS SDK:
@@ -36,7 +36,7 @@ Currently, until [#1437](https://github.com/mapbox/mapbox-gl-native/issues/1437)
1. Zip up the build product.
- ```
+ ```bash
cd build/ios/pkg/
ZIP=mapbox-ios-sdk.zip
rm -f ../${ZIP}
@@ -64,14 +64,13 @@ Currently, until [#1437](https://github.com/mapbox/mapbox-gl-native/issues/1437)
1. Run `pod update` to grab the newly-built library.
-
-
-##### Testing Pre-Releases with CocoaPods
+##### Testing pre-releases with CocoaPods
To test pre-releases and/or betas, you can reference the pre-release like so in your Podfile:
- pod 'Mapbox-iOS-SDK', podspec: 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native/<insert branch or tag>/ios/Mapbox-iOS-SDK.podspec'
-
+```rb
+pod 'Mapbox-iOS-SDK', podspec: 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native/<insert branch or tag>/ios/Mapbox-iOS-SDK.podspec'
+```
#### Dynamic framework
@@ -79,7 +78,7 @@ This is the recommended workflow for manually integrating the SDK into an applic
1. Build from source manually per above.
-1. Open the project editor and select your application target. Drag `build/ios/pkg/dynamic/Mapbox.framework` into the “Embedded Binaries” section of the General tab. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
+1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `build/ios/pkg/dynamic/` directory into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field:
@@ -95,38 +94,42 @@ If your application targets iOS 7.x, you’ll need to install the static framewo
1. Build from source manually per above.
-1. Drag the Mapbox.bundle and Mapbox.framework files in `build/ios/pkg/static` into the Project navigator, checking "Copy items if needed". It should happen automatically, but ensure that:
-
- - `Mapbox.framework` is listed in your `Link Binary With Libraries` build phase.
- - Your *Framework Search Paths* (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains `Mapbox.framework`. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient.
- - `Mapbox.bundle` is in your target's *Copy Bundle Resources* build phase.
+1. Drag the Mapbox.bundle and Mapbox.framework from the `build/ios/pkg/static/` directory into the Project navigator. In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. Open the project editor and select your application target to verify that the following changes occurred automatically:
-1. **Optional** As [noted in the documentation](https://www.mapbox.com/ios-sdk/#telemetry_opt_out) you may use the provided Settings.bundle to provide a Telemetry opt out for users. To use the provided file, drag the `Settings.bundle` file in `build/ios/pkg` into the Project navigator, checking "Copy items if needed". It should happen automatically, but ensure that:
+ - In the General tab, Mapbox.framework is listed in the “Linked Frameworks and Libraries” section.
+ - In the Build Settings tab, the “Framework Search Paths” (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains Mapbox.framework. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient.
+ - In the Build Phases tab, Mapbox.bundle is listed in the “Copy Bundle Resources” build phase.
- - `Settings.bundle` is in your target's *Copy Bundle Resources* build phase.
+1. Back in the General tab, add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section:
-1. Add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section:
+ - GLKit.framework
+ - ImageIO.framework
+ - MobileCoreServices.framework
+ - QuartzCore.framework
+ - SystemConfiguration.framework
+ - libc++.tbd
+ - libsqlite3.tbd
+ - libz.tbd
- - `GLKit.framework`
- - `ImageIO.framework`
- - `MobileCoreServices.framework`
- - `QuartzCore.framework`
- - `SystemConfiguration.framework`
- - `libc++.tbd`
- - `libsqlite3.tbd`
- - `libz.tbd`
+### Configuration
-1. In the Build Settings tab, add `-ObjC` to the “Other Linker Flags” (`OTHER_LDFLAGS`) build setting.
+1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
-### Use
+1. _(Optional)_ Mapbox Telemetry is a [powerful location analytics platform](https://www.mapbox.com/telemetry/) included in this SDK. By default, anonymized location and usage data is sent to Mapbox whenever the host application causes it to be gathered. This SDK provides users with a way to individually opt out of Mapbox Telemetry. You can also add this opt-out setting to your application’s Settings screen using a Settings bundle. An example Settings.bundle is available in the `build/ios/pkg/` directory; drag it into the Project navigator, checking “Copy items if needed” when prompted. In the project editor, verify that the following change occurred automatically:
-1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target. In the Info tab, set `MGLMapboxAccessToken` to your access token. You can obtain one from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
+ - In the General tab, Settings.bundle is listed in the “Copy Bundle Resources” build phase.
-1. In a XIB or storyboard, add a View and set its custom class to `MGLMapView`. If you need to manipulate the map view programmatically, import the `Mapbox` module (Swift) or `Mapbox.h` umbrella header (Objective-C), then connect the map view to a new outlet in your view controller class. The resulting outlet declaration should look something like:
+### Usage
+
+In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MGLMapView`. If you need to manipulate the map view programmatically:
+
+1. Switch to the Assistant Editor.
+1. Import the `Mapbox` module.
+1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this:
```objc
// ViewController.m
-#import <Mapbox/Mapbox.h>
+@import Mapbox;
@interface ViewController : UIViewController
@@ -143,7 +146,3 @@ class ViewController: UIViewController {
@IBOutlet var mapView: MGLMapView!
}
```
-
-### Troubleshooting
-
-On OS X, you can also try clearing the Xcode cache with `make clear_xcode_cache`. \ No newline at end of file
diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec
index 5b3ef83113..3642d8b7de 100644
--- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec
+++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |m|
m.name = 'Mapbox-iOS-SDK'
- m.version = '3.2.3-symbols'
+ m.version = '3.3.0-beta.1-symbols'
m.summary = 'Open source vector map solution for iOS with full styling capabilities.'
m.description = 'Open source, OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa Touch APIs.'
@@ -10,7 +10,7 @@ Pod::Spec.new do |m|
m.author = { 'Mapbox' => 'mobile@mapbox.com' }
m.screenshot = 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/screenshot.png'
m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://www.mapbox.com/ios-sdk/'
+ m.documentation_url = 'https://www.mapbox.com/ios-sdk/api/'
m.source = {
:http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip",
diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec
index a93e002a55..da9213dba2 100644
--- a/platform/ios/Mapbox-iOS-SDK.podspec
+++ b/platform/ios/Mapbox-iOS-SDK.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |m|
m.name = 'Mapbox-iOS-SDK'
- m.version = '3.2.3'
+ m.version = '3.3.0-beta.1'
m.summary = 'Open source vector map solution for iOS with full styling capabilities.'
m.description = 'Open source, OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa Touch APIs.'
@@ -10,7 +10,7 @@ Pod::Spec.new do |m|
m.author = { 'Mapbox' => 'mobile@mapbox.com' }
m.screenshot = 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/screenshot.png'
m.social_media_url = 'https://twitter.com/mapbox'
- m.documentation_url = 'https://www.mapbox.com/ios-sdk/'
+ m.documentation_url = 'https://www.mapbox.com/ios-sdk/api/'
m.source = {
:http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip",
diff --git a/platform/ios/Mapbox.playground/Contents.swift b/platform/ios/Mapbox.playground/Contents.swift
new file mode 100644
index 0000000000..ed48116da9
--- /dev/null
+++ b/platform/ios/Mapbox.playground/Contents.swift
@@ -0,0 +1,158 @@
+import UIKit
+import XCPlayground
+import Mapbox
+
+let width: CGFloat = 700
+let height: CGFloat = 800
+
+class Responder: NSObject {
+ var mapView: MGLMapView?
+ func togglePitch(sender: UISwitch) {
+ let camera = mapView!.camera
+ camera.pitch = sender.on ? 60 : 0
+ mapView!.setCamera(camera, animated: false)
+ }
+}
+
+//: A control panel
+let panelWidth: CGFloat = 200
+let panel = UIView(frame: CGRect(x: width - panelWidth, y: 0, width: 200, height: 100))
+panel.alpha = 0.8
+panel.backgroundColor = UIColor.whiteColor()
+
+// Delete markers
+let deleteSwitchLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
+deleteSwitchLabel.adjustsFontSizeToFitWidth = true
+deleteSwitchLabel.text = "Delete Markers"
+let deleteMarkerSwitchView = UISwitch(frame: CGRect(x: panelWidth - panelWidth / 2.0, y:0, width: 100, height: 50))
+panel.addSubview(deleteSwitchLabel)
+panel.addSubview(deleteMarkerSwitchView)
+
+// Hide markers
+let hideSwitchLabel = UILabel(frame: CGRect(x: 0, y: 30, width: 100, height: 30))
+hideSwitchLabel.adjustsFontSizeToFitWidth = true
+hideSwitchLabel.text = "Hide Markers"
+let hideMarkerSwitchView = UISwitch(frame: CGRect(x: panelWidth - panelWidth / 2.0, y: 30, width: 100, height: 50))
+panel.addSubview(hideSwitchLabel)
+panel.addSubview(hideMarkerSwitchView)
+
+// Pitch map
+let pitchLabel = UILabel(frame: CGRect(x: 0, y: 60, width: 100, height: 30))
+pitchLabel.text = "Pitch"
+let pitchSwitch = UISwitch(frame: CGRect(x: panelWidth-panelWidth / 2.0, y: 60, width: 100, height: 50))
+let responder = Responder()
+pitchSwitch.addTarget(responder, action: #selector(responder.togglePitch(_:)), forControlEvents: .ValueChanged)
+panel.addSubview(pitchLabel)
+panel.addSubview(pitchSwitch)
+
+//: # Mapbox Maps
+
+/*:
+ Put your access token into a plain text file called `token`. Then select the “token” placeholder below, go to Editor ‣ Insert File Literal, and select the `token` file.
+ */
+var accessToken = try String(contentsOfURL: <#token#>)
+MGLAccountManager.setAccessToken(accessToken)
+
+class PlaygroundAnnotationView: MGLAnnotationView {
+
+ override func prepareForReuse() {
+ hidden = hideMarkerSwitchView.on
+ }
+
+}
+
+//: Define a map delegate
+
+class MapDelegate: NSObject, MGLMapViewDelegate {
+
+ var annotationViewByAnnotation = [MGLPointAnnotation: PlaygroundAnnotationView]()
+
+ func mapView(mapView: MGLMapView, viewForAnnotation annotation: MGLAnnotation) -> MGLAnnotationView? {
+
+ var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("annotation") as? PlaygroundAnnotationView
+
+ if (annotationView == nil) {
+ let av = PlaygroundAnnotationView(reuseIdentifier: "annotation")
+ av.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
+ av.centerOffset = CGVector(dx: -15, dy: -15)
+ av.flat = true
+ let centerView = UIView(frame: CGRectInset(av.bounds, 3, 3))
+ centerView.backgroundColor = UIColor.whiteColor()
+ av.addSubview(centerView)
+ av.backgroundColor = UIColor.purpleColor()
+ annotationView = av
+ } else {
+ annotationView!.subviews.first?.backgroundColor = UIColor.greenColor()
+ }
+
+ annotationViewByAnnotation[annotation as! MGLPointAnnotation] = annotationView
+
+ return annotationView
+ }
+
+ func mapView(mapView: MGLMapView, didSelectAnnotation annotation: MGLAnnotation) {
+ let pointAnnotation = annotation as! MGLPointAnnotation
+ let annotationView: PlaygroundAnnotationView = annotationViewByAnnotation[pointAnnotation]!
+
+ for view in annotationViewByAnnotation.values {
+ view.layer.zPosition = -1
+ }
+
+ annotationView.layer.zPosition = 1
+
+ UIView.animateWithDuration(1.25, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.6, options: .CurveEaseOut, animations: {
+ annotationView.transform = CGAffineTransformMakeScale(1.8, 1.8)
+ }) { _ in
+ annotationView.transform = CGAffineTransformMakeScale(1, 1)
+
+ if deleteMarkerSwitchView.on {
+ mapView.removeAnnotation(pointAnnotation)
+ return
+ }
+
+ if hideMarkerSwitchView.on {
+ annotationView.hidden = true
+ }
+ }
+ }
+
+ func handleTap(press: UILongPressGestureRecognizer) {
+ let mapView: MGLMapView = press.view as! MGLMapView
+
+ if (press.state == .Recognized) {
+ let coordiante: CLLocationCoordinate2D = mapView.convertPoint(press.locationInView(mapView), toCoordinateFromView: mapView)
+ let annotation = MGLPointAnnotation()
+ annotation.title = "Dropped Marker"
+ annotation.coordinate = coordiante
+ mapView.addAnnotation(annotation)
+ mapView.showAnnotations([annotation], animated: true)
+ }
+ }
+
+}
+
+//: Create a map and its delegate
+
+let lat: CLLocationDegrees = 37.174057
+let lng: CLLocationDegrees = -104.490984
+let centerCoordinate = CLLocationCoordinate2D(latitude: lat, longitude: lng)
+
+let mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: width, height: height))
+mapView.frame = CGRect(x: 0, y: 0, width: width, height: height)
+
+XCPlaygroundPage.currentPage.liveView = mapView
+
+let mapDelegate = MapDelegate()
+mapView.delegate = mapDelegate
+responder.mapView = mapView
+
+let tapGesture = UILongPressGestureRecognizer(target: mapDelegate, action: #selector(mapDelegate.handleTap))
+mapView.addGestureRecognizer(tapGesture)
+
+//: Zoom in to a location
+
+mapView.setCenterCoordinate(centerCoordinate, zoomLevel: 12, animated: false)
+
+//: Add control panel
+
+mapView.addSubview(panel)
diff --git a/platform/ios/Mapbox.playground/contents.xcplayground b/platform/ios/Mapbox.playground/contents.xcplayground
new file mode 100644
index 0000000000..35968656f5
--- /dev/null
+++ b/platform/ios/Mapbox.playground/contents.xcplayground
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<playground version='5.0' target-platform='ios' display-mode='raw'>
+ <timeline fileName='timeline.xctimeline'/>
+</playground> \ No newline at end of file
diff --git a/platform/ios/Mapbox.playground/timeline.xctimeline b/platform/ios/Mapbox.playground/timeline.xctimeline
new file mode 100644
index 0000000000..bf468afeca
--- /dev/null
+++ b/platform/ios/Mapbox.playground/timeline.xctimeline
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Timeline
+ version = "3.0">
+ <TimelineItems>
+ </TimelineItems>
+</Timeline>
diff --git a/platform/ios/WorkspaceSettings.xcsettings b/platform/ios/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000000..a2d959210c
--- /dev/null
+++ b/platform/ios/WorkspaceSettings.xcsettings
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildLocationStyle</key>
+ <string>UseAppPreferences</string>
+ <key>CustomBuildLocationType</key>
+ <string>RelativeToDerivedData</string>
+ <key>DerivedDataCustomLocation</key>
+ <string>../../build</string>
+ <key>DerivedDataLocationStyle</key>
+ <string>WorkspaceRelativePath</string>
+ <key>IssueFilterStyle</key>
+ <string>ShowActiveSchemeOnly</string>
+ <key>LiveSourceIssuesEnabled</key>
+ <true/>
+</dict>
+</plist>
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..c1b88669e7
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,86 @@
+{
+ "images" : [
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-Spotlight-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-29@2x-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40@2x-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-83.5@2x.png",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png
new file mode 100644
index 0000000000..1e609d3281
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png
new file mode 100644
index 0000000000..1e609d3281
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png
new file mode 100644
index 0000000000..c7d5aea4eb
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-40.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png
index eca13393e6..eca13393e6 100644
--- a/platform/ios/app/img/Icon-40.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png
new file mode 100644
index 0000000000..277535538a
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-40@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
index 070d037539..070d037539 100644
--- a/platform/ios/app/img/Icon-40@2x.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-60@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
index b7f25955f5..b7f25955f5 100644
--- a/platform/ios/app/img/Icon-60@2x.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-60@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
index b00d479839..b00d479839 100644
--- a/platform/ios/app/img/Icon-60@3x.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-76.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png
index 895b4a1761..895b4a1761 100644
--- a/platform/ios/app/img/Icon-76.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-76@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
index 7bc5208976..7bc5208976 100644
--- a/platform/ios/app/img/Icon-76@2x.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
new file mode 100644
index 0000000000..0082319b1e
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-Small.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
index aecbbc8a1d..aecbbc8a1d 100644
--- a/platform/ios/app/img/Icon-Small.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
Binary files differ
diff --git a/platform/ios/app/img/Icon-Spotlight-40@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
index a3789dcb78..a3789dcb78 100644
--- a/platform/ios/app/img/Icon-Spotlight-40@3x.png
+++ b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/Contents.json b/platform/ios/app/Assets.xcassets/Contents.json
new file mode 100644
index 0000000000..da4a164c91
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json
new file mode 100644
index 0000000000..957660ab78
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingHeadingMask.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingHeadingMask@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingHeadingMask@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/img/TrackingHeadingMask.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png
index 9ec0567a3f..9ec0567a3f 100644
--- a/platform/ios/app/img/TrackingHeadingMask.png
+++ b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingHeadingMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png
index 0df8ccc229..0df8ccc229 100644
--- a/platform/ios/app/img/TrackingHeadingMask@2x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingHeadingMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png
index e4b93e42e7..e4b93e42e7 100644
--- a/platform/ios/app/img/TrackingHeadingMask@3x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json
new file mode 100644
index 0000000000..08cd551fc7
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationMask.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationMask@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationMask@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/img/TrackingLocationMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
index bb7348c482..bb7348c482 100644
--- a/platform/ios/app/img/TrackingLocationMask.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingLocationMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
index 35c5a293ec..35c5a293ec 100644
--- a/platform/ios/app/img/TrackingLocationMask@2x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingLocationMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
index af523975a5..af523975a5 100644
--- a/platform/ios/app/img/TrackingLocationMask@3x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json
new file mode 100644
index 0000000000..3ccbab44aa
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json
@@ -0,0 +1,26 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationOffMask.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationOffMask@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "TrackingLocationOffMask@3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/img/TrackingLocationOffMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png
index 87b26c5710..87b26c5710 100644
--- a/platform/ios/app/img/TrackingLocationOffMask.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingLocationOffMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png
index 232d534b41..232d534b41 100644
--- a/platform/ios/app/img/TrackingLocationOffMask@2x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png
Binary files differ
diff --git a/platform/ios/app/img/TrackingLocationOffMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png
index b609fbe84e..b609fbe84e 100644
--- a/platform/ios/app/img/TrackingLocationOffMask@3x.png
+++ b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png
Binary files differ
diff --git a/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json b/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json
new file mode 100644
index 0000000000..1eeddba9b9
--- /dev/null
+++ b/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json
@@ -0,0 +1,25 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "settings.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "settings@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/app/img/settings.png b/platform/ios/app/Assets.xcassets/settings.imageset/settings.png
index 5d7643eef5..5d7643eef5 100644
--- a/platform/ios/app/img/settings.png
+++ b/platform/ios/app/Assets.xcassets/settings.imageset/settings.png
Binary files differ
diff --git a/platform/ios/app/img/settings@2x.png b/platform/ios/app/Assets.xcassets/settings.imageset/settings@2x.png
index 2bb9f0ebad..2bb9f0ebad 100644
--- a/platform/ios/app/img/settings@2x.png
+++ b/platform/ios/app/Assets.xcassets/settings.imageset/settings@2x.png
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png b/platform/ios/app/Default-568h@2x.png
index 0891b7aabf..0891b7aabf 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png
+++ b/platform/ios/app/Default-568h@2x.png
Binary files differ
diff --git a/platform/ios/app/app-info.plist b/platform/ios/app/Info.plist
index 13452c9427..3602ab7964 100644
--- a/platform/ios/app/app-info.plist
+++ b/platform/ios/app/Info.plist
@@ -5,15 +5,15 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
- <string>${PRODUCT_NAME}</string>
+ <string>$(PRODUCT_NAME)</string>
<key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
+ <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.mapbox.MapboxGL</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
+ <string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -24,29 +24,16 @@
<string>7877</string>
<key>LSRequiresIPhoneOS</key>
<true/>
- <key>MGLMetricsTestServerURL</key>
- <string>https://cloudfront-staging.tilestream.net</string>
- <key>NSAppTransportSecurity</key>
- <dict>
- <key>NSExceptionDomains</key>
- <dict>
- <key>cloudfront-staging.tilestream.net</key>
- <dict>
- <key>NSExceptionRequiresForwardSecrecy</key>
- <false/>
- </dict>
- </dict>
- </dict>
<key>NSHumanReadableCopyright</key>
<string>© 2014–2016 Mapbox</string>
<key>NSLocationAlwaysUsageDescription</key>
- <string>The map will ALWAYS display the user's location.</string>
+ <string>The map will ALWAYS display the user’s location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
- <string>The map will display the user's location.</string>
+ <string>The map will display the user’s location.</string>
<key>UILaunchStoryboardName</key>
- <string>Default</string>
+ <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
- <string>Storyboard</string>
+ <string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
diff --git a/platform/ios/app/LaunchScreen.storyboard b/platform/ios/app/LaunchScreen.storyboard
new file mode 100644
index 0000000000..323bd43177
--- /dev/null
+++ b/platform/ios/app/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="EHf-IW-A2E">
+ <objects>
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+ <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="53" y="375"/>
+ </scene>
+ </scenes>
+</document>
diff --git a/platform/ios/app/MBXAnnotationView.h b/platform/ios/app/MBXAnnotationView.h
new file mode 100644
index 0000000000..78dfe17699
--- /dev/null
+++ b/platform/ios/app/MBXAnnotationView.h
@@ -0,0 +1,7 @@
+#import <Mapbox/Mapbox.h>
+
+@interface MBXAnnotationView : MGLAnnotationView
+
+@property (nonatomic) UIColor *centerColor;
+
+@end
diff --git a/platform/ios/app/MBXAnnotationView.m b/platform/ios/app/MBXAnnotationView.m
new file mode 100644
index 0000000000..890881a316
--- /dev/null
+++ b/platform/ios/app/MBXAnnotationView.m
@@ -0,0 +1,28 @@
+#import "MBXAnnotationView.h"
+
+@interface MBXAnnotationView ()
+
+@property (nonatomic) UIView *centerView;
+
+@end
+
+@implementation MBXAnnotationView
+
+- (void)layoutSubviews {
+ [super layoutSubviews];
+ if (!self.centerView) {
+ self.backgroundColor = [UIColor blueColor];
+ self.centerView = [[UIView alloc] initWithFrame:CGRectInset(self.bounds, 1.0, 1.0)];
+ self.centerView.backgroundColor = self.centerColor;
+ [self addSubview:self.centerView];
+ }
+}
+
+- (void)setCenterColor:(UIColor *)centerColor {
+ if (![_centerColor isEqual:centerColor]) {
+ _centerColor = centerColor;
+ self.centerView.backgroundColor = centerColor;
+ }
+}
+
+@end
diff --git a/platform/ios/app/MBXAppDelegate.h b/platform/ios/app/MBXAppDelegate.h
index da081fdcd5..8145d3b8ca 100644
--- a/platform/ios/app/MBXAppDelegate.h
+++ b/platform/ios/app/MBXAppDelegate.h
@@ -1,5 +1,7 @@
#import <UIKit/UIKit.h>
+extern NSString * const MBXMapboxAccessTokenDefaultsKey;
+
@interface MBXAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
diff --git a/platform/ios/app/MBXAppDelegate.m b/platform/ios/app/MBXAppDelegate.m
index 9ceee7cad0..c2834bfa7f 100644
--- a/platform/ios/app/MBXAppDelegate.m
+++ b/platform/ios/app/MBXAppDelegate.m
@@ -2,6 +2,8 @@
#import "MBXViewController.h"
#import <Mapbox/Mapbox.h>
+NSString * const MBXMapboxAccessTokenDefaultsKey = @"MBXMapboxAccessToken";
+
@implementation MBXAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
@@ -12,14 +14,12 @@
if (accessToken) {
// Store to preferences so that we can launch the app later on without having to specify
// token.
- [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:@"access_token"];
+ [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MBXMapboxAccessTokenDefaultsKey];
} else {
// Try to retrieve from preferences, maybe we've stored them there previously and can reuse
// the token.
- accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"access_token"];
+ accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:MBXMapboxAccessTokenDefaultsKey];
}
- if ( ! accessToken) NSLog(@"No access token set. Mapbox vector tiles won't work.");
-
[MGLAccountManager setAccessToken:accessToken];
}
diff --git a/platform/ios/app/MBXCustomCalloutView.m b/platform/ios/app/MBXCustomCalloutView.m
index 8f9bd8ed40..9edc00f6e9 100644
--- a/platform/ios/app/MBXCustomCalloutView.m
+++ b/platform/ios/app/MBXCustomCalloutView.m
@@ -40,6 +40,11 @@ static CGFloat const tipWidth = 10.0;
- (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToView:(UIView *)constrainedView animated:(BOOL)animated
{
+ if ([self.delegate respondsToSelector:@selector(calloutViewWillAppear:)])
+ {
+ [self.delegate performSelector:@selector(calloutViewWillAppear:) withObject:self];
+ }
+
[view addSubview:self];
// prepare title label
if ([self.representedObject respondsToSelector:@selector(title)])
@@ -54,6 +59,11 @@ static CGFloat const tipWidth = 10.0;
CGFloat frameOriginY = rect.origin.y - frameHeight;
self.frame = CGRectMake(frameOriginX, frameOriginY,
frameWidth, frameHeight);
+
+ if ([self.delegate respondsToSelector:@selector(calloutViewDidAppear:)])
+ {
+ [self.delegate performSelector:@selector(calloutViewDidAppear:) withObject:self];
+ }
}
- (void)dismissCalloutAnimated:(BOOL)animated
diff --git a/platform/ios/app/MBXOfflinePacksTableViewController.m b/platform/ios/app/MBXOfflinePacksTableViewController.m
index 8aad4fbbf8..008d843b1e 100644
--- a/platform/ios/app/MBXOfflinePacksTableViewController.m
+++ b/platform/ios/app/MBXOfflinePacksTableViewController.m
@@ -24,6 +24,7 @@ static NSString * const MBXOfflinePacksTableViewActiveCellReuseIdentifier = @"Ac
- (void)applyToMapView:(MGLMapView *)mapView {
mapView.styleURL = self.styleURL;
[mapView setVisibleCoordinateBounds:self.bounds];
+ mapView.zoomLevel = MIN(self.maximumZoomLevel, MAX(self.minimumZoomLevel, mapView.zoomLevel));
}
@end
@@ -172,7 +173,7 @@ static NSString * const MBXOfflinePacksTableViewActiveCellReuseIdentifier = @"Ac
numberStyle:NSNumberFormatterDecimalStyle];
}
if (progress.maximumResourcesExpected > progress.countOfResourcesExpected) {
- expectedString = [@"at least " stringByAppendingString:expectedString];
+ expectedString = [NSString stringWithFormat:@"at least %@", expectedString];
}
statusString = [NSString stringWithFormat:@"Downloading %@ of %@ resources (%@ so far)…",
completedString, expectedString, byteCountString];
@@ -246,7 +247,7 @@ static NSString * const MBXOfflinePacksTableViewActiveCellReuseIdentifier = @"Ac
NSError *error = notification.userInfo[MGLOfflinePackErrorUserInfoKey];
NSAssert([error isKindOfClass:[NSError class]], @"MGLOfflineStorage notification has a non-error error.");
- NSString *message = [NSString stringWithFormat:@"iosapp encountered an error while downloading the offline pack “%@”: %@", pack.name, error.localizedFailureReason];
+ NSString *message = [NSString stringWithFormat:@"Mapbox GL encountered an error while downloading the offline pack “%@”: %@", pack.name, error.localizedFailureReason];
if (error.code == MGLErrorCodeConnectionFailed) {
NSLog(@"%@", message);
} else {
diff --git a/platform/ios/app/MBXViewController.mm b/platform/ios/app/MBXViewController.m
index c8a1713104..8317aee1d9 100644
--- a/platform/ios/app/MBXViewController.mm
+++ b/platform/ios/app/MBXViewController.m
@@ -1,34 +1,46 @@
#import "MBXViewController.h"
+
+#import "MBXAppDelegate.h"
#import "MBXCustomCalloutView.h"
#import "MBXOfflinePacksTableViewController.h"
+#import "MBXAnnotationView.h"
#import <Mapbox/Mapbox.h>
-#import "../../../include/mbgl/util/default_styles.hpp"
-
-#import <CoreLocation/CoreLocation.h>
-#import <OpenGLES/ES2/gl.h>
-static UIColor *const kTintColor = [UIColor colorWithRed:0.120 green:0.550 blue:0.670 alpha:1.000];
-static NSString * const kCustomCalloutTitle = @"Custom Callout";
+#import <objc/runtime.h>
static const CLLocationCoordinate2D WorldTourDestinations[] = {
- { 38.9131982, -77.0325453144239 },
- { 37.7757368, -122.4135302 },
- { 12.9810816, 77.6368034 },
- { -13.15589555, -74.2178961777998 },
+ { .latitude = 38.9131982, .longitude = -77.0325453144239 },
+ { .latitude = 37.7757368, .longitude = -122.4135302 },
+ { .latitude = 12.9810816, .longitude = 77.6368034 },
+ { .latitude = -13.15589555, .longitude = -74.2178961777998 },
};
+static NSString * const MBXViewControllerAnnotationViewReuseIdentifer = @"MBXViewControllerAnnotationViewReuseIdentifer";
+
+@interface MBXDroppedPinAnnotation : MGLPointAnnotation
+@end
+
+@implementation MBXDroppedPinAnnotation
+@end
+
+@interface MBXCustomCalloutAnnotation : MGLPointAnnotation
+@end
+
+@implementation MBXCustomCalloutAnnotation
+@end
+
@interface MBXViewController () <UIActionSheetDelegate, MGLMapViewDelegate>
@property (nonatomic) IBOutlet MGLMapView *mapView;
-@property (nonatomic) NSUInteger styleIndex;
+@property (nonatomic) NSInteger styleIndex;
+@property (nonatomic) BOOL debugLoggingEnabled;
@end
@implementation MBXViewController
{
BOOL _isTouringWorld;
- BOOL _isShowingCustomStyleLayer;
}
#pragma mark - Setup
@@ -53,12 +65,50 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
[[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;
+ [self restoreState:nil];
- UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
- [titleButton setTitle:@(mbgl::util::default_styles::orderedStyles[self.styleIndex].name) forState:UIControlStateNormal];
+ self.debugLoggingEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsDebugLoggingEnabled"];
+}
- [self restoreState:nil];
+- (void)viewDidAppear:(BOOL)animated
+{
+ [super viewDidAppear:animated];
+
+ if ([MGLAccountManager accessToken].length)
+ {
+ self.styleIndex = -1;
+ [self cycleStyles:self];
+ }
+ else
+ {
+ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Access Token" message:@"Enter your Mapbox access token to load Mapbox-hosted tiles and styles:" preferredStyle:UIAlertControllerStyleAlert];
+ [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField)
+ {
+ textField.keyboardType = UIKeyboardTypeURL;
+ textField.autocorrectionType = UITextAutocorrectionTypeNo;
+ textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
+ }];
+
+ [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
+ UIAlertAction *OKAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
+ {
+ UITextField *textField = alertController.textFields.firstObject;
+ NSString *accessToken = textField.text;
+ [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MBXMapboxAccessTokenDefaultsKey];
+ [MGLAccountManager setAccessToken:accessToken];
+
+ self.styleIndex = -1;
+ [self cycleStyles:self];
+ [self.mapView reloadStyle:self];
+ }];
+ [alertController addAction:OKAction];
+
+ if ([alertController respondsToSelector:@selector(setPreferredAction:)])
+ {
+ alertController.preferredAction = OKAction;
+ }
+ [self presentViewController:alertController animated:YES completion:nil];
+ }
}
- (void)saveState:(__unused NSNotification *)notification
@@ -96,7 +146,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
}
-- (NSUInteger)supportedInterfaceOrientations
+- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
@@ -118,33 +168,36 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:
- @"Reset Position",
- ((debugMask & MGLMapDebugTileBoundariesMask)
- ? @"Hide Tile Boundaries"
- : @"Show Tile Boundaries"),
- ((debugMask & MGLMapDebugTileInfoMask)
- ? @"Hide Tile Info"
- : @"Show Tile Info"),
- ((debugMask & MGLMapDebugTimestampsMask)
- ? @"Hide Tile Timestamps"
- : @"Show Tile Timestamps"),
- ((debugMask & MGLMapDebugCollisionBoxesMask)
- ? @"Hide Collision Boxes"
- : @"Show Collision Boxes"),
- @"Empty Memory",
- @"Add 100 Points",
- @"Add 1,000 Points",
- @"Add 10,000 Points",
- @"Add Test Shapes",
- @"Start World Tour",
- @"Add Custom Callout Point",
- @"Remove Annotations",
- (_isShowingCustomStyleLayer
- ? @"Hide Custom Style Layer"
- : @"Show Custom Style Layer"),
- @"Print Telemetry Logfile",
- @"Delete Telemetry Logfile",
- nil];
+ @"Reset Position",
+ ((debugMask & MGLMapDebugTileBoundariesMask)
+ ? @"Hide Tile Boundaries"
+ : @"Show Tile Boundaries"),
+ ((debugMask & MGLMapDebugTileInfoMask)
+ ? @"Hide Tile Info"
+ : @"Show Tile Info"),
+ ((debugMask & MGLMapDebugTimestampsMask)
+ ? @"Hide Tile Timestamps"
+ : @"Show Tile Timestamps"),
+ ((debugMask & MGLMapDebugCollisionBoxesMask)
+ ? @"Hide Collision Boxes"
+ : @"Show Collision Boxes"),
+ ((debugMask & MGLMapDebugWireframesMask)
+ ? @"Hide Wireframes"
+ : @"Show Wireframes"),
+ @"Add 100 Points",
+ @"Add 1,000 Points",
+ @"Add 10,000 Points",
+ @"Add Test Shapes",
+ @"Start World Tour",
+ @"Add Custom Callout Point",
+ @"Remove Annotations",
+ nil];
+
+ if (self.debugLoggingEnabled)
+ {
+ [sheet addButtonWithTitle:@"Print Telemetry Logfile"];
+ [sheet addButtonWithTitle:@"Delete Telemetry Logfile"];
+ }
[sheet showFromBarButtonItem:self.navigationItem.leftBarButtonItem animated:YES];
}
@@ -173,7 +226,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
else if (buttonIndex == actionSheet.firstOtherButtonIndex + 5)
{
- [self.mapView emptyMemoryCache];
+ self.mapView.debugMask ^= MGLMapDebugWireframesMask;
}
else if (buttonIndex == actionSheet.firstOtherButtonIndex + 6)
{
@@ -253,6 +306,22 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
free(polygonCoordinates);
}
+
+ CLLocationCoordinate2D innerCoordinates[] = {
+ CLLocationCoordinate2DMake(-5, -5),
+ CLLocationCoordinate2DMake(-5, 5),
+ CLLocationCoordinate2DMake(5, 5),
+ CLLocationCoordinate2DMake(5, -5),
+ };
+ MGLPolygon *innerPolygon = [MGLPolygon polygonWithCoordinates:innerCoordinates count:sizeof(innerCoordinates) / sizeof(innerCoordinates[0])];
+ CLLocationCoordinate2D outerCoordinates[] = {
+ CLLocationCoordinate2DMake(-10, -20),
+ CLLocationCoordinate2DMake(-10, 10),
+ CLLocationCoordinate2DMake(10, 10),
+ CLLocationCoordinate2DMake(10, -10),
+ };
+ MGLPolygon *outerPolygon = [MGLPolygon polygonWithCoordinates:outerCoordinates count:sizeof(outerCoordinates) / sizeof(outerCoordinates[0]) interiorPolygons:@[innerPolygon]];
+ [self.mapView addAnnotation:outerPolygon];
}
else if (buttonIndex == actionSheet.firstOtherButtonIndex + 10)
{
@@ -266,23 +335,12 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
{
[self.mapView removeAnnotations:self.mapView.annotations];
}
- else if (buttonIndex == actionSheet.firstOtherButtonIndex + 13)
- {
- if (_isShowingCustomStyleLayer)
- {
- [self removeCustomStyleLayer];
- }
- else
- {
- [self insertCustomStyleLayer];
- }
- }
- else if (buttonIndex == actionSheet.firstOtherButtonIndex + 14)
+ else if (buttonIndex == actionSheet.numberOfButtons - 2 && self.debugLoggingEnabled)
{
NSString *fileContents = [NSString stringWithContentsOfFile:[self telemetryDebugLogfilePath] encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", fileContents);
}
- else if (buttonIndex == actionSheet.firstOtherButtonIndex + 15)
+ else if (buttonIndex == actionSheet.numberOfButtons - 1 && self.debugLoggingEnabled)
{
NSString *filePath = [self telemetryDebugLogfilePath];
if ([[NSFileManager defaultManager] isDeletableFileAtPath:filePath]) {
@@ -337,74 +395,13 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
});
}
-- (void)insertCustomStyleLayer
-{
- _isShowingCustomStyleLayer = YES;
-
- static const GLchar *vertexShaderSource = "attribute vec2 a_pos; void main() { gl_Position = vec4(a_pos, 0, 1); }";
- static const GLchar *fragmentShaderSource = "void main() { gl_FragColor = vec4(0, 1, 0, 1); }";
-
- __block GLuint program = 0;
- __block GLuint vertexShader = 0;
- __block GLuint fragmentShader = 0;
- __block GLuint buffer = 0;
- __block GLuint a_pos = 0;
- [self.mapView insertCustomStyleLayerWithIdentifier:@"mbx-custom" preparationHandler:^{
- program = glCreateProgram();
- vertexShader = glCreateShader(GL_VERTEX_SHADER);
- fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
-
- glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr);
- glCompileShader(vertexShader);
- glAttachShader(program, vertexShader);
- glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr);
- glCompileShader(fragmentShader);
- glAttachShader(program, fragmentShader);
- glLinkProgram(program);
- a_pos = glGetAttribLocation(program, "a_pos");
-
- GLfloat background[] = { -1,-1, 1,-1, -1,1, 1,1 };
- glGenBuffers(1, &buffer);
- glBindBuffer(GL_ARRAY_BUFFER, buffer);
- glBufferData(GL_ARRAY_BUFFER, 8 * sizeof(GLfloat), background, GL_STATIC_DRAW);
- } drawingHandler:^(__unused CGSize size,
- __unused CLLocationCoordinate2D centerCoordinate,
- __unused double zoomLevel,
- __unused CLLocationDirection direction,
- __unused CGFloat pitch,
- __unused CGFloat perspectiveSkew) {
- glUseProgram(program);
- glBindBuffer(GL_ARRAY_BUFFER, buffer);
- glEnableVertexAttribArray(a_pos);
- glVertexAttribPointer(a_pos, 2, GL_FLOAT, GL_FALSE, 0, NULL);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_DEPTH_TEST);
- glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
- } completionHandler:^{
- if (program) {
- glDeleteBuffers(1, &buffer);
- glDetachShader(program, vertexShader);
- glDetachShader(program, fragmentShader);
- glDeleteShader(vertexShader);
- glDeleteShader(fragmentShader);
- glDeleteProgram(program);
- }
- } belowStyleLayerWithIdentifier:@"housenum-label"];
-}
-
-- (void)removeCustomStyleLayer
-{
- _isShowingCustomStyleLayer = NO;
- [self.mapView removeCustomStyleLayerWithIdentifier:@"mbx-custom"];
-}
-
- (void)presentAnnotationWithCustomCallout
{
[self.mapView removeAnnotations:self.mapView.annotations];
- MGLPointAnnotation *annotation = [MGLPointAnnotation new];
+ MBXCustomCalloutAnnotation *annotation = [[MBXCustomCalloutAnnotation alloc] init];
annotation.coordinate = CLLocationCoordinate2DMake(48.8533940, 2.3775439);
- annotation.title = kCustomCalloutTitle;
+ annotation.title = @"Custom Callout";
[self.mapView addAnnotation:annotation];
[self.mapView showAnnotations:@[annotation] animated:YES];
@@ -414,45 +411,101 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
{
if (longPress.state == UIGestureRecognizerStateBegan)
{
- MGLPointAnnotation *point = [MGLPointAnnotation new];
- point.coordinate = [self.mapView convertPoint:[longPress locationInView:longPress.view]
+ CGPoint point = [longPress locationInView:longPress.view];
+ NSArray *features = [self.mapView visibleFeaturesAtPoint:point];
+ NSString *title;
+ for (id <MGLFeature> feature in features) {
+ if (!title) {
+ title = [feature attributeForKey:@"name_en"] ?: [feature attributeForKey:@"name"];
+ }
+ }
+
+ MBXDroppedPinAnnotation *pin = [[MBXDroppedPinAnnotation alloc] init];
+ pin.coordinate = [self.mapView convertPoint:point
toCoordinateFromView:self.mapView];
- point.title = @"Dropped Marker";
- point.subtitle = [NSString stringWithFormat:@"lat: %.3f, lon: %.3f", point.coordinate.latitude, point.coordinate.longitude];
- [self.mapView addAnnotation:point];
- [self.mapView selectAnnotation:point animated:YES];
+ pin.title = title ?: @"Dropped Pin";
+ pin.subtitle = [[[MGLCoordinateFormatter alloc] init] stringFromCoordinate:pin.coordinate];
+ // Calling `addAnnotation:` on mapView is not required since `selectAnnotation:animated` has the side effect of adding the annotation if required
+ [self.mapView selectAnnotation:pin animated:YES];
}
}
- (IBAction)cycleStyles:(__unused id)sender
{
- UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
-
- self.styleIndex = (self.styleIndex + 1) % mbgl::util::default_styles::numOrderedStyles;
-
- self.mapView.styleURL = [NSURL URLWithString:@(mbgl::util::default_styles::orderedStyles[self.styleIndex].url)];
+ static NSArray *styleNames;
+ static NSArray *styleURLs;
+
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ styleNames = @[
+ @"Streets",
+ @"Outdoors",
+ @"Light",
+ @"Dark",
+ @"Satellite",
+ @"Satellite Streets",
+ ];
+ styleURLs = @[
+ [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion],
+ [MGLStyle outdoorsStyleURLWithVersion:MGLStyleDefaultVersion],
+ [MGLStyle lightStyleURLWithVersion:MGLStyleDefaultVersion],
+ [MGLStyle darkStyleURLWithVersion:MGLStyleDefaultVersion],
+ [MGLStyle satelliteStyleURLWithVersion:MGLStyleDefaultVersion],
+ [MGLStyle satelliteStreetsStyleURLWithVersion:MGLStyleDefaultVersion],
+ ];
+ NSAssert(styleNames.count == styleURLs.count, @"Style names and URLs don’t match.");
+
+ // Make sure defaultStyleURLs is up-to-date.
+ unsigned numMethods = 0;
+ Method *methods = class_copyMethodList(object_getClass([MGLStyle class]), &numMethods);
+ unsigned numStyleURLMethods = 0;
+ for (NSUInteger i = 0; i < numMethods; i++) {
+ Method method = methods[i];
+ if (method_getNumberOfArguments(method) == 3 /* _cmd, self, version */) {
+ SEL selector = method_getName(method);
+ NSString *name = @(sel_getName(selector));
+ if ([name hasSuffix:@"StyleURLWithVersion:"]) {
+ numStyleURLMethods += 1;
+ }
+ }
+ }
+ NSAssert(numStyleURLMethods == styleNames.count,
+ @"MGLStyle provides %u default styles but iosapp only knows about %lu of them.",
+ numStyleURLMethods, (unsigned long)styleNames.count);
+ });
+
+ self.styleIndex = (self.styleIndex + 1) % styleNames.count;
- [titleButton setTitle:@(mbgl::util::default_styles::orderedStyles[self.styleIndex].name) forState:UIControlStateNormal];
+ self.mapView.styleURL = styleURLs[self.styleIndex];
+
+ UIButton *titleButton = (UIButton *)self.navigationItem.titleView;
+ [titleButton setTitle:styleNames[self.styleIndex] forState:UIControlStateNormal];
}
-- (IBAction)locateUser:(__unused id)sender
+- (IBAction)locateUser:(id)sender
{
MGLUserTrackingMode nextMode;
+ NSString *nextAccessibilityValue;
switch (self.mapView.userTrackingMode) {
case MGLUserTrackingModeNone:
nextMode = MGLUserTrackingModeFollow;
+ nextAccessibilityValue = @"Follow location";
break;
case MGLUserTrackingModeFollow:
nextMode = MGLUserTrackingModeFollowWithHeading;
+ nextAccessibilityValue = @"Follow location and heading";
break;
case MGLUserTrackingModeFollowWithHeading:
nextMode = MGLUserTrackingModeFollowWithCourse;
+ nextAccessibilityValue = @"Follow course";
break;
case MGLUserTrackingModeFollowWithCourse:
nextMode = MGLUserTrackingModeNone;
+ nextAccessibilityValue = @"Off";
break;
}
self.mapView.userTrackingMode = nextMode;
+ [sender setAccessibilityValue:nextAccessibilityValue];
}
- (IBAction)startWorldTour:(__unused id)sender
@@ -464,7 +517,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations];
for (NSUInteger i = 0; i < numberOfAnnotations; i++)
{
- MGLPointAnnotation *annotation = [[MGLPointAnnotation alloc] init];
+ MBXDroppedPinAnnotation *annotation = [[MBXDroppedPinAnnotation alloc] init];
annotation.coordinate = WorldTourDestinations[i];
[annotations addObject:annotation];
}
@@ -519,62 +572,35 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
#pragma mark - MGLMapViewDelegate
-- (MGLAnnotationImage *)mapView:(MGLMapView * __nonnull)mapView imageForAnnotation:(id <MGLAnnotation> __nonnull)annotation
+- (MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id<MGLAnnotation>)annotation
{
- if ([annotation.title isEqualToString:@"Dropped Marker"]
- || [annotation.title isEqualToString:kCustomCalloutTitle])
+ // Use GL backed pins for dropped pin annotations
+ if ([annotation isKindOfClass:[MBXDroppedPinAnnotation class]])
{
- return nil; // use default marker
- }
-
- NSString *title = [(MGLPointAnnotation *)annotation title];
- if (!title.length) return nil;
- NSString *lastTwoCharacters = [title substringFromIndex:title.length - 2];
-
- UIColor *color;
-
- // make every tenth annotation blue
- if ([lastTwoCharacters hasSuffix:@"0"]) {
- color = [UIColor blueColor];
- } else {
- color = [UIColor redColor];
+ return nil;
}
-
- MGLAnnotationImage *image = [mapView dequeueReusableAnnotationImageWithIdentifier:lastTwoCharacters];
-
- if ( ! image)
+
+ MBXAnnotationView *annotationView = (MBXAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:MBXViewControllerAnnotationViewReuseIdentifer];
+ if (!annotationView)
{
- CGRect rect = CGRectMake(0, 0, 20, 15);
-
- UIGraphicsBeginImageContextWithOptions(rect.size, NO, [[UIScreen mainScreen] scale]);
-
- CGContextRef ctx = UIGraphicsGetCurrentContext();
-
- CGContextSetFillColorWithColor(ctx, [[color colorWithAlphaComponent:0.75] CGColor]);
- CGContextFillRect(ctx, rect);
-
- CGContextSetStrokeColorWithColor(ctx, [[UIColor blackColor] CGColor]);
- CGContextStrokeRectWithWidth(ctx, rect, 2);
-
- NSAttributedString *drawString = [[NSAttributedString alloc] initWithString:lastTwoCharacters attributes:@{
- NSFontAttributeName: [UIFont fontWithName:@"Arial-BoldMT" size:12],
- NSForegroundColorAttributeName: [UIColor whiteColor] }];
- CGSize stringSize = drawString.size;
- CGRect stringRect = CGRectMake((rect.size.width - stringSize.width) / 2,
- (rect.size.height - stringSize.height) / 2,
- stringSize.width,
- stringSize.height);
- [drawString drawInRect:stringRect];
-
- image = [MGLAnnotationImage annotationImageWithImage:UIGraphicsGetImageFromCurrentImageContext() reuseIdentifier:lastTwoCharacters];
-
- // don't allow touches on blue annotations
- if ([color isEqual:[UIColor blueColor]]) image.enabled = NO;
-
- UIGraphicsEndImageContext();
+ annotationView = [[MBXAnnotationView alloc] initWithReuseIdentifier:MBXViewControllerAnnotationViewReuseIdentifer];
+ annotationView.frame = CGRectMake(0, 0, 10, 10);
+ annotationView.centerColor = [UIColor whiteColor];
+
+ // uncomment to flatten the annotation view against the map when the map is tilted
+ // this currently causes severe performance issues when more than 2k annotations are visible
+ // annotationView.flat = YES;
+
+ // uncomment to force annotation view to maintain a constant size when the map is tilted
+ // by default, annotation views will shrink and grow as the move towards and away from the
+ // horizon. Relatedly, annotations backed by GL sprites ONLY scale with viewing distance currently.
+ // annotationView.scalesWithViewingDistance = NO;
+
+ } else {
+ // orange indicates that the annotation view was reused
+ annotationView.centerColor = [UIColor orangeColor];
}
-
- return image;
+ return annotationView;
}
- (BOOL)mapView:(__unused MGLMapView *)mapView annotationCanShowCallout:(__unused id <MGLAnnotation>)annotation
@@ -629,7 +655,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
- (UIView<MGLCalloutView> *)mapView:(__unused MGLMapView *)mapView calloutViewForAnnotation:(id<MGLAnnotation>)annotation
{
if ([annotation respondsToSelector:@selector(title)]
- && [annotation.title isEqualToString:kCustomCalloutTitle])
+ && [annotation isKindOfClass:[MBXCustomCalloutAnnotation class]])
{
MBXCustomCalloutView *calloutView = [[MBXCustomCalloutView alloc] init];
calloutView.representedObject = annotation;
@@ -638,4 +664,33 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
return nil;
}
+- (UIView *)mapView:(__unused MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(__unused id<MGLAnnotation>)annotation
+{
+ UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
+ button.frame = CGRectZero;
+ [button setTitle:@"Left" forState:UIControlStateNormal];
+ [button sizeToFit];
+ return button;
+}
+
+- (UIView *)mapView:(__unused MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(__unused id<MGLAnnotation>)annotation
+{
+ UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
+ button.frame = CGRectZero;
+ [button setTitle:@"Right" forState:UIControlStateNormal];
+ [button sizeToFit];
+ return button;
+}
+
+- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation
+{
+ if ( ! [annotation isKindOfClass:[MGLPointAnnotation class]])
+ {
+ return;
+ }
+
+ MGLPointAnnotation *point = annotation;
+ point.coordinate = [self.mapView convertPoint:self.mapView.center toCoordinateFromView:self.mapView];
+}
+
@end
diff --git a/platform/ios/app/Storyboard.storyboard b/platform/ios/app/Main.storyboard
index d471e9dedd..1190070d8e 100644
--- a/platform/ios/app/Storyboard.storyboard
+++ b/platform/ios/app/Main.storyboard
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10115" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="PSe-Ot-7Ff">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="PSe-Ot-7Ff">
<dependencies>
<deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10084"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<capability name="Navigation items with more than one left or right bar item" minToolsVersion="7.0"/>
</dependencies>
<scenes>
@@ -38,7 +38,10 @@
</view>
<navigationItem key="navigationItem" id="p8W-eP-el5">
<nil key="title"/>
- <barButtonItem key="leftBarButtonItem" image="settings.png" id="Jw8-JP-CaZ">
+ <barButtonItem key="leftBarButtonItem" image="settings.png" id="Jw8-JP-CaZ" userLabel="Map Settings">
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="Map settings"/>
+ </userDefinedRuntimeAttributes>
<connections>
<action selector="showSettings:" destination="WaX-pd-UZQ" id="X2C-Ee-Qvt"/>
</connections>
@@ -53,12 +56,18 @@
</connections>
</button>
<rightBarButtonItems>
- <barButtonItem image="TrackingLocationOffMask.png" id="CQ1-GP-M6x">
+ <barButtonItem image="TrackingLocationOffMask.png" id="CQ1-GP-M6x" userLabel="User Tracking Mode">
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="User tracking mode"/>
+ </userDefinedRuntimeAttributes>
<connections>
<action selector="locateUser:" destination="WaX-pd-UZQ" id="XgF-DB-z3f"/>
</connections>
</barButtonItem>
- <barButtonItem systemItem="organize" id="5IK-vz-jKQ">
+ <barButtonItem systemItem="organize" id="5IK-vz-jKQ" userLabel="Offline Packs">
+ <userDefinedRuntimeAttributes>
+ <userDefinedRuntimeAttribute type="string" keyPath="accessibilityLabel" value="Offline packs"/>
+ </userDefinedRuntimeAttributes>
<connections>
<segue destination="7q0-lI-zqb" kind="show" identifier="ShowOfflinePacks" id="xjx-0t-0LD"/>
</connections>
diff --git a/platform/ios/app/Settings.bundle/Root.plist b/platform/ios/app/Settings.bundle/Root.plist
deleted file mode 100644
index 889610e152..0000000000
--- a/platform/ios/app/Settings.bundle/Root.plist
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>PreferenceSpecifiers</key>
- <array>
- <dict>
- <key>Title</key>
- <string>Privacy Settings</string>
- <key>Type</key>
- <string>PSGroupSpecifier</string>
- <key>FooterText</key>
- <string>This setting allows the application to share anonymized location and usage data with Mapbox.</string>
- </dict>
- <dict>
- <key>DefaultValue</key>
- <true/>
- <key>Key</key>
- <string>MGLMapboxMetricsEnabled</string>
- <key>Title</key>
- <string>Mapbox Telemetry</string>
- <key>Type</key>
- <string>PSToggleSwitchSpecifier</string>
- <key>TrueValue</key>
- <true/>
- <key>FalseValue</key>
- <false/>
- </dict>
- </array>
- <key>StringsTable</key>
- <string>Root</string>
-</dict>
-</plist>
diff --git a/platform/ios/app/Settings.bundle/en.lproj/Root.strings b/platform/ios/app/Settings.bundle/en.lproj/Root.strings
deleted file mode 100644
index 5343a34ae5..0000000000
--- a/platform/ios/app/Settings.bundle/en.lproj/Root.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-"Privacy Settings" = "Privacy Settings";
-"Mapbox Telemetry" = "Mapbox Telemetry";
-"This setting allows the application to share anonymized location and usage data with Mapbox." = "This setting allows the application to share anonymized location and usage data with Mapbox.";
diff --git a/platform/ios/app/img/Default-568h@2x.png b/platform/ios/app/img/Default-568h@2x.png
deleted file mode 100644
index ea3706427a..0000000000
--- a/platform/ios/app/img/Default-568h@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Default-667h@2x.png b/platform/ios/app/img/Default-667h@2x.png
deleted file mode 100644
index 03f139de66..0000000000
--- a/platform/ios/app/img/Default-667h@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-60.png b/platform/ios/app/img/Icon-60.png
deleted file mode 100644
index ff4c6ab4b1..0000000000
--- a/platform/ios/app/img/Icon-60.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-72.png b/platform/ios/app/img/Icon-72.png
deleted file mode 100644
index 0c876f664d..0000000000
--- a/platform/ios/app/img/Icon-72.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-72@2x.png b/platform/ios/app/img/Icon-72@2x.png
deleted file mode 100644
index 6da408204a..0000000000
--- a/platform/ios/app/img/Icon-72@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-76@3x.png b/platform/ios/app/img/Icon-76@3x.png
deleted file mode 100644
index 64edff1835..0000000000
--- a/platform/ios/app/img/Icon-76@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Small-50.png b/platform/ios/app/img/Icon-Small-50.png
deleted file mode 100644
index 6d17da4b00..0000000000
--- a/platform/ios/app/img/Icon-Small-50.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Small-50@2x.png b/platform/ios/app/img/Icon-Small-50@2x.png
deleted file mode 100644
index ac4ec19282..0000000000
--- a/platform/ios/app/img/Icon-Small-50@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Small@2x.png b/platform/ios/app/img/Icon-Small@2x.png
deleted file mode 100644
index 7773852e7a..0000000000
--- a/platform/ios/app/img/Icon-Small@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Small@3x.png b/platform/ios/app/img/Icon-Small@3x.png
deleted file mode 100644
index e16f3fa6a9..0000000000
--- a/platform/ios/app/img/Icon-Small@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Spotlight-40.png b/platform/ios/app/img/Icon-Spotlight-40.png
deleted file mode 100644
index eca13393e6..0000000000
--- a/platform/ios/app/img/Icon-Spotlight-40.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon-Spotlight-40@2x.png b/platform/ios/app/img/Icon-Spotlight-40@2x.png
deleted file mode 100644
index 070d037539..0000000000
--- a/platform/ios/app/img/Icon-Spotlight-40@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon.png b/platform/ios/app/img/Icon.png
deleted file mode 100644
index 9ca8194eef..0000000000
--- a/platform/ios/app/img/Icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/Icon@2x.png b/platform/ios/app/img/Icon@2x.png
deleted file mode 100644
index 7c2e8ba037..0000000000
--- a/platform/ios/app/img/Icon@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/iTunesArtwork b/platform/ios/app/img/iTunesArtwork
deleted file mode 100644
index ac6a0c58e8..0000000000
--- a/platform/ios/app/img/iTunesArtwork
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/iTunesArtwork.png b/platform/ios/app/img/iTunesArtwork.png
deleted file mode 100644
index b10824b048..0000000000
--- a/platform/ios/app/img/iTunesArtwork.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/iTunesArtwork@2x b/platform/ios/app/img/iTunesArtwork@2x
deleted file mode 100644
index fae1dad8bf..0000000000
--- a/platform/ios/app/img/iTunesArtwork@2x
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/img/iTunesArtwork@2x.png b/platform/ios/app/img/iTunesArtwork@2x.png
deleted file mode 100644
index fdee900aa4..0000000000
--- a/platform/ios/app/img/iTunesArtwork@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/app/mapboxgl-app.gypi b/platform/ios/app/mapboxgl-app.gypi
deleted file mode 100644
index c154669485..0000000000
--- a/platform/ios/app/mapboxgl-app.gypi
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- 'includes': [
- '../../../gyp/common.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'iosapp',
- 'product_name': 'Mapbox GL',
- 'type': 'executable',
- 'product_extension': 'app',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- '<!@(find ../platform/ios/app/img -type f)',
- './Storyboard.storyboard',
- './points.geojson',
- './polyline.geojson',
- './threestates.geojson',
- './Settings.bundle/',
- './app-info.plist',
- ],
-
- 'dependencies': [
- 'iossdk',
- ],
-
- 'sources': [
- 'main.m',
- 'MBXAppDelegate.h',
- 'MBXAppDelegate.m',
- 'MBXCustomCalloutView.h',
- 'MBXCustomCalloutView.m',
- 'MBXOfflinePacksTableViewController.h',
- 'MBXOfflinePacksTableViewController.m',
- 'MBXViewController.h',
- 'MBXViewController.mm',
- ],
-
- 'xcode_settings': {
- 'SDKROOT': 'iphoneos',
- 'SUPPORTED_PLATFORMS': 'iphonesimulator iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '8.0',
- 'INFOPLIST_FILE': '../platform/ios/app/app-info.plist',
- 'TARGETED_DEVICE_FAMILY': '1,2',
- 'COMBINE_HIDPI_IMAGES': 'NO', # disable combining @2x, @3x images into .tiff files
- 'COPY_PHASE_STRIP': 'NO',
- 'CLANG_ENABLE_OBJC_ARC': 'YES',
- 'CLANG_ENABLE_MODULES': 'YES',
- 'LD_RUNPATH_SEARCH_PATHS': [
- '$(inherited)',
- '@executable_path/Frameworks',
- ],
- },
-
- 'configurations': {
- 'Debug': {
- 'xcode_settings': {
- 'CODE_SIGN_IDENTITY': 'iPhone Developer',
- 'COPY_PHASE_STRIP': 'NO',
- },
- },
- 'Release': {
- 'xcode_settings': {
- 'CODE_SIGN_IDENTITY': 'iPhone Distribution',
- 'ARCHS': [ "armv7", "armv7s", "arm64", "i386", "x86_64" ],
- 'COPY_PHASE_STRIP': 'YES',
- },
- },
- },
-
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/$(FRAMEWORKS_FOLDER_PATH)',
- 'files': [
- '<(PRODUCT_DIR)/Mapbox.framework',
- ],
- 'xcode_code_sign': 1,
- },
- ],
- }
- ]
-}
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..73f0fa2497
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-Small@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-Small@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-1.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-2.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-3.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-4.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "512x512",
+ "idiom" : "mac",
+ "filename" : "iTunesArtwork.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "512x512",
+ "idiom" : "mac",
+ "filename" : "iTunesArtwork@2x.png",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png
new file mode 100644
index 0000000000..8133332fe2
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png
new file mode 100644
index 0000000000..9b7db0607a
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png
new file mode 100644
index 0000000000..8f61a8ec03
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png
new file mode 100644
index 0000000000..783467e2ab
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-40.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png
index 2425133189..2425133189 100644
--- a/platform/ios/benchmark/img/Icon-40.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-40@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
index b827b1e5a1..b827b1e5a1 100644
--- a/platform/ios/benchmark/img/Icon-40@2x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-40@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
index 89c7119ac6..89c7119ac6 100644
--- a/platform/ios/benchmark/img/Icon-40@3x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-76.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png
index 0ed2a26730..0ed2a26730 100644
--- a/platform/ios/benchmark/img/Icon-76.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-76@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
index 311a1658a8..311a1658a8 100644
--- a/platform/ios/benchmark/img/Icon-76@2x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
index 630d7c04c6..630d7c04c6 100644
--- a/platform/ios/benchmark/img/Icon-Small.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
index c0ee89211a..c0ee89211a 100644
--- a/platform/ios/benchmark/img/Icon-Small@2x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
index 436a8b404c..436a8b404c 100644
--- a/platform/ios/benchmark/img/Icon-Small@3x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
Binary files differ
diff --git a/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png
new file mode 100644
index 0000000000..2c9ecb48cb
--- /dev/null
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png
Binary files differ
diff --git a/platform/ios/benchmark/img/iTunesArtwork.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png
index f87c8734b5..f87c8734b5 100644
--- a/platform/ios/benchmark/img/iTunesArtwork.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png
Binary files differ
diff --git a/platform/ios/benchmark/img/iTunesArtwork@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
index 8d456a126f..8d456a126f 100644
--- a/platform/ios/benchmark/img/iTunesArtwork@2x.png
+++ b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard b/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000000..323bd43177
--- /dev/null
+++ b/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="EHf-IW-A2E">
+ <objects>
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+ <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="53" y="375"/>
+ </scene>
+ </scenes>
+</document>
diff --git a/platform/ios/benchmark/app-info.plist b/platform/ios/benchmark/Info.plist
index 9d0aad09e1..98ae65e170 100644
--- a/platform/ios/benchmark/app-info.plist
+++ b/platform/ios/benchmark/Info.plist
@@ -5,15 +5,15 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
- <string>${PRODUCT_NAME}</string>
+ <string>$(PRODUCT_NAME)</string>
<key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
+ <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.mapbox.GL.benchmark</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
+ <string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -29,7 +29,7 @@
<key>UIApplicationExitsOnSuspend</key>
<true/>
<key>UILaunchStoryboardName</key>
- <string>Default</string>
+ <string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.h b/platform/ios/benchmark/MBXBenchAppDelegate.h
index b8f6c2e641..e89add93fd 100644
--- a/platform/ios/benchmark/MBXBenchAppDelegate.h
+++ b/platform/ios/benchmark/MBXBenchAppDelegate.h
@@ -1,5 +1,7 @@
#import <UIKit/UIKit.h>
+extern NSString * const MBXMapboxAccessTokenDefaultsKey;
+
@interface MBXBenchAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.m b/platform/ios/benchmark/MBXBenchAppDelegate.m
index 5da6ccfcec..684c90d336 100644
--- a/platform/ios/benchmark/MBXBenchAppDelegate.m
+++ b/platform/ios/benchmark/MBXBenchAppDelegate.m
@@ -2,23 +2,23 @@
#import "MBXBenchViewController.h"
#import <Mapbox/Mapbox.h>
+NSString * const MBXMapboxAccessTokenDefaultsKey = @"MBXMapboxAccessToken";
+
@implementation MBXBenchAppDelegate
- (BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
- NSString* accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
- if (accessToken) {
- // Store to preferences so that we can launch the app later on without having to specify
- // token.
- [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:@"access_token"];
- } else {
- // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
- // the token.
- accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"access_token"];
- }
- if (!accessToken) {
- NSLog(@"No access token set. Mapbox vector tiles won't work.");
- } else {
+ if (![MGLAccountManager accessToken]) {
+ NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
+ if (accessToken) {
+ // Store to preferences so that we can launch the app later on without having to specify
+ // token.
+ [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MBXMapboxAccessTokenDefaultsKey];
+ } else {
+ // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
+ // the token.
+ accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:MBXMapboxAccessTokenDefaultsKey];
+ }
[MGLAccountManager setAccessToken:accessToken];
}
diff --git a/platform/ios/benchmark/MBXBenchViewController.mm b/platform/ios/benchmark/MBXBenchViewController.mm
index a381813ffc..43e98d7ccd 100644
--- a/platform/ios/benchmark/MBXBenchViewController.mm
+++ b/platform/ios/benchmark/MBXBenchViewController.mm
@@ -1,23 +1,14 @@
#import "MBXBenchViewController.h"
+#import "MBXBenchAppDelegate.h"
+
#import <Mapbox/Mapbox.h>
+#import "MGLMapView_Internal.h"
#include "locations.hpp"
#include <chrono>
-@interface MGLMapView (MBXBenchmarkAdditions)
-
-#pragma mark - Debugging
-
-/** Triggers another render pass even when it is not necessary. */
-- (void)setNeedsGLDisplay;
-
-/** Returns whether the map view is currently loading or processing any assets required to render the map */
-- (BOOL)isFullyLoaded;
-
-@end
-
@interface MBXBenchViewController () <MGLMapViewDelegate>
@property (nonatomic) MGLMapView *mapView;
@@ -44,7 +35,9 @@
{
[super viewDidLoad];
- NSURL* url = [[NSURL alloc] initWithString:@"mapbox://styles/mapbox/streets-v8"];
+ // Use a local style and local assets if they’ve been downloaded.
+ NSURL *tileSourceURL = [[NSBundle mainBundle] URLForResource:@"mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6" withExtension:nil subdirectory:@"tiles"];
+ NSURL *url = [NSURL URLWithString:tileSourceURL ? @"asset://styles/streets-v8.json" : @"mapbox://styles/mapbox/streets-v8"];
self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds styleURL:url];
self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.mapView.delegate = self;
@@ -53,10 +46,42 @@
self.mapView.rotateEnabled = NO;
self.mapView.userInteractionEnabled = YES;
- [self startBenchmarkIteration];
-
[self.view addSubview:self.mapView];
+}
+- (void)viewDidAppear:(BOOL)animated
+{
+ [super viewDidAppear:animated];
+
+ if ([MGLAccountManager accessToken].length) {
+ [self startBenchmarkIteration];
+ } else {
+ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Access Token" message:@"Enter your Mapbox access token to load Mapbox-hosted tiles and styles:" preferredStyle:UIAlertControllerStyleAlert];
+ [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
+ textField.keyboardType = UIKeyboardTypeURL;
+ textField.autocorrectionType = UITextAutocorrectionTypeNo;
+ textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
+ }];
+
+ [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+ [self startBenchmarkIteration];
+ }]];
+ UIAlertAction *OKAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+ UITextField *textField = alertController.textFields.firstObject;
+ NSString *accessToken = textField.text;
+ [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:MBXMapboxAccessTokenDefaultsKey];
+ [MGLAccountManager setAccessToken:accessToken];
+ [self.mapView reloadStyle:self];
+
+ [self startBenchmarkIteration];
+ }];
+ [alertController addAction:OKAction];
+
+ if ([alertController respondsToSelector:@selector(setPreferredAction:)]) {
+ alertController.preferredAction = OKAction;
+ }
+ [self presentViewController:alertController animated:YES completion:nil];
+ }
}
size_t idx = 0;
@@ -81,13 +106,17 @@ static const int benchmarkDuration = 200; // frames
// Do nothing. The benchmark is completed.
NSLog(@"Benchmark completed.");
NSLog(@"Result:");
+ double totalFPS = 0;
size_t colWidth = 0;
for (const auto& row : result) {
colWidth = std::max(row.first.size(), colWidth);
}
for (const auto& row : result) {
NSLog(@"| %-*s | %4.1f fps |", int(colWidth), row.first.c_str(), row.second);
+ totalFPS += row.second;
}
+ NSLog(@"Total FPS: %4.1f", totalFPS);
+ NSLog(@"Average FPS: %4.1f", totalFPS / result.size());
exit(0);
}
}
@@ -136,7 +165,7 @@ static const int benchmarkDuration = 200; // frames
{
// Start the benchmarking timer.
state = State::WarmingUp;
- [self.mapView emptyMemoryCache];
+ [self.mapView didReceiveMemoryWarning];
NSLog(@"- Warming up for %d frames...", warmupDuration);
[mapView setNeedsGLDisplay];
}
diff --git a/platform/ios/benchmark/benchmark-ios.gypi b/platform/ios/benchmark/benchmark-ios.gypi
deleted file mode 100644
index 5962a6b338..0000000000
--- a/platform/ios/benchmark/benchmark-ios.gypi
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- 'includes': [
- '../../../gyp/common.gypi',
- ],
- 'targets': [
- { 'target_name': 'ios-bench',
- 'product_name': 'Bench GL',
- 'type': 'executable',
- 'product_extension': 'app',
- 'mac_bundle': 1,
- 'mac_bundle_resources': [
- '<!@(find ../platform/ios/benchmark/img -type f)',
- 'assets/glyphs',
- 'assets/sprites',
- 'assets/tiles',
- ],
-
- 'dependencies': [
- 'iossdk',
- ],
-
- 'sources': [
- './main.m',
- './MBXBenchAppDelegate.h',
- './MBXBenchAppDelegate.m',
- './MBXBenchViewController.h',
- './MBXBenchViewController.mm',
- './locations.hpp',
- './locations.cpp',
- ],
-
- 'xcode_settings': {
- 'SDKROOT': 'iphoneos',
- 'SUPPORTED_PLATFORMS': 'iphoneos',
- 'IPHONEOS_DEPLOYMENT_TARGET': '8.0',
- 'INFOPLIST_FILE': '../platform/ios/benchmark/app-info.plist',
- 'TARGETED_DEVICE_FAMILY': '1,2',
- 'COMBINE_HIDPI_IMAGES': 'NO', # don't merge @2x.png images into .tiff files
- 'COPY_PHASE_STRIP': 'NO',
- 'CLANG_ENABLE_OBJC_ARC': 'YES',
- 'CLANG_ENABLE_MODULES': 'YES',
- 'LD_RUNPATH_SEARCH_PATHS': [
- '$(inherited)',
- '@executable_path/Frameworks',
- ],
- 'OTHER_LDFLAGS': [
- '-framework CoreLocation',
- ],
- },
-
- 'configurations': {
- 'Debug': {
- 'xcode_settings': {
- 'CODE_SIGN_IDENTITY': 'iPhone Developer',
- 'COPY_PHASE_STRIP': 'NO',
- },
- },
- 'Release': {
- 'xcode_settings': {
- 'CODE_SIGN_IDENTITY': 'iPhone Distribution',
- 'ARCHS': [ "armv7", "armv7s", "arm64", "i386", "x86_64" ],
- 'COPY_PHASE_STRIP': 'YES',
- },
- },
- },
-
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)/$(FRAMEWORKS_FOLDER_PATH)',
- 'files': [
- '<(PRODUCT_DIR)/Mapbox.framework',
- ],
- 'xcode_code_sign': 1,
- },
- ],
- }
- ]
-}
diff --git a/platform/ios/benchmark/img/Icon-60.png b/platform/ios/benchmark/img/Icon-60.png
deleted file mode 100644
index 409fad814a..0000000000
--- a/platform/ios/benchmark/img/Icon-60.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-60@2x.png b/platform/ios/benchmark/img/Icon-60@2x.png
deleted file mode 100644
index 89c7119ac6..0000000000
--- a/platform/ios/benchmark/img/Icon-60@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-60@3x.png b/platform/ios/benchmark/img/Icon-60@3x.png
deleted file mode 100644
index 158bcfe27e..0000000000
--- a/platform/ios/benchmark/img/Icon-60@3x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-72.png b/platform/ios/benchmark/img/Icon-72.png
deleted file mode 100644
index eecd90b5eb..0000000000
--- a/platform/ios/benchmark/img/Icon-72.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-72@2x.png b/platform/ios/benchmark/img/Icon-72@2x.png
deleted file mode 100644
index ca28d1fa05..0000000000
--- a/platform/ios/benchmark/img/Icon-72@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small-50.png b/platform/ios/benchmark/img/Icon-Small-50.png
deleted file mode 100644
index a071034743..0000000000
--- a/platform/ios/benchmark/img/Icon-Small-50.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small-50@2x.png b/platform/ios/benchmark/img/Icon-Small-50@2x.png
deleted file mode 100644
index 5d7c76d5e2..0000000000
--- a/platform/ios/benchmark/img/Icon-Small-50@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon.png b/platform/ios/benchmark/img/Icon.png
deleted file mode 100644
index 7af0c68a38..0000000000
--- a/platform/ios/benchmark/img/Icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon.svg b/platform/ios/benchmark/img/Icon.svg
deleted file mode 100644
index 28df6f600d..0000000000
--- a/platform/ios/benchmark/img/Icon.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-miterlimit:1.41421;">
- <image x="0" y="0" width="15px" height="15px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAQ0lEQVQokcXP2wkAIAxD0Sidvqu5jhTxVXdIPsz/4ZLi3hLkKgsBwOjsX3zBcztKeSvllQKeSlnCQ8GhfA5cHvfk8QNc8hvDN5gIKwAAAABJRU5ErkJggg=="/>
- <path id="path7143" d="M9.48355,2.89095C8.18827,3.22425 6.67888,4.56018 5.90484,6.38831L4.93731,6.63727C4.23814,6.81719 3.97174,7.44212 3.83781,8.06502L3.65856,8.89868L5.40366,8.44963L7.68238,9.79563L8.13143,11.5407L8.77503,10.9814C9.25592,10.5634 9.67465,10.0284 9.49474,9.32928L9.24577,8.36174C10.4732,6.80143 10.9147,4.8347 10.5814,3.53941L10.3567,2.66627L9.48355,2.89095ZM8.40657,5.10044C8.73798,5.01516 9.08086,5.2177 9.16614,5.54911C9.25142,5.88052 9.04888,6.2234 8.71747,6.30868C8.38606,6.39396 8.04318,6.19142 7.9579,5.86001C7.87262,5.5286 8.07516,5.18572 8.40657,5.10044L8.40657,5.10044ZM5.41251,9.7356L5.18818,10.1154C4.86414,10.664 4.97269,11.7811 4.97269,11.7811C4.97269,11.7811 5.9677,11.3976 6.32753,10.7884L6.55187,10.4086L5.41251,9.7356Z" style="fill:white;fill-rule:nonzero;stroke-width:0.62px;stroke:white;"/>
-</svg>
diff --git a/platform/ios/benchmark/img/Icon@2x.png b/platform/ios/benchmark/img/Icon@2x.png
deleted file mode 100644
index ff5ea0c073..0000000000
--- a/platform/ios/benchmark/img/Icon@2x.png
+++ /dev/null
Binary files differ
diff --git a/platform/ios/benchmark/locations.hpp b/platform/ios/benchmark/locations.hpp
index 96f9c6025b..1ea65d6280 100644
--- a/platform/ios/benchmark/locations.hpp
+++ b/platform/ios/benchmark/locations.hpp
@@ -1,5 +1,4 @@
-#ifndef MBGL_BENCH_LOCATIONS
-#define MBGL_BENCH_LOCATIONS
+#pragma once
#include <vector>
#include <string>
@@ -19,5 +18,3 @@ extern const std::vector<Location> locations;
}
}
-
-#endif \ No newline at end of file
diff --git a/platform/ios/bitrise.yml b/platform/ios/bitrise.yml
index 556d10a2bb..6e4771273f 100644
--- a/platform/ios/bitrise.yml
+++ b/platform/ios/bitrise.yml
@@ -22,37 +22,21 @@ workflows:
else
envman add --key SKIPCI --value false
fi
- - select-xcode-version:
- title: Select Xcode version
- run_if: '{{enveq "SKIPCI" "false"}}'
- - script:
- title: Install Homebrew dependencies
- run_if: '{{enveq "SKIPCI" "false"}}'
- inputs:
- - content: |-
- #!/bin/bash
-
- brew install pkgconfig
- brew install automake
- gem install jazzy
- script:
- title: Run make ipackage-sim
+ title: Run build
run_if: '{{enveq "SKIPCI" "false"}}'
inputs:
- content: |-
#!/bin/bash
-
- make ipackage-sim
+ set -eu -o pipefail
+ brew tap mapbox/homebrew-ios-sim-3
+ brew install mapbox/homebrew-ios-sim-3/ios-sim
+ gem install xcpretty --no-rdoc --no-ri
+ gem install jazzy --no-rdoc --no-ri
+ export BUILDTYPE=Debug
+ make ios
+ make test-ios
- is_debug: 'yes'
- - xcode-test:
- title: Run Xcode Tests
- run_if: '{{enveq "SKIPCI" "false"}}'
- inputs:
- - project_path: "./platform/ios/test/ios-tests.xcodeproj"
- - scheme: Mapbox GL Tests
- - simulator_device: iPhone 6
- opts:
- is_expand: false
- slack:
title: Post to Slack
run_if: '{{enveq "SKIPCI" "false"}}'
@@ -71,5 +55,3 @@ workflows:
failed'
- icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png
- icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png
- before_run:
- after_run:
diff --git a/platform/ios/docs/doc-README.md b/platform/ios/docs/doc-README.md
index d3c4bd5e4a..12dc5495f6 100644
--- a/platform/ios/docs/doc-README.md
+++ b/platform/ios/docs/doc-README.md
@@ -4,6 +4,6 @@ The Mapbox iOS SDK is an open-source framework for embedding interactive map vie
[![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/screenshot.png)]()
-For setup information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/). For detailed usage instructions, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/CHANGELOG.md) is also available.
+For setup information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/). For detailed usage instructions, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) is also available.
If you have any questions, please [contact our support team](https://www.mapbox.com/contact/). We welcome your [bug reports and feature requests](https://github.com/mapbox/mapbox-gl-native/issues/).
diff --git a/platform/ios/docs/pod-README.md b/platform/ios/docs/pod-README.md
index d62e23b606..1633c7d126 100644
--- a/platform/ios/docs/pod-README.md
+++ b/platform/ios/docs/pod-README.md
@@ -2,7 +2,7 @@
The Mapbox iOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 7.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox GL Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL.
-For more information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/CHANGELOG.md) online.
+For more information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) online.
[![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/screenshot.png)]()
@@ -16,7 +16,7 @@ The Mapbox iOS SDK may be installed as either a dynamic framework or a static fr
This is the recommended workflow for manually integrating the SDK into an application targeting iOS 8 and above:
-1. Open the project editor and select your application target. Drag `Mapbox.framework` from the `dynamic` folder into the “Embedded Binaries” section of the General tab. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
+1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `dynamic` folder into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish.
1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field:
@@ -33,54 +33,62 @@ bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-fra
If your application targets iOS 7.x, you’ll need to install the static framework instead:
-1. Drag the Mapbox.bundle and Mapbox.framework files in `static` into the Project navigator, checking "Copy items if needed". It should happen automatically, but ensure that:
-
- - `Mapbox.framework` is listed in your `Link Binary With Libraries` build phase.
- - Your *Framework Search Paths* (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains `Mapbox.framework`. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient.
- - `Mapbox.bundle` is in your target's *Copy Bundle Resources* build phase.
+1. Drag Mapbox.bundle and Mapbox.framework from the `static` folder into the Project navigator. In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. Open the project editor and select your application target to verify that the following changes occurred automatically:
-1. **Optional** As [noted in the documentation](https://www.mapbox.com/ios-sdk/#telemetry_opt_out) you may use the provided Settings.bundle to provide a Telemetry opt out for users. To use the provided file, drag the `Settings.bundle` file from the release root folder into the Project navigator, checking "Copy items if needed". It should happen automatically, but ensure that:
-
- - `Settings.bundle` is in your target's *Copy Bundle Resources* build phase.
+ - In the General tab, Mapbox.framework is listed in the “Linked Frameworks and Libraries” section.
+ - In the Build Settings tab, the “Framework Search Paths” (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains Mapbox.framework. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient.
+ - In the Build Phases tab, Mapbox.bundle is listed in the “Copy Bundle Resources” build phase.
1. Add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section:
- - `GLKit.framework`
- - `ImageIO.framework`
- - `MobileCoreServices.framework`
- - `QuartzCore.framework`
- - `SystemConfiguration.framework`
- - `libc++.tbd`
- - `libsqlite3.tbd`
- - `libz.tbd`
-
-1. In the Build Settings tab, add `-ObjC` to the “Other Linker Flags” (`OTHER_LDFLAGS`) build setting.
+ - GLKit.framework
+ - ImageIO.framework
+ - MobileCoreServices.framework
+ - QuartzCore.framework
+ - SystemConfiguration.framework
+ - libc++.tbd
+ - libsqlite3.tbd
+ - libz.tbd
{{/STATIC}}
## Configuration
-1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target. In the Info tab, set `MGLMapboxAccessToken` to your access token. You can obtain one from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
+1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/).
+
+1. In order to show the user’s current location on the map, the SDK must ask for the user’s permission to access Location Services. Go to the Info tab of the project editor. If your application supports iOS 7, set the `NSLocationUsageDescription` key to a message that explains to the user what their location is used for. If your application supports iOS 8 and above, set the `NSLocationAlwaysUsageDescription` and/or `NSLocationWhenInUseUsageDescription` key to this message instead.
-1. In order to show the user’s position on the map, you must first ask for their permission. In iOS 8 and above, this is accomplished by creating and setting the `NSLocationAlwaysUsageDescription` and/or `NSLocationWhenInUseUsageDescription` key in the `Info.plist` file.
+1. _(Optional)_ Mapbox Telemetry is a [powerful location analytics platform](https://www.mapbox.com/telemetry/) included in this SDK. By default, anonymized location and usage data is sent to Mapbox whenever the host application causes it to be gathered. This SDK provides users with a way to individually opt out of Mapbox Telemetry. You can also add this opt-out setting to your application’s Settings screen using a Settings bundle. An example Settings.bundle is provided with this SDK; drag it into the Project navigator, checking “Copy items if needed” when prompted. In the project editor, verify that the following change occurred automatically:
-1. _(Optional)_ Mapbox Telemetry is a <a href="https://www.mapbox.com/telemetry/">powerful location analytics platform</a> included in this SDK. By default, anonymized location and usage data is sent to Mapbox whenever the host application causes it to be gathered. This SDK provides users with a way to individually opt out of Mapbox Telemetry. You can also add this opt-out setting to your application’s Settings screen, using the provided `Settings.bundle`.
+ - In the General tab, Settings.bundle is listed in the “Copy Bundle Resources” build phase.
## Usage
-In a XIB or storyboard, add a Custom View and set its custom class to `MGLMapView`. If you need to manipulate the map view programmatically, import the Mapbox module in your view controller’s implementation file:
+In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MGLMapView`. If you need to manipulate the map view programmatically:
+
+1. Switch to the Assistant Editor.
+1. Import the `Mapbox` module.
+1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this:
```objc
// ViewController.m
@import Mapbox;
+
+@interface ViewController : UIViewController
+
+@property (strong) IBOutlet MGLMapView *mapView;
+
+@end
```
```swift
// ViewController.swift
import Mapbox
-```
-Then switch to the Assistant Editor and create an outlet to the map view. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.)
+class ViewController: UIViewController {
+ @IBOutlet var mapView: MGLMapView!
+}
+```
Full API documentation is included in this package, within the `documentation` folder. For more details, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/).
diff --git a/platform/ios/framework/Info-static.plist b/platform/ios/framework/Info-static.plist
new file mode 100644
index 0000000000..b42a23322d
--- /dev/null
+++ b/platform/ios/framework/Info-static.plist
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundleShortVersionString</key>
+ <string>$(CURRENT_SHORT_VERSION)</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>$(CURRENT_PROJECT_VERSION)</string>
+ <key>MGLCommitHash</key>
+ <string>$(CURRENT_COMMIT_HASH)</string>
+ <key>MGLSemanticVersionString</key>
+ <string>$(CURRENT_SEMANTIC_VERSION)</string>
+ <key>NSPrincipalClass</key>
+ <string></string>
+</dict>
+</plist>
diff --git a/platform/ios/framework/Info.plist b/platform/ios/framework/Info.plist
index 3bf250da27..d8962c53ab 100644
--- a/platform/ios/framework/Info.plist
+++ b/platform/ios/framework/Info.plist
@@ -5,20 +5,26 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
+ <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
- <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
+ <string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
- <string>0.0.0</string>
+ <string>$(CURRENT_SHORT_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>0</string>
+ <string>$(CURRENT_PROJECT_VERSION)</string>
+ <key>MGLCommitHash</key>
+ <string>$(CURRENT_COMMIT_HASH)</string>
+ <key>MGLSemanticVersionString</key>
+ <string>$(CURRENT_SEMANTIC_VERSION)</string>
+ <key>NSPrincipalClass</key>
+ <string></string>
</dict>
</plist>
diff --git a/platform/ios/framework/Mapbox.m b/platform/ios/framework/Mapbox.m
deleted file mode 100644
index e745602df0..0000000000
--- a/platform/ios/framework/Mapbox.m
+++ /dev/null
@@ -1,32 +0,0 @@
-#import <Mapbox/Mapbox.h>
-
-#import "../src/NSBundle+MGLAdditions.h"
-#import "../src/NSProcessInfo+MGLAdditions.h"
-#import "../../darwin/src/NSString+MGLAdditions.h"
-
-__attribute__((constructor))
-static void InitializeMapbox() {
- static int initialized = 0;
- if (initialized) {
- return;
- }
-
- mgl_linkBundleCategory();
- mgl_linkStringCategory();
- mgl_linkProcessInfoCategory();
-
- [MGLAccountManager class];
- [MGLAnnotationImage class];
- [MGLMapCamera class];
- [MGLMapView class];
- [MGLMultiPoint class];
- [MGLOfflinePack class];
- [MGLOfflineStorage class];
- [MGLPointAnnotation class];
- [MGLPolygon class];
- [MGLPolyline class];
- [MGLShape class];
- [MGLStyle class];
- [MGLTilePyramidOfflineRegion class];
- [MGLUserLocation class];
-}
diff --git a/platform/ios/framework/Settings.bundle/Base.lproj/Root.strings b/platform/ios/framework/Settings.bundle/Base.lproj/Root.strings
new file mode 100644
index 0000000000..1945fe1141
--- /dev/null
+++ b/platform/ios/framework/Settings.bundle/Base.lproj/Root.strings
@@ -0,0 +1,3 @@
+"TELEMETRY_GROUP_TITLE" = "Privacy Settings";
+"TELEMETRY_SWITCH_TITLE" = "Mapbox Telemetry";
+"TELEMETRY_GROUP_FOOTER" = "This setting allows the application to share anonymized location and usage data with Mapbox.";
diff --git a/platform/ios/framework/Settings.bundle/Root.plist b/platform/ios/framework/Settings.bundle/Root.plist
index 889610e152..fba2065a8f 100644
--- a/platform/ios/framework/Settings.bundle/Root.plist
+++ b/platform/ios/framework/Settings.bundle/Root.plist
@@ -6,11 +6,11 @@
<array>
<dict>
<key>Title</key>
- <string>Privacy Settings</string>
+ <string>TELEMETRY_GROUP_TITLE</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>FooterText</key>
- <string>This setting allows the application to share anonymized location and usage data with Mapbox.</string>
+ <string>TELEMETRY_GROUP_FOOTER</string>
</dict>
<dict>
<key>DefaultValue</key>
@@ -18,7 +18,7 @@
<key>Key</key>
<string>MGLMapboxMetricsEnabled</string>
<key>Title</key>
- <string>Mapbox Telemetry</string>
+ <string>TELEMETRY_SWITCH_TITLE</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>TrueValue</key>
diff --git a/platform/ios/framework/Settings.bundle/en.lproj/Root.strings b/platform/ios/framework/Settings.bundle/en.lproj/Root.strings
deleted file mode 100644
index e7658d692d..0000000000
--- a/platform/ios/framework/Settings.bundle/en.lproj/Root.strings
+++ /dev/null
Binary files differ
diff --git a/platform/ios/framework/framework-ios.gypi b/platform/ios/framework/framework-ios.gypi
deleted file mode 100644
index 3d733d963a..0000000000
--- a/platform/ios/framework/framework-ios.gypi
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- 'includes': [
- '../../../gyp/common.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'iossdk',
- 'product_name': 'Mapbox',
- 'type': 'shared_library',
- 'mac_bundle': 1,
-
- 'dependencies': [
- 'mbgl.gyp:core',
- 'mbgl.gyp:platform-<(platform_lib)',
- 'mbgl.gyp:http-<(http_lib)',
- 'mbgl.gyp:asset-<(asset_lib)',
- ],
-
- 'xcode_settings': {
- 'CLANG_ENABLE_OBJC_ARC': 'YES',
- 'COMBINE_HIDPI_IMAGES': 'NO', # disable combining @2x, @3x images into .tiff files
- 'CURRENT_PROJECT_VERSION': '0',
- 'DEFINES_MODULE': 'YES',
- 'DYLIB_INSTALL_NAME_BASE': '@rpath',
- 'INFOPLIST_FILE': '../platform/ios/framework/Info.plist',
- 'IPHONEOS_DEPLOYMENT_TARGET': '8.0',
- 'LD_RUNPATH_SEARCH_PATHS': [
- '$(inherited)',
- '@executable_path/Frameworks',
- '@loader_path/Frameworks',
- ],
- 'PRODUCT_BUNDLE_IDENTIFIER': 'com.mapbox.sdk.ios',
- 'OTHER_LDFLAGS': [ '-stdlib=libc++', '-lstdc++' ],
- 'SDKROOT': 'iphoneos',
- 'SKIP_INSTALL': 'YES',
- 'SUPPORTED_PLATFORMS': [
- 'iphonesimulator',
- 'iphoneos',
- ],
- 'VERSIONING_SYSTEM': 'apple-generic',
- },
-
- 'mac_framework_headers': [
- 'Mapbox.h',
- '<!@(find ../platform/{darwin,ios}/include -type f \! -name \'.*\' \! -name Mapbox.h)',
- ],
-
- 'sources': [
- 'Mapbox.m',
- ],
-
- 'configurations': {
- 'Debug': {
- 'xcode_settings': {
- 'CODE_SIGN_IDENTITY': 'iPhone Developer',
- 'DEAD_CODE_STRIPPING': 'YES',
- 'GCC_OPTIMIZATION_LEVEL': '0',
- },
- },
- 'Release': {
- 'xcode_settings': {
- 'ARCHS': [ "armv7", "armv7s", "arm64", "i386", "x86_64" ],
- 'CODE_SIGN_IDENTITY': 'iPhone Distribution',
- 'DEAD_CODE_STRIPPING': 'YES',
- 'GCC_OPTIMIZATION_LEVEL': 's',
- },
- },
- },
- },
- ]
-}
diff --git a/platform/ios/include/Mapbox.h b/platform/ios/include/Mapbox.h
deleted file mode 100644
index fb25a0104e..0000000000
--- a/platform/ios/include/Mapbox.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#import "MGLAccountManager.h"
-#import "MGLAnnotation.h"
-#import "MGLAnnotationImage.h"
-#import "MGLCalloutView.h"
-#import "MGLGeometry.h"
-#import "MGLMapCamera.h"
-#import "MGLMapView.h"
-#import "MGLMapView+IBAdditions.h"
-#import "MGLMapView+MGLCustomStyleLayerAdditions.h"
-#import "MGLMultiPoint.h"
-#import "MGLOfflinePack.h"
-#import "MGLOfflineRegion.h"
-#import "MGLOfflineStorage.h"
-#import "MGLOverlay.h"
-#import "MGLPointAnnotation.h"
-#import "MGLPolygon.h"
-#import "MGLPolyline.h"
-#import "MGLShape.h"
-#import "MGLStyle.h"
-#import "MGLTilePyramidOfflineRegion.h"
-#import "MGLTypes.h"
-#import "MGLUserLocation.h"
diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..cb1bd70199
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/project.pbxproj
@@ -0,0 +1,1972 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 4018B1C71CDC287F00F666AF /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
+ 4018B1C81CDC287F00F666AF /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
+ 4018B1C91CDC288A00F666AF /* MGLAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */; };
+ 4018B1CA1CDC288E00F666AF /* MGLAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 40EDA1C01CFE0E0200D9EA68 /* MGLAnnotationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */; };
+ 40EDA1C11CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */; };
+ 40EDA1C21CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */; };
+ 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */; };
+ DA0CD5901CF56F6A00A5F5A5 /* MGLFeatureTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */; };
+ DA17BE301CC4BAC300402C41 /* MGLMapView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MGLMapView_Internal.h */; };
+ DA17BE311CC4BDAA00402C41 /* MGLMapView_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MGLMapView_Internal.h */; };
+ DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */; };
+ DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */; };
+ DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96C1CB6C6CE006E619F /* points.geojson */; };
+ DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96D1CB6C6CE006E619F /* polyline.geojson */; };
+ DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96F1CB6C6CE006E619F /* threestates.geojson */; };
+ DA1DC9971CB6E046006E619F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9961CB6E046006E619F /* main.m */; };
+ DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */; };
+ DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC99A1CB6E064006E619F /* MBXViewController.m */; };
+ DA1DC99D1CB6E076006E619F /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC99C1CB6E076006E619F /* Default-568h@2x.png */; };
+ DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC99E1CB6E088006E619F /* Assets.xcassets */; };
+ DA25D5C01CCD9F8400607828 /* Root.plist in Resources */ = {isa = PBXBuildFile; fileRef = DA25D5BF1CCD9F8400607828 /* Root.plist */; };
+ DA25D5C61CCDA06800607828 /* Root.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA25D5C41CCDA06800607828 /* Root.strings */; };
+ DA25D5CD1CCDA11500607828 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DA25D5B91CCD9EDE00607828 /* Settings.bundle */; };
+ DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA27C24D1CBB3811000B0ECD /* GLKit.framework */; };
+ DA27C24F1CBB4C11000B0ECD /* MGLAccountManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */; };
+ DA2E88561CC036F400F24E7B /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
+ DA2E88611CC0382C00F24E7B /* MGLGeometryTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */; };
+ DA2E88621CC0382C00F24E7B /* MGLOfflinePackTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.m */; };
+ DA2E88631CC0382C00F24E7B /* MGLOfflineRegionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */; };
+ DA2E88641CC0382C00F24E7B /* MGLOfflineStorageTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885F1CC0382C00F24E7B /* MGLOfflineStorageTests.m */; };
+ DA2E88651CC0382C00F24E7B /* MGLStyleTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */; };
+ DA35A29E1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A29F1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
+ DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */; };
+ DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */; };
+ DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
+ DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */; };
+ DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
+ DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */; };
+ DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */; };
+ DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */; };
+ DA35A2C91CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2CA1CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA35A2CB1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */; };
+ DA35A2CC1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */; };
+ DA737EE11D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA737EE21D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */; };
+ DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D051CCC6D59007508D4 /* Main.storyboard */; };
+ DA8847D91CBAF91600AB86E3 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
+ DA8847DA1CBAF91600AB86E3 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ DA8847EF1CBAFA5100AB86E3 /* MGLAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F01CBAFA5100AB86E3 /* MGLAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F11CBAFA5100AB86E3 /* MGLGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F21CBAFA5100AB86E3 /* MGLMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F31CBAFA5100AB86E3 /* MGLMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F41CBAFA5100AB86E3 /* MGLOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F51CBAFA5100AB86E3 /* MGLOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F61CBAFA5100AB86E3 /* MGLOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F71CBAFA5100AB86E3 /* MGLOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F81CBAFA5100AB86E3 /* MGLPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847F91CBAFA5100AB86E3 /* MGLPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847FB1CBAFA5100AB86E3 /* MGLShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847FC1CBAFA5100AB86E3 /* MGLStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847FD1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA8847FE1CBAFA5100AB86E3 /* MGLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */; };
+ DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */; };
+ DA88481C1CBAFA6200AB86E3 /* MGLGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */; };
+ DA88481D1CBAFA6200AB86E3 /* MGLMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */; };
+ DA88481E1CBAFA6200AB86E3 /* MGLMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */; };
+ DA88481F1CBAFA6200AB86E3 /* MGLMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */; };
+ DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */; };
+ DA8848211CBAFA6200AB86E3 /* MGLOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */; };
+ DA8848221CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */; };
+ DA8848231CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */; };
+ DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */; };
+ DA8848251CBAFA6200AB86E3 /* MGLPointAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.m */; };
+ DA8848261CBAFA6200AB86E3 /* MGLPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */; };
+ DA8848271CBAFA6200AB86E3 /* MGLPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */; };
+ DA8848281CBAFA6200AB86E3 /* MGLShape.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MGLShape.m */; };
+ DA8848291CBAFA6200AB86E3 /* MGLStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */; };
+ DA88482A1CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */; };
+ DA88482B1CBAFA6200AB86E3 /* MGLTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MGLTypes.m */; };
+ DA88482C1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */; };
+ DA88482D1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */; };
+ DA88482E1CBAFA6200AB86E3 /* NSException+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */; };
+ DA88482F1CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848151CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.h */; };
+ DA8848301CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848161CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m */; };
+ DA8848311CBAFA6200AB86E3 /* NSString+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */; };
+ DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */; };
+ DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88483B1CBAFB8500AB86E3 /* MGLCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88483C1CBAFB8500AB86E3 /* MGLMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MGLMapView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88483D1CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88483E1CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848381CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88483F1CBAFB8500AB86E3 /* MGLUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88484F1CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */; };
+ DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */; };
+ DA8848511CBAFB9800AB86E3 /* MGLAPIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848421CBAFB9800AB86E3 /* MGLAPIClient.h */; };
+ DA8848521CBAFB9800AB86E3 /* MGLAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848431CBAFB9800AB86E3 /* MGLAPIClient.m */; };
+ DA8848531CBAFB9800AB86E3 /* MGLCompactCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */; };
+ DA8848541CBAFB9800AB86E3 /* MGLCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */; };
+ DA8848551CBAFB9800AB86E3 /* MGLLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848461CBAFB9800AB86E3 /* MGLLocationManager.h */; };
+ DA8848561CBAFB9800AB86E3 /* MGLLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848471CBAFB9800AB86E3 /* MGLLocationManager.m */; };
+ DA8848571CBAFB9800AB86E3 /* MGLMapboxEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848481CBAFB9800AB86E3 /* MGLMapboxEvents.h */; };
+ DA8848581CBAFB9800AB86E3 /* MGLMapboxEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848491CBAFB9800AB86E3 /* MGLMapboxEvents.m */; };
+ DA8848591CBAFB9800AB86E3 /* MGLMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */; };
+ DA88485A1CBAFB9800AB86E3 /* MGLUserLocation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */; };
+ DA88485B1CBAFB9800AB86E3 /* MGLUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */; };
+ DA88485C1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484D1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h */; };
+ DA88485D1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484E1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m */; };
+ DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DA88486D1CBAFCC100AB86E3 /* Compass.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848631CBAFCC100AB86E3 /* Compass.png */; };
+ DA88486E1CBAFCC100AB86E3 /* Compass@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848641CBAFCC100AB86E3 /* Compass@2x.png */; };
+ DA88486F1CBAFCC100AB86E3 /* Compass@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848651CBAFCC100AB86E3 /* Compass@3x.png */; };
+ DA8848701CBAFCC100AB86E3 /* default_marker.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848661CBAFCC100AB86E3 /* default_marker.png */; };
+ DA8848711CBAFCC100AB86E3 /* default_marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848671CBAFCC100AB86E3 /* default_marker@2x.png */; };
+ DA8848721CBAFCC100AB86E3 /* default_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848681CBAFCC100AB86E3 /* default_marker@3x.png */; };
+ DA8848731CBAFCC100AB86E3 /* mapbox.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848691CBAFCC100AB86E3 /* mapbox.png */; };
+ DA8848741CBAFCC100AB86E3 /* mapbox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA88486A1CBAFCC100AB86E3 /* mapbox@2x.png */; };
+ DA8848751CBAFCC100AB86E3 /* mapbox@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA88486B1CBAFCC100AB86E3 /* mapbox@3x.png */; };
+ DA88487A1CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848771CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der */; };
+ DA88487B1CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848781CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der */; };
+ DA88487C1CBAFD5C00AB86E3 /* star_tilestream_net.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848791CBAFD5C00AB86E3 /* star_tilestream_net.der */; };
+ DA8848841CBB033F00AB86E3 /* FABAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848801CBB033F00AB86E3 /* FABAttributes.h */; };
+ DA8848851CBB033F00AB86E3 /* FABKitProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848811CBB033F00AB86E3 /* FABKitProtocol.h */; };
+ DA8848861CBB033F00AB86E3 /* Fabric+FABKits.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848821CBB033F00AB86E3 /* Fabric+FABKits.h */; };
+ DA8848871CBB033F00AB86E3 /* Fabric.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848831CBB033F00AB86E3 /* Fabric.h */; };
+ DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848891CBB037E00AB86E3 /* SMCalloutView.h */; };
+ DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; };
+ DA88488E1CBB047F00AB86E3 /* reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88488D1CBB047F00AB86E3 /* reachability.h */; };
+ DA8848901CBB048E00AB86E3 /* reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488F1CBB048E00AB86E3 /* reachability.m */; };
+ DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; };
+ DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; };
+ DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; };
+ DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; };
+ DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; };
+ DA8933DD1CCD31D400E68420 /* api_mapbox_com-digicert.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848771CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der */; };
+ DA8933DE1CCD31D400E68420 /* api_mapbox_com-geotrust.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848781CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der */; };
+ DA8933DF1CCD31D400E68420 /* star_tilestream_net.der in Resources */ = {isa = PBXBuildFile; fileRef = DA8848791CBAFD5C00AB86E3 /* star_tilestream_net.der */; };
+ DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; };
+ DA8933E11CCD31DF00E68420 /* Compass.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848631CBAFCC100AB86E3 /* Compass.png */; };
+ DA8933E21CCD31DF00E68420 /* Compass@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848641CBAFCC100AB86E3 /* Compass@2x.png */; };
+ DA8933E31CCD31DF00E68420 /* Compass@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848651CBAFCC100AB86E3 /* Compass@3x.png */; };
+ DA8933E41CCD31DF00E68420 /* default_marker.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848661CBAFCC100AB86E3 /* default_marker.png */; };
+ DA8933E51CCD31DF00E68420 /* default_marker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848671CBAFCC100AB86E3 /* default_marker@2x.png */; };
+ DA8933E61CCD31DF00E68420 /* default_marker@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848681CBAFCC100AB86E3 /* default_marker@3x.png */; };
+ DA8933E71CCD31DF00E68420 /* mapbox.png in Resources */ = {isa = PBXBuildFile; fileRef = DA8848691CBAFCC100AB86E3 /* mapbox.png */; };
+ DA8933E81CCD31DF00E68420 /* mapbox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA88486A1CBAFCC100AB86E3 /* mapbox@2x.png */; };
+ DA8933E91CCD31DF00E68420 /* mapbox@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA88486B1CBAFCC100AB86E3 /* mapbox@3x.png */; };
+ DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = DA8933EF1CCD387900E68420 /* strip-frameworks.sh */; };
+ DA8963371CC549A100684375 /* glyphs in Resources */ = {isa = PBXBuildFile; fileRef = DA8963331CC549A100684375 /* glyphs */; };
+ DA8963381CC549A100684375 /* sprites in Resources */ = {isa = PBXBuildFile; fileRef = DA8963341CC549A100684375 /* sprites */; };
+ DA8963391CC549A100684375 /* styles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963351CC549A100684375 /* styles */; };
+ DA89633A1CC549A100684375 /* tiles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963361CC549A100684375 /* tiles */; };
+ DAA4E4051CBB5C9E00178DFB /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAA4E4041CBB5C9E00178DFB /* ImageIO.framework */; };
+ DAA4E4071CBB5CBF00178DFB /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAA4E4061CBB5CBF00178DFB /* MobileCoreServices.framework */; };
+ DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; };
+ DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */; };
+ DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */; };
+ DAA4E41E1CBB730400178DFB /* MGLMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */; };
+ DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */; };
+ DAA4E4201CBB730400178DFB /* MGLOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */; };
+ DAA4E4211CBB730400178DFB /* MGLOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */; };
+ DAA4E4221CBB730400178DFB /* MGLPointAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.m */; };
+ DAA4E4231CBB730400178DFB /* MGLPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */; };
+ DAA4E4241CBB730400178DFB /* MGLPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */; };
+ DAA4E4251CBB730400178DFB /* MGLShape.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MGLShape.m */; };
+ DAA4E4261CBB730400178DFB /* MGLStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */; };
+ DAA4E4271CBB730400178DFB /* MGLTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */; };
+ DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MGLTypes.m */; };
+ DAA4E4291CBB730400178DFB /* NSBundle+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */; };
+ DAA4E42A1CBB730400178DFB /* NSProcessInfo+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848161CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m */; };
+ DAA4E42B1CBB730400178DFB /* NSString+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */; };
+ DAA4E42C1CBB730400178DFB /* reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488F1CBB048E00AB86E3 /* reachability.m */; };
+ DAA4E42D1CBB730400178DFB /* MGLAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */; };
+ DAA4E42E1CBB730400178DFB /* MGLAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848431CBAFB9800AB86E3 /* MGLAPIClient.m */; };
+ DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */; };
+ DAA4E4301CBB730400178DFB /* MGLLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848471CBAFB9800AB86E3 /* MGLLocationManager.m */; };
+ DAA4E4311CBB730400178DFB /* MGLMapboxEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848491CBAFB9800AB86E3 /* MGLMapboxEvents.m */; };
+ DAA4E4321CBB730400178DFB /* MGLMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */; };
+ DAA4E4331CBB730400178DFB /* MGLUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */; };
+ DAA4E4341CBB730400178DFB /* MGLUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484E1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m */; };
+ DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; };
+ DAABF73D1CBC59BB005B1825 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */; };
+ DAABF73E1CBC59BB005B1825 /* libmbgl-platform-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAABF73C1CBC59BB005B1825 /* libmbgl-platform-ios.a */; };
+ DABCABAC1CB80692000A7C39 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAB1CB80692000A7C39 /* main.m */; };
+ DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */; };
+ DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */; };
+ DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB61CB80692000A7C39 /* Assets.xcassets */; };
+ DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */; };
+ DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABCABBF1CB80717000A7C39 /* locations.cpp */; };
+ DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB85E1CBE99E500D62B32 /* MGLAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8611CBE99E500D62B32 /* MGLMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8621CBE99E500D62B32 /* MGLOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8631CBE99E500D62B32 /* MGLOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8641CBE99E500D62B32 /* MGLOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8651CBE99E500D62B32 /* MGLOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8661CBE99E500D62B32 /* MGLPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8671CBE99E500D62B32 /* MGLPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8681CBE99E500D62B32 /* MGLPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8691CBE99E500D62B32 /* MGLShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86C1CBE99E500D62B32 /* MGLTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86D1CBE9A0F00D62B32 /* MGLAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB86F1CBE9A0F00D62B32 /* MGLMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MGLMapView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8701CBE9A0F00D62B32 /* MGLMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8711CBE9A0F00D62B32 /* MGLMapView+MGLCustomStyleLayerAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848381CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8721CBE9A0F00D62B32 /* MGLUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; };
+ DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; };
+ DAD1656C1CF41981001FF4B9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAD1656D1CF41981001FF4B9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAD1656E1CF41981001FF4B9 /* MGLFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */; };
+ DAD165701CF41981001FF4B9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */; };
+ DAD165711CF41981001FF4B9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */; };
+ DAD165781CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAD165791CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAD1657A1CF4CDFF001FF4B9 /* MGLShapeCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.m */; };
+ DAD1657B1CF4CDFF001FF4B9 /* MGLShapeCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.m */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ DA25D5C71CCDA0C100607828 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA25D5B81CCD9EDE00607828;
+ remoteInfo = settings;
+ };
+ DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA8933D41CCD306400E68420;
+ remoteInfo = bundle;
+ };
+ DA25D5CB1CCDA0CC00607828 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA25D5B81CCD9EDE00607828;
+ remoteInfo = settings;
+ };
+ DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
+ remoteInfo = dynamic;
+ };
+ DA8847D71CBAF91600AB86E3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
+ remoteInfo = framework;
+ };
+ DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DA8847D11CBAF91600AB86E3;
+ remoteInfo = framework;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ DA4A269A1CB6F5D3000B7809 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ DA8847DA1CBAF91600AB86E3 /* Mapbox.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DAA4E4111CBB71D400178DFB /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "include/$(PRODUCT_NAME)";
+ dstSubfolderSpec = 16;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView_Private.h; sourceTree = "<group>"; };
+ 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAnnotationView.mm; sourceTree = "<group>"; };
+ 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView.h; sourceTree = "<group>"; };
+ 402E9DE01CD2C76200FD4519 /* Mapbox.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Mapbox.playground; sourceTree = "<group>"; };
+ 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationContainerView.h; sourceTree = "<group>"; };
+ 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationContainerView.m; sourceTree = "<group>"; };
+ 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXAnnotationView.h; sourceTree = "<group>"; };
+ 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAnnotationView.m; sourceTree = "<group>"; };
+ DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFeatureTests.mm; path = ../../darwin/test/MGLFeatureTests.mm; sourceTree = "<group>"; };
+ DA17BE2F1CC4BAC300402C41 /* MGLMapView_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView_Internal.h; sourceTree = "<group>"; };
+ DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXAppDelegate.h; sourceTree = "<group>"; };
+ DA1DC9531CB6C1C2006E619F /* MBXViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXViewController.h; sourceTree = "<group>"; };
+ DA1DC95E1CB6C1C2006E619F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXCustomCalloutView.h; sourceTree = "<group>"; };
+ DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXCustomCalloutView.m; sourceTree = "<group>"; };
+ DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXOfflinePacksTableViewController.h; sourceTree = "<group>"; };
+ DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXOfflinePacksTableViewController.m; sourceTree = "<group>"; };
+ DA1DC96C1CB6C6CE006E619F /* points.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = points.geojson; sourceTree = "<group>"; };
+ DA1DC96D1CB6C6CE006E619F /* polyline.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = polyline.geojson; sourceTree = "<group>"; };
+ DA1DC96F1CB6C6CE006E619F /* threestates.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = threestates.geojson; sourceTree = "<group>"; };
+ DA1DC9961CB6E046006E619F /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAppDelegate.m; sourceTree = "<group>"; };
+ DA1DC99A1CB6E064006E619F /* MBXViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXViewController.m; sourceTree = "<group>"; };
+ DA1DC99C1CB6E076006E619F /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
+ DA1DC99E1CB6E088006E619F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ DA25D5B91CCD9EDE00607828 /* Settings.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Settings.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA25D5BF1CCD9F8400607828 /* Root.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Root.plist; sourceTree = "<group>"; };
+ DA25D5C51CCDA06800607828 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Root.strings; sourceTree = "<group>"; };
+ DA27C24D1CBB3811000B0ECD /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+ DA2E88511CC036F400F24E7B /* test.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = test.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA2E88551CC036F400F24E7B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLGeometryTests.mm; path = ../../darwin/test/MGLGeometryTests.mm; sourceTree = "<group>"; };
+ DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLOfflinePackTests.m; path = ../../darwin/test/MGLOfflinePackTests.m; sourceTree = "<group>"; };
+ DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLOfflineRegionTests.m; path = ../../darwin/test/MGLOfflineRegionTests.m; sourceTree = "<group>"; };
+ DA2E885F1CC0382C00F24E7B /* MGLOfflineStorageTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLOfflineStorageTests.m; path = ../../darwin/test/MGLOfflineStorageTests.m; sourceTree = "<group>"; };
+ DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLStyleTests.mm; path = ../../darwin/test/MGLStyleTests.mm; sourceTree = "<group>"; };
+ DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCoordinateFormatter.h; sourceTree = "<group>"; };
+ DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCoordinateFormatter.m; sourceTree = "<group>"; };
+ DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCoordinateFormatterTests.m; path = ../../darwin/test/MGLCoordinateFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompassDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompassDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLClockDirectionFormatter.m; sourceTree = "<group>"; };
+ DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLClockDirectionFormatter.h; sourceTree = "<group>"; };
+ DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLClockDirectionFormatterTests.m; path = ../../darwin/test/MGLClockDirectionFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLCompassDirectionFormatterTests.m; path = ../../darwin/test/MGLCompassDirectionFormatterTests.m; sourceTree = "<group>"; };
+ DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MGLAdditions.h"; sourceTree = "<group>"; };
+ DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+MGLAdditions.m"; sourceTree = "<group>"; };
+ DA35A2D11CCAB25200E826B2 /* jazzy.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = jazzy.yml; sourceTree = "<group>"; };
+ DA4A26961CB6E795000B7809 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapViewDelegate.h; sourceTree = "<group>"; };
+ DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
+ DA821D051CCC6D59007508D4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
+ DA8847D21CBAF91600AB86E3 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA8847D61CBAF91600AB86E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager.h; sourceTree = "<group>"; };
+ DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotation.h; sourceTree = "<group>"; };
+ DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry.h; sourceTree = "<group>"; };
+ DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapCamera.h; sourceTree = "<group>"; };
+ DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint.h; sourceTree = "<group>"; };
+ DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack.h; sourceTree = "<group>"; };
+ DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion.h; sourceTree = "<group>"; };
+ DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage.h; sourceTree = "<group>"; };
+ DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOverlay.h; sourceTree = "<group>"; };
+ DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointAnnotation.h; sourceTree = "<group>"; };
+ DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolygon.h; sourceTree = "<group>"; };
+ DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPolyline.h; sourceTree = "<group>"; };
+ DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShape.h; sourceTree = "<group>"; };
+ DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyle.h; sourceTree = "<group>"; };
+ DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTilePyramidOfflineRegion.h; sourceTree = "<group>"; };
+ DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLTypes.h; sourceTree = "<group>"; };
+ DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAccountManager_Private.h; sourceTree = "<group>"; };
+ DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAccountManager.m; sourceTree = "<group>"; };
+ DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLGeometry_Private.h; sourceTree = "<group>"; };
+ DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLGeometry.mm; sourceTree = "<group>"; };
+ DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapCamera.mm; sourceTree = "<group>"; };
+ DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMultiPoint_Private.h; sourceTree = "<group>"; };
+ DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMultiPoint.mm; sourceTree = "<group>"; };
+ DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflinePack_Private.h; sourceTree = "<group>"; };
+ DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflinePack.mm; sourceTree = "<group>"; };
+ DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineRegion_Private.h; sourceTree = "<group>"; };
+ DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLOfflineStorage_Private.h; sourceTree = "<group>"; };
+ DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLOfflineStorage.mm; sourceTree = "<group>"; };
+ DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLPointAnnotation.m; sourceTree = "<group>"; };
+ DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolygon.mm; sourceTree = "<group>"; };
+ DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLPolyline.mm; sourceTree = "<group>"; };
+ DA88480E1CBAFA6200AB86E3 /* MGLShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLShape.m; sourceTree = "<group>"; };
+ DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyle.mm; sourceTree = "<group>"; };
+ DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLTilePyramidOfflineRegion.mm; sourceTree = "<group>"; };
+ DA8848111CBAFA6200AB86E3 /* MGLTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLTypes.m; sourceTree = "<group>"; };
+ DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+MGLAdditions.h"; sourceTree = "<group>"; };
+ DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+MGLAdditions.m"; sourceTree = "<group>"; };
+ DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSException+MGLAdditions.h"; sourceTree = "<group>"; };
+ DA8848151CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSProcessInfo+MGLAdditions.h"; sourceTree = "<group>"; };
+ DA8848161CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSProcessInfo+MGLAdditions.m"; sourceTree = "<group>"; };
+ DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MGLAdditions.h"; sourceTree = "<group>"; };
+ DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MGLAdditions.m"; sourceTree = "<group>"; };
+ DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage.h; sourceTree = "<group>"; };
+ DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCalloutView.h; sourceTree = "<group>"; };
+ DA8848361CBAFB8500AB86E3 /* MGLMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapView.h; sourceTree = "<group>"; };
+ DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+IBAdditions.h"; sourceTree = "<group>"; };
+ DA8848381CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLMapView+MGLCustomStyleLayerAdditions.h"; sourceTree = "<group>"; };
+ DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocation.h; sourceTree = "<group>"; };
+ DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = "<group>"; };
+ DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationImage.m; sourceTree = "<group>"; };
+ DA8848421CBAFB9800AB86E3 /* MGLAPIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAPIClient.h; sourceTree = "<group>"; };
+ DA8848431CBAFB9800AB86E3 /* MGLAPIClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAPIClient.m; sourceTree = "<group>"; };
+ DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLCompactCalloutView.h; sourceTree = "<group>"; };
+ DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLCompactCalloutView.m; sourceTree = "<group>"; };
+ DA8848461CBAFB9800AB86E3 /* MGLLocationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLLocationManager.h; sourceTree = "<group>"; };
+ DA8848471CBAFB9800AB86E3 /* MGLLocationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLLocationManager.m; sourceTree = "<group>"; };
+ DA8848481CBAFB9800AB86E3 /* MGLMapboxEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapboxEvents.h; sourceTree = "<group>"; };
+ DA8848491CBAFB9800AB86E3 /* MGLMapboxEvents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLMapboxEvents.m; sourceTree = "<group>"; };
+ DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLMapView.mm; sourceTree = "<group>"; };
+ DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocation_Private.h; sourceTree = "<group>"; };
+ DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocation.m; sourceTree = "<group>"; };
+ DA88484D1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLUserLocationAnnotationView.h; sourceTree = "<group>"; };
+ DA88484E1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLUserLocationAnnotationView.m; sourceTree = "<group>"; };
+ DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mapbox.h; path = src/Mapbox.h; sourceTree = SOURCE_ROOT; };
+ DA8848631CBAFCC100AB86E3 /* Compass.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Compass.png; sourceTree = "<group>"; };
+ DA8848641CBAFCC100AB86E3 /* Compass@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Compass@2x.png"; sourceTree = "<group>"; };
+ DA8848651CBAFCC100AB86E3 /* Compass@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Compass@3x.png"; sourceTree = "<group>"; };
+ DA8848661CBAFCC100AB86E3 /* default_marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = default_marker.png; sourceTree = "<group>"; };
+ DA8848671CBAFCC100AB86E3 /* default_marker@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default_marker@2x.png"; sourceTree = "<group>"; };
+ DA8848681CBAFCC100AB86E3 /* default_marker@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default_marker@3x.png"; sourceTree = "<group>"; };
+ DA8848691CBAFCC100AB86E3 /* mapbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mapbox.png; sourceTree = "<group>"; };
+ DA88486A1CBAFCC100AB86E3 /* mapbox@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mapbox@2x.png"; sourceTree = "<group>"; };
+ DA88486B1CBAFCC100AB86E3 /* mapbox@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mapbox@3x.png"; sourceTree = "<group>"; };
+ DA8848771CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der */ = {isa = PBXFileReference; lastKnownFileType = file; name = "api_mapbox_com-digicert.der"; path = "../../default/resources/api_mapbox_com-digicert.der"; sourceTree = "<group>"; };
+ DA8848781CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der */ = {isa = PBXFileReference; lastKnownFileType = file; name = "api_mapbox_com-geotrust.der"; path = "../../default/resources/api_mapbox_com-geotrust.der"; sourceTree = "<group>"; };
+ DA8848791CBAFD5C00AB86E3 /* star_tilestream_net.der */ = {isa = PBXFileReference; lastKnownFileType = file; name = star_tilestream_net.der; path = ../../default/resources/star_tilestream_net.der; sourceTree = "<group>"; };
+ DA8848801CBB033F00AB86E3 /* FABAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FABAttributes.h; sourceTree = "<group>"; };
+ DA8848811CBB033F00AB86E3 /* FABKitProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FABKitProtocol.h; sourceTree = "<group>"; };
+ DA8848821CBB033F00AB86E3 /* Fabric+FABKits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Fabric+FABKits.h"; sourceTree = "<group>"; };
+ DA8848831CBB033F00AB86E3 /* Fabric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Fabric.h; sourceTree = "<group>"; };
+ DA8848891CBB037E00AB86E3 /* SMCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = "<group>"; };
+ DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = "<group>"; };
+ DA88488D1CBB047F00AB86E3 /* reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reachability.h; path = ../../include/mbgl/platform/darwin/reachability.h; sourceTree = "<group>"; };
+ DA88488F1CBB048E00AB86E3 /* reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = reachability.m; path = src/reachability.m; sourceTree = "<group>"; };
+ DA8933A01CCC951200E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
+ DA8933BB1CCD2CA100E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Foundation.strings; sourceTree = "<group>"; };
+ DA8933BE1CCD2CAD00E68420 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Foundation.stringsdict; sourceTree = "<group>"; };
+ DA8933D51CCD306400E68420 /* Mapbox.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Mapbox.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA8933EF1CCD387900E68420 /* strip-frameworks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "strip-frameworks.sh"; path = "framework/strip-frameworks.sh"; sourceTree = SOURCE_ROOT; };
+ DA8933F11CCD3FD700E68420 /* Info-static.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-static.plist"; sourceTree = "<group>"; };
+ DA8963331CC549A100684375 /* glyphs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = glyphs; sourceTree = "<group>"; };
+ DA8963341CC549A100684375 /* sprites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = sprites; sourceTree = "<group>"; };
+ DA8963351CC549A100684375 /* styles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = styles; sourceTree = "<group>"; };
+ DA8963361CC549A100684375 /* tiles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = tiles; sourceTree = "<group>"; };
+ DAA4E4021CBB5C2F00178DFB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ DAA4E4041CBB5C9E00178DFB /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; };
+ DAA4E4061CBB5CBF00178DFB /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+ DAA4E4131CBB71D400178DFB /* libMapbox.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMapbox.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libmbgl-core.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ DAABF73C1CBC59BB005B1825 /* libmbgl-platform-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libmbgl-platform-ios.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ DABCABA81CB80692000A7C39 /* Bench GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Bench GL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ DABCABAB1CB80692000A7C39 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+ DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchAppDelegate.h; sourceTree = "<group>"; };
+ DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXBenchAppDelegate.m; sourceTree = "<group>"; };
+ DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchViewController.h; sourceTree = "<group>"; };
+ DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MBXBenchViewController.mm; sourceTree = "<group>"; };
+ DABCABB61CB80692000A7C39 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ DABCABB91CB80692000A7C39 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+ DABCABBB1CB80692000A7C39 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ DABCABBF1CB80717000A7C39 /* locations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = locations.cpp; sourceTree = "<group>"; };
+ DABCABC01CB80717000A7C39 /* locations.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = locations.hpp; sourceTree = "<group>"; };
+ DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = mbgl.xcconfig; path = ../../build/ios/mbgl.xcconfig; sourceTree = "<group>"; };
+ DAC49C621CD07D74009E1AA3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
+ DAD165691CF41981001FF4B9 /* MGLFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature.h; sourceTree = "<group>"; };
+ DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature_Private.h; sourceTree = "<group>"; };
+ DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFeature.mm; sourceTree = "<group>"; };
+ DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLShapeCollection.h; sourceTree = "<group>"; };
+ DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLShapeCollection.m; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ DA1DC9471CB6C1C2006E619F /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA8847D91CBAF91600AB86E3 /* Mapbox.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA2E884E1CC036F400F24E7B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA2E88561CC036F400F24E7B /* Mapbox.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA8847CE1CBAF91600AB86E3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DAABF73D1CBC59BB005B1825 /* libmbgl-core.a in Frameworks */,
+ DAABF73E1CBC59BB005B1825 /* libmbgl-platform-ios.a in Frameworks */,
+ DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */,
+ DAA4E4051CBB5C9E00178DFB /* ImageIO.framework in Frameworks */,
+ DAA4E4071CBB5CBF00178DFB /* MobileCoreServices.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DAA4E4101CBB71D400178DFB /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DABCABA51CB80692000A7C39 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 402E9DE21CD3A56500FD4519 /* Playground */ = {
+ isa = PBXGroup;
+ children = (
+ 402E9DE01CD2C76200FD4519 /* Mapbox.playground */,
+ );
+ name = Playground;
+ sourceTree = "<group>";
+ };
+ DA1DC9411CB6C1C2006E619F = {
+ isa = PBXGroup;
+ children = (
+ 402E9DE21CD3A56500FD4519 /* Playground */,
+ DA1DC94C1CB6C1C2006E619F /* Demo App */,
+ DABCABA91CB80692000A7C39 /* Benchmarking App */,
+ DA8847D31CBAF91600AB86E3 /* SDK */,
+ DA2E88521CC036F400F24E7B /* SDK Tests */,
+ DA1DC9921CB6DF24006E619F /* Frameworks */,
+ DAC07C951CBB2CAD000CB309 /* Configuration */,
+ DA1DC94B1CB6C1C2006E619F /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ DA1DC94B1CB6C1C2006E619F /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */,
+ DABCABA81CB80692000A7C39 /* Bench GL.app */,
+ DA8847D21CBAF91600AB86E3 /* Mapbox.framework */,
+ DAA4E4131CBB71D400178DFB /* libMapbox.a */,
+ DA2E88511CC036F400F24E7B /* test.xctest */,
+ DA8933D51CCD306400E68420 /* Mapbox.bundle */,
+ DA25D5B91CCD9EDE00607828 /* Settings.bundle */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ DA1DC94C1CB6C1C2006E619F /* Demo App */ = {
+ isa = PBXGroup;
+ children = (
+ DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */,
+ DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */,
+ 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */,
+ 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */,
+ DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */,
+ DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */,
+ DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */,
+ DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */,
+ DA1DC9531CB6C1C2006E619F /* MBXViewController.h */,
+ DA1DC99A1CB6E064006E619F /* MBXViewController.m */,
+ DA821D051CCC6D59007508D4 /* Main.storyboard */,
+ DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */,
+ DA1DC99E1CB6E088006E619F /* Assets.xcassets */,
+ DA1DC96C1CB6C6CE006E619F /* points.geojson */,
+ DA1DC96D1CB6C6CE006E619F /* polyline.geojson */,
+ DA1DC96F1CB6C6CE006E619F /* threestates.geojson */,
+ DA1DC95E1CB6C1C2006E619F /* Info.plist */,
+ DA1DC99C1CB6E076006E619F /* Default-568h@2x.png */,
+ DA1DC94D1CB6C1C2006E619F /* Supporting Files */,
+ );
+ name = "Demo App";
+ path = app;
+ sourceTree = "<group>";
+ };
+ DA1DC94D1CB6C1C2006E619F /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ DA1DC9961CB6E046006E619F /* main.m */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ DA1DC9921CB6DF24006E619F /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ DAABF73B1CBC59BB005B1825 /* libmbgl-core.a */,
+ DAABF73C1CBC59BB005B1825 /* libmbgl-platform-ios.a */,
+ DAA4E4021CBB5C2F00178DFB /* CoreGraphics.framework */,
+ DA27C24D1CBB3811000B0ECD /* GLKit.framework */,
+ DAA4E4041CBB5C9E00178DFB /* ImageIO.framework */,
+ DAA4E4061CBB5CBF00178DFB /* MobileCoreServices.framework */,
+ DA4A26961CB6E795000B7809 /* Mapbox.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ DA25D5BA1CCD9EDE00607828 /* Example Settings Bundle */ = {
+ isa = PBXGroup;
+ children = (
+ DA25D5BF1CCD9F8400607828 /* Root.plist */,
+ DA25D5C41CCDA06800607828 /* Root.strings */,
+ );
+ name = "Example Settings Bundle";
+ path = Settings.bundle;
+ sourceTree = "<group>";
+ };
+ DA2E88521CC036F400F24E7B /* SDK Tests */ = {
+ isa = PBXGroup;
+ children = (
+ DA35A2C31CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m */,
+ DA35A2C41CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m */,
+ DA35A2A91CCA058D00E826B2 /* MGLCoordinateFormatterTests.m */,
+ DA0CD58F1CF56F6A00A5F5A5 /* MGLFeatureTests.mm */,
+ DA2E885C1CC0382C00F24E7B /* MGLGeometryTests.mm */,
+ DA2E885D1CC0382C00F24E7B /* MGLOfflinePackTests.m */,
+ DA2E885E1CC0382C00F24E7B /* MGLOfflineRegionTests.m */,
+ DA2E885F1CC0382C00F24E7B /* MGLOfflineStorageTests.m */,
+ DA2E88601CC0382C00F24E7B /* MGLStyleTests.mm */,
+ DA2E88551CC036F400F24E7B /* Info.plist */,
+ );
+ name = "SDK Tests";
+ path = test;
+ sourceTree = "<group>";
+ };
+ DA8847D31CBAF91600AB86E3 /* SDK */ = {
+ isa = PBXGroup;
+ children = (
+ DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */,
+ DA8847DE1CBAFA3E00AB86E3 /* Foundation */,
+ DA8933B91CCD2C6700E68420 /* Foundation Resources */,
+ DA8848331CBAFB2A00AB86E3 /* Kit */,
+ DA8848621CBAFCC100AB86E3 /* Kit Resources */,
+ DA25D5BA1CCD9EDE00607828 /* Example Settings Bundle */,
+ DA8847D61CBAF91600AB86E3 /* Info.plist */,
+ DA8933F11CCD3FD700E68420 /* Info-static.plist */,
+ );
+ name = SDK;
+ path = framework;
+ sourceTree = "<group>";
+ };
+ DA8847DE1CBAFA3E00AB86E3 /* Foundation */ = {
+ isa = PBXGroup;
+ children = (
+ DAD165831CF4CFED001FF4B9 /* Categories */,
+ DAD165801CF4CF9A001FF4B9 /* Formatters */,
+ DAD165811CF4CFC4001FF4B9 /* Geometry */,
+ DAD165821CF4CFE3001FF4B9 /* Offline Maps */,
+ DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */,
+ DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */,
+ DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */,
+ DA8847E21CBAFA5100AB86E3 /* MGLMapCamera.h */,
+ DA8848031CBAFA6200AB86E3 /* MGLMapCamera.mm */,
+ DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */,
+ DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */,
+ DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */,
+ DA8848111CBAFA6200AB86E3 /* MGLTypes.m */,
+ DA8848911CBB049300AB86E3 /* reachability */,
+ );
+ name = Foundation;
+ path = ../darwin/src;
+ sourceTree = SOURCE_ROOT;
+ };
+ DA8848331CBAFB2A00AB86E3 /* Kit */ = {
+ isa = PBXGroup;
+ children = (
+ DAD165841CF4D06B001FF4B9 /* Annotations */,
+ DAD165851CF4D08B001FF4B9 /* Telemetry */,
+ DA8848361CBAFB8500AB86E3 /* MGLMapView.h */,
+ DA17BE2F1CC4BAC300402C41 /* MGLMapView_Internal.h */,
+ DA8848371CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h */,
+ DA8848381CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h */,
+ DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */,
+ DA88484A1CBAFB9800AB86E3 /* MGLMapView.mm */,
+ DA88487F1CBB033F00AB86E3 /* Fabric */,
+ DA8848881CBB036000AB86E3 /* SMCalloutView */,
+ );
+ name = Kit;
+ path = src;
+ sourceTree = SOURCE_ROOT;
+ };
+ DA8848621CBAFCC100AB86E3 /* Kit Resources */ = {
+ isa = PBXGroup;
+ children = (
+ DA89339F1CCC951200E68420 /* Localizable.strings */,
+ DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */,
+ DA8848771CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der */,
+ DA8848781CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der */,
+ DA8848791CBAFD5C00AB86E3 /* star_tilestream_net.der */,
+ DA8848631CBAFCC100AB86E3 /* Compass.png */,
+ DA8848641CBAFCC100AB86E3 /* Compass@2x.png */,
+ DA8848651CBAFCC100AB86E3 /* Compass@3x.png */,
+ DA8848661CBAFCC100AB86E3 /* default_marker.png */,
+ DA8848671CBAFCC100AB86E3 /* default_marker@2x.png */,
+ DA8848681CBAFCC100AB86E3 /* default_marker@3x.png */,
+ DA8848691CBAFCC100AB86E3 /* mapbox.png */,
+ DA88486A1CBAFCC100AB86E3 /* mapbox@2x.png */,
+ DA88486B1CBAFCC100AB86E3 /* mapbox@3x.png */,
+ DA8933EF1CCD387900E68420 /* strip-frameworks.sh */,
+ );
+ name = "Kit Resources";
+ path = resources;
+ sourceTree = SOURCE_ROOT;
+ };
+ DA88487F1CBB033F00AB86E3 /* Fabric */ = {
+ isa = PBXGroup;
+ children = (
+ DA8848831CBB033F00AB86E3 /* Fabric.h */,
+ DA8848821CBB033F00AB86E3 /* Fabric+FABKits.h */,
+ DA8848801CBB033F00AB86E3 /* FABAttributes.h */,
+ DA8848811CBB033F00AB86E3 /* FABKitProtocol.h */,
+ );
+ name = Fabric;
+ path = ../vendor/Fabric;
+ sourceTree = "<group>";
+ };
+ DA8848881CBB036000AB86E3 /* SMCalloutView */ = {
+ isa = PBXGroup;
+ children = (
+ DA8848891CBB037E00AB86E3 /* SMCalloutView.h */,
+ DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */,
+ );
+ name = SMCalloutView;
+ path = ../vendor/SMCalloutView;
+ sourceTree = "<group>";
+ };
+ DA8848911CBB049300AB86E3 /* reachability */ = {
+ isa = PBXGroup;
+ children = (
+ DA88488D1CBB047F00AB86E3 /* reachability.h */,
+ DA88488F1CBB048E00AB86E3 /* reachability.m */,
+ );
+ name = reachability;
+ path = ..;
+ sourceTree = "<group>";
+ };
+ DA8933B91CCD2C6700E68420 /* Foundation Resources */ = {
+ isa = PBXGroup;
+ children = (
+ DA8933BA1CCD2CA100E68420 /* Foundation.strings */,
+ DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */,
+ );
+ name = "Foundation Resources";
+ path = ../../darwin/resources;
+ sourceTree = "<group>";
+ };
+ DA8963321CC5498400684375 /* Fixtures */ = {
+ isa = PBXGroup;
+ children = (
+ DA8963331CC549A100684375 /* glyphs */,
+ DA8963341CC549A100684375 /* sprites */,
+ DA8963351CC549A100684375 /* styles */,
+ DA8963361CC549A100684375 /* tiles */,
+ );
+ name = Fixtures;
+ path = assets;
+ sourceTree = "<group>";
+ };
+ DABCABA91CB80692000A7C39 /* Benchmarking App */ = {
+ isa = PBXGroup;
+ children = (
+ DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */,
+ DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */,
+ DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */,
+ DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */,
+ DABCABBF1CB80717000A7C39 /* locations.cpp */,
+ DABCABC01CB80717000A7C39 /* locations.hpp */,
+ DABCABB61CB80692000A7C39 /* Assets.xcassets */,
+ DA8963321CC5498400684375 /* Fixtures */,
+ DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */,
+ DABCABBB1CB80692000A7C39 /* Info.plist */,
+ DABCABAA1CB80692000A7C39 /* Supporting Files */,
+ );
+ name = "Benchmarking App";
+ path = benchmark;
+ sourceTree = "<group>";
+ };
+ DABCABAA1CB80692000A7C39 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ DABCABAB1CB80692000A7C39 /* main.m */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ DAC07C951CBB2CAD000CB309 /* Configuration */ = {
+ isa = PBXGroup;
+ children = (
+ DA35A2D11CCAB25200E826B2 /* jazzy.yml */,
+ DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */,
+ );
+ name = Configuration;
+ sourceTree = "<group>";
+ };
+ DAD165801CF4CF9A001FF4B9 /* Formatters */ = {
+ isa = PBXGroup;
+ children = (
+ DA35A2BA1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h */,
+ DA35A2B71CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m */,
+ DA35A2AF1CCA141D00E826B2 /* MGLCompassDirectionFormatter.h */,
+ DA35A2B01CCA141D00E826B2 /* MGLCompassDirectionFormatter.m */,
+ DA35A29D1CC9E94C00E826B2 /* MGLCoordinateFormatter.h */,
+ DA35A2A01CC9E95F00E826B2 /* MGLCoordinateFormatter.m */,
+ );
+ name = Formatters;
+ sourceTree = "<group>";
+ };
+ DAD165811CF4CFC4001FF4B9 /* Geometry */ = {
+ isa = PBXGroup;
+ children = (
+ DA8847E01CBAFA5100AB86E3 /* MGLAnnotation.h */,
+ DAD165691CF41981001FF4B9 /* MGLFeature.h */,
+ DAD1656A1CF41981001FF4B9 /* MGLFeature_Private.h */,
+ DAD1656B1CF41981001FF4B9 /* MGLFeature.mm */,
+ DA8847E11CBAFA5100AB86E3 /* MGLGeometry.h */,
+ DA8848011CBAFA6200AB86E3 /* MGLGeometry_Private.h */,
+ DA8848021CBAFA6200AB86E3 /* MGLGeometry.mm */,
+ DA8847E31CBAFA5100AB86E3 /* MGLMultiPoint.h */,
+ DA8848041CBAFA6200AB86E3 /* MGLMultiPoint_Private.h */,
+ DA8848051CBAFA6200AB86E3 /* MGLMultiPoint.mm */,
+ DA8847E71CBAFA5100AB86E3 /* MGLOverlay.h */,
+ DA8847E81CBAFA5100AB86E3 /* MGLPointAnnotation.h */,
+ DA88480B1CBAFA6200AB86E3 /* MGLPointAnnotation.m */,
+ DA8847E91CBAFA5100AB86E3 /* MGLPolygon.h */,
+ DA88480C1CBAFA6200AB86E3 /* MGLPolygon.mm */,
+ DA8847EA1CBAFA5100AB86E3 /* MGLPolyline.h */,
+ DA88480D1CBAFA6200AB86E3 /* MGLPolyline.mm */,
+ DA8847EB1CBAFA5100AB86E3 /* MGLShape.h */,
+ DA88480E1CBAFA6200AB86E3 /* MGLShape.m */,
+ DAD165761CF4CDFF001FF4B9 /* MGLShapeCollection.h */,
+ DAD165771CF4CDFF001FF4B9 /* MGLShapeCollection.m */,
+ );
+ name = Geometry;
+ sourceTree = "<group>";
+ };
+ DAD165821CF4CFE3001FF4B9 /* Offline Maps */ = {
+ isa = PBXGroup;
+ children = (
+ DA8847E41CBAFA5100AB86E3 /* MGLOfflinePack.h */,
+ DA8848061CBAFA6200AB86E3 /* MGLOfflinePack_Private.h */,
+ DA8848071CBAFA6200AB86E3 /* MGLOfflinePack.mm */,
+ DA8847E51CBAFA5100AB86E3 /* MGLOfflineRegion.h */,
+ DA8848081CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h */,
+ DA8847E61CBAFA5100AB86E3 /* MGLOfflineStorage.h */,
+ DA8848091CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h */,
+ DA88480A1CBAFA6200AB86E3 /* MGLOfflineStorage.mm */,
+ DA8847ED1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h */,
+ DA8848101CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm */,
+ );
+ name = "Offline Maps";
+ sourceTree = "<group>";
+ };
+ DAD165831CF4CFED001FF4B9 /* Categories */ = {
+ isa = PBXGroup;
+ children = (
+ DA8848121CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h */,
+ DA8848131CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m */,
+ DA8848141CBAFA6200AB86E3 /* NSException+MGLAdditions.h */,
+ DA8848151CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.h */,
+ DA8848161CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m */,
+ DA8848171CBAFA6200AB86E3 /* NSString+MGLAdditions.h */,
+ DA8848181CBAFA6200AB86E3 /* NSString+MGLAdditions.m */,
+ DA35A2C71CCAAAD200E826B2 /* NSValue+MGLAdditions.h */,
+ DA35A2C81CCAAAD200E826B2 /* NSValue+MGLAdditions.m */,
+ );
+ name = Categories;
+ sourceTree = "<group>";
+ };
+ DAD165841CF4D06B001FF4B9 /* Annotations */ = {
+ isa = PBXGroup;
+ children = (
+ 40EDA1BD1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.h */,
+ 40EDA1BE1CFE0D4A00D9EA68 /* MGLAnnotationContainerView.m */,
+ 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */,
+ 4018B1C51CDC277F00F666AF /* MGLAnnotationView.h */,
+ 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */,
+ DA8848341CBAFB8500AB86E3 /* MGLAnnotationImage.h */,
+ DA8848401CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h */,
+ DA8848411CBAFB9800AB86E3 /* MGLAnnotationImage.m */,
+ DA8848351CBAFB8500AB86E3 /* MGLCalloutView.h */,
+ DA8848441CBAFB9800AB86E3 /* MGLCompactCalloutView.h */,
+ DA8848451CBAFB9800AB86E3 /* MGLCompactCalloutView.m */,
+ DA8848391CBAFB8500AB86E3 /* MGLUserLocation.h */,
+ DA88484B1CBAFB9800AB86E3 /* MGLUserLocation_Private.h */,
+ DA88484C1CBAFB9800AB86E3 /* MGLUserLocation.m */,
+ DA88484D1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h */,
+ DA88484E1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m */,
+ );
+ name = Annotations;
+ sourceTree = "<group>";
+ };
+ DAD165851CF4D08B001FF4B9 /* Telemetry */ = {
+ isa = PBXGroup;
+ children = (
+ DA8848421CBAFB9800AB86E3 /* MGLAPIClient.h */,
+ DA8848431CBAFB9800AB86E3 /* MGLAPIClient.m */,
+ DA8848461CBAFB9800AB86E3 /* MGLLocationManager.h */,
+ DA8848471CBAFB9800AB86E3 /* MGLLocationManager.m */,
+ DA8848481CBAFB9800AB86E3 /* MGLMapboxEvents.h */,
+ DA8848491CBAFB9800AB86E3 /* MGLMapboxEvents.m */,
+ );
+ name = Telemetry;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ DA8847CF1CBAF91600AB86E3 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */,
+ DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
+ DA8848861CBB033F00AB86E3 /* Fabric+FABKits.h in Headers */,
+ DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */,
+ DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */,
+ 4018B1C91CDC288A00F666AF /* MGLAnnotationView_Private.h in Headers */,
+ DA88482C1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h in Headers */,
+ DA88488E1CBB047F00AB86E3 /* reachability.h in Headers */,
+ DA8848231CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h in Headers */,
+ DA88483B1CBAFB8500AB86E3 /* MGLCalloutView.h in Headers */,
+ DA8848531CBAFB9800AB86E3 /* MGLCompactCalloutView.h in Headers */,
+ DA8847FB1CBAFA5100AB86E3 /* MGLShape.h in Headers */,
+ DA88485A1CBAFB9800AB86E3 /* MGLUserLocation_Private.h in Headers */,
+ DA27C24F1CBB4C11000B0ECD /* MGLAccountManager_Private.h in Headers */,
+ DA8847FC1CBAFA5100AB86E3 /* MGLStyle.h in Headers */,
+ DA8847F01CBAFA5100AB86E3 /* MGLAnnotation.h in Headers */,
+ DA88483E1CBAFB8500AB86E3 /* MGLMapView+MGLCustomStyleLayerAdditions.h in Headers */,
+ 4018B1CA1CDC288E00F666AF /* MGLAnnotationView.h in Headers */,
+ DA8847EF1CBAFA5100AB86E3 /* MGLAccountManager.h in Headers */,
+ DA8848511CBAFB9800AB86E3 /* MGLAPIClient.h in Headers */,
+ DA35A2C91CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */,
+ DA8848571CBAFB9800AB86E3 /* MGLMapboxEvents.h in Headers */,
+ DA8848311CBAFA6200AB86E3 /* NSString+MGLAdditions.h in Headers */,
+ DA8847F41CBAFA5100AB86E3 /* MGLOfflinePack.h in Headers */,
+ DA88482E1CBAFA6200AB86E3 /* NSException+MGLAdditions.h in Headers */,
+ DA8848551CBAFB9800AB86E3 /* MGLLocationManager.h in Headers */,
+ DA88483F1CBAFB8500AB86E3 /* MGLUserLocation.h in Headers */,
+ DA88483D1CBAFB8500AB86E3 /* MGLMapView+IBAdditions.h in Headers */,
+ DA17BE301CC4BAC300402C41 /* MGLMapView_Internal.h in Headers */,
+ DAD165781CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */,
+ DA88481E1CBAFA6200AB86E3 /* MGLMultiPoint_Private.h in Headers */,
+ DA35A29E1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
+ DA8847F71CBAFA5100AB86E3 /* MGLOverlay.h in Headers */,
+ DA35A2B11CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
+ DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */,
+ DA8847FE1CBAFA5100AB86E3 /* MGLTypes.h in Headers */,
+ DA8847F11CBAFA5100AB86E3 /* MGLGeometry.h in Headers */,
+ DA8848221CBAFA6200AB86E3 /* MGLOfflineRegion_Private.h in Headers */,
+ DA8847F91CBAFA5100AB86E3 /* MGLPolygon.h in Headers */,
+ DA8847F81CBAFA5100AB86E3 /* MGLPointAnnotation.h in Headers */,
+ DA8847F31CBAFA5100AB86E3 /* MGLMultiPoint.h in Headers */,
+ DAD1656C1CF41981001FF4B9 /* MGLFeature.h in Headers */,
+ 40EDA1C01CFE0E0200D9EA68 /* MGLAnnotationContainerView.h in Headers */,
+ DA88484F1CBAFB9800AB86E3 /* MGLAnnotationImage_Private.h in Headers */,
+ DA8847F21CBAFA5100AB86E3 /* MGLMapCamera.h in Headers */,
+ DA8847F51CBAFA5100AB86E3 /* MGLOfflineRegion.h in Headers */,
+ DA737EE11D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
+ DA8848851CBB033F00AB86E3 /* FABKitProtocol.h in Headers */,
+ DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */,
+ DA88485C1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h in Headers */,
+ DA8848871CBB033F00AB86E3 /* Fabric.h in Headers */,
+ DA8848841CBB033F00AB86E3 /* FABAttributes.h in Headers */,
+ DA8847FD1CBAFA5100AB86E3 /* MGLTilePyramidOfflineRegion.h in Headers */,
+ DA88482F1CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.h in Headers */,
+ DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */,
+ DA8847F61CBAFA5100AB86E3 /* MGLOfflineStorage.h in Headers */,
+ DAD1656E1CF41981001FF4B9 /* MGLFeature_Private.h in Headers */,
+ DA88483C1CBAFB8500AB86E3 /* MGLMapView.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DABFB85C1CBE99DE00D62B32 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA35A2CA1CCAAAD200E826B2 /* NSValue+MGLAdditions.h in Headers */,
+ DABFB85E1CBE99E500D62B32 /* MGLAnnotation.h in Headers */,
+ DABFB8641CBE99E500D62B32 /* MGLOfflineStorage.h in Headers */,
+ DAD165791CF4CDFF001FF4B9 /* MGLShapeCollection.h in Headers */,
+ DA35A29F1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
+ DABFB8711CBE9A0F00D62B32 /* MGLMapView+MGLCustomStyleLayerAdditions.h in Headers */,
+ DABFB8611CBE99E500D62B32 /* MGLMultiPoint.h in Headers */,
+ DABFB86D1CBE9A0F00D62B32 /* MGLAnnotationImage.h in Headers */,
+ DABFB8721CBE9A0F00D62B32 /* MGLUserLocation.h in Headers */,
+ DABFB8661CBE99E500D62B32 /* MGLPointAnnotation.h in Headers */,
+ DABFB8621CBE99E500D62B32 /* MGLOfflinePack.h in Headers */,
+ DAD1656D1CF41981001FF4B9 /* MGLFeature.h in Headers */,
+ DA17BE311CC4BDAA00402C41 /* MGLMapView_Internal.h in Headers */,
+ DABFB86C1CBE99E500D62B32 /* MGLTypes.h in Headers */,
+ DABFB8691CBE99E500D62B32 /* MGLShape.h in Headers */,
+ DABFB8701CBE9A0F00D62B32 /* MGLMapView+IBAdditions.h in Headers */,
+ DABFB8671CBE99E500D62B32 /* MGLPolygon.h in Headers */,
+ DABFB8651CBE99E500D62B32 /* MGLOverlay.h in Headers */,
+ DABFB8681CBE99E500D62B32 /* MGLPolyline.h in Headers */,
+ DABFB86F1CBE9A0F00D62B32 /* MGLMapView.h in Headers */,
+ DABFB8631CBE99E500D62B32 /* MGLOfflineRegion.h in Headers */,
+ DA35A2B21CCA141D00E826B2 /* MGLCompassDirectionFormatter.h in Headers */,
+ DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */,
+ DABFB86B1CBE99E500D62B32 /* MGLTilePyramidOfflineRegion.h in Headers */,
+ 4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */,
+ DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */,
+ DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */,
+ DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
+ DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */,
+ DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */,
+ DA737EE21D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
+ DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ DA1DC9491CB6C1C2006E619F /* iosapp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */;
+ buildPhases = (
+ DA1DC9461CB6C1C2006E619F /* Sources */,
+ DA1DC9471CB6C1C2006E619F /* Frameworks */,
+ DA1DC9481CB6C1C2006E619F /* Resources */,
+ DA4A269A1CB6F5D3000B7809 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ DA8847D81CBAF91600AB86E3 /* PBXTargetDependency */,
+ );
+ name = iosapp;
+ productName = iosapp;
+ productReference = DA1DC94A1CB6C1C2006E619F /* Mapbox GL.app */;
+ productType = "com.apple.product-type.application";
+ };
+ DA25D5B81CCD9EDE00607828 /* settings */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DA25D5BE1CCD9EDE00607828 /* Build configuration list for PBXNativeTarget "settings" */;
+ buildPhases = (
+ DA25D5B71CCD9EDE00607828 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = settings;
+ productName = settings;
+ productReference = DA25D5B91CCD9EDE00607828 /* Settings.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
+ DA2E88501CC036F400F24E7B /* test */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */;
+ buildPhases = (
+ DA2E884D1CC036F400F24E7B /* Sources */,
+ DA2E884E1CC036F400F24E7B /* Frameworks */,
+ DA2E884F1CC036F400F24E7B /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ DA2E88581CC036F400F24E7B /* PBXTargetDependency */,
+ );
+ name = test;
+ productName = test;
+ productReference = DA2E88511CC036F400F24E7B /* test.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ DA8847D11CBAF91600AB86E3 /* dynamic */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */;
+ buildPhases = (
+ DA8847CD1CBAF91600AB86E3 /* Sources */,
+ DA8847CE1CBAF91600AB86E3 /* Frameworks */,
+ DA8847CF1CBAF91600AB86E3 /* Headers */,
+ DA8847D01CBAF91600AB86E3 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ DA25D5C81CCDA0C100607828 /* PBXTargetDependency */,
+ );
+ name = dynamic;
+ productName = framework;
+ productReference = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+ DA8933D41CCD306400E68420 /* bundle */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */;
+ buildPhases = (
+ DA8933D31CCD306400E68420 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = bundle;
+ productName = bundle;
+ productReference = DA8933D51CCD306400E68420 /* Mapbox.bundle */;
+ productType = "com.apple.product-type.bundle";
+ };
+ DAA4E4121CBB71D400178DFB /* static */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */;
+ buildPhases = (
+ DAA4E40F1CBB71D400178DFB /* Sources */,
+ DAA4E4101CBB71D400178DFB /* Frameworks */,
+ DAA4E4111CBB71D400178DFB /* CopyFiles */,
+ DABFB85C1CBE99DE00D62B32 /* Headers */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */,
+ DA25D5CC1CCDA0CC00607828 /* PBXTargetDependency */,
+ );
+ name = static;
+ productName = static;
+ productReference = DAA4E4131CBB71D400178DFB /* libMapbox.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+ DABCABA71CB80692000A7C39 /* bench */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */;
+ buildPhases = (
+ DABCABA41CB80692000A7C39 /* Sources */,
+ DABCABA51CB80692000A7C39 /* Frameworks */,
+ DABCABA61CB80692000A7C39 /* Resources */,
+ DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */,
+ );
+ name = bench;
+ productName = bench;
+ productReference = DABCABA81CB80692000A7C39 /* Bench GL.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ DA1DC9421CB6C1C2006E619F /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ CLASSPREFIX = MBX;
+ LastUpgradeCheck = 0730;
+ ORGANIZATIONNAME = Mapbox;
+ TargetAttributes = {
+ DA1DC9491CB6C1C2006E619F = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DA25D5B81CCD9EDE00607828 = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DA2E88501CC036F400F24E7B = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DA8847D11CBAF91600AB86E3 = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DA8933D41CCD306400E68420 = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DAA4E4121CBB71D400178DFB = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ DABCABA71CB80692000A7C39 = {
+ CreatedOnToolsVersion = 7.3;
+ };
+ };
+ };
+ buildConfigurationList = DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = DA1DC9411CB6C1C2006E619F;
+ productRefGroup = DA1DC94B1CB6C1C2006E619F /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ DA1DC9491CB6C1C2006E619F /* iosapp */,
+ DABCABA71CB80692000A7C39 /* bench */,
+ DA8847D11CBAF91600AB86E3 /* dynamic */,
+ DAA4E4121CBB71D400178DFB /* static */,
+ DA8933D41CCD306400E68420 /* bundle */,
+ DA25D5B81CCD9EDE00607828 /* settings */,
+ DA2E88501CC036F400F24E7B /* test */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ DA1DC9481CB6C1C2006E619F /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA25D5CD1CCDA11500607828 /* Settings.bundle in Resources */,
+ DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */,
+ DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */,
+ DA1DC99D1CB6E076006E619F /* Default-568h@2x.png in Resources */,
+ DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */,
+ DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */,
+ DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */,
+ DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA25D5B71CCD9EDE00607828 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA25D5C61CCDA06800607828 /* Root.strings in Resources */,
+ DA25D5C01CCD9F8400607828 /* Root.plist in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA2E884F1CC036F400F24E7B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA8847D01CBAF91600AB86E3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA8848731CBAFCC100AB86E3 /* mapbox.png in Resources */,
+ DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */,
+ DA8848741CBAFCC100AB86E3 /* mapbox@2x.png in Resources */,
+ DA88487A1CBAFD5C00AB86E3 /* api_mapbox_com-digicert.der in Resources */,
+ DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */,
+ DA88486D1CBAFCC100AB86E3 /* Compass.png in Resources */,
+ DA8848721CBAFCC100AB86E3 /* default_marker@3x.png in Resources */,
+ DA88487C1CBAFD5C00AB86E3 /* star_tilestream_net.der in Resources */,
+ DA88486F1CBAFCC100AB86E3 /* Compass@3x.png in Resources */,
+ DA88486E1CBAFCC100AB86E3 /* Compass@2x.png in Resources */,
+ DA8848701CBAFCC100AB86E3 /* default_marker.png in Resources */,
+ DA8848711CBAFCC100AB86E3 /* default_marker@2x.png in Resources */,
+ DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */,
+ DA8848751CBAFCC100AB86E3 /* mapbox@3x.png in Resources */,
+ DA88487B1CBAFD5C00AB86E3 /* api_mapbox_com-geotrust.der in Resources */,
+ DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */,
+ DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA8933D31CCD306400E68420 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */,
+ DA8933E11CCD31DF00E68420 /* Compass.png in Resources */,
+ DA8933E21CCD31DF00E68420 /* Compass@2x.png in Resources */,
+ DA8933E31CCD31DF00E68420 /* Compass@3x.png in Resources */,
+ DA8933E41CCD31DF00E68420 /* default_marker.png in Resources */,
+ DA8933E51CCD31DF00E68420 /* default_marker@2x.png in Resources */,
+ DA8933E61CCD31DF00E68420 /* default_marker@3x.png in Resources */,
+ DA8933E71CCD31DF00E68420 /* mapbox.png in Resources */,
+ DA8933E81CCD31DF00E68420 /* mapbox@2x.png in Resources */,
+ DA8933E91CCD31DF00E68420 /* mapbox@3x.png in Resources */,
+ DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */,
+ DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */,
+ DA8933DD1CCD31D400E68420 /* api_mapbox_com-digicert.der in Resources */,
+ DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */,
+ DA8933DE1CCD31D400E68420 /* api_mapbox_com-geotrust.der in Resources */,
+ DA8933DF1CCD31D400E68420 /* star_tilestream_net.der in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DABCABA61CB80692000A7C39 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA89633A1CC549A100684375 /* tiles in Resources */,
+ DA8963391CC549A100684375 /* styles in Resources */,
+ DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */,
+ DA8963381CC549A100684375 /* sprites in Resources */,
+ DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */,
+ DA8963371CC549A100684375 /* glyphs in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ DA1DC9461CB6C1C2006E619F /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA1DC9971CB6E046006E619F /* main.m in Sources */,
+ DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */,
+ DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */,
+ DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */,
+ DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */,
+ 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA2E884D1CC036F400F24E7B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA2E88631CC0382C00F24E7B /* MGLOfflineRegionTests.m in Sources */,
+ DA2E88651CC0382C00F24E7B /* MGLStyleTests.mm in Sources */,
+ DA2E88611CC0382C00F24E7B /* MGLGeometryTests.mm in Sources */,
+ DA2E88641CC0382C00F24E7B /* MGLOfflineStorageTests.m in Sources */,
+ DA35A2C61CCA9F8300E826B2 /* MGLCompassDirectionFormatterTests.m in Sources */,
+ DA35A2C51CCA9F8300E826B2 /* MGLClockDirectionFormatterTests.m in Sources */,
+ DA2E88621CC0382C00F24E7B /* MGLOfflinePackTests.m in Sources */,
+ DA35A2AA1CCA058D00E826B2 /* MGLCoordinateFormatterTests.m in Sources */,
+ DA0CD5901CF56F6A00A5F5A5 /* MGLFeatureTests.mm in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DA8847CD1CBAF91600AB86E3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DA88485D1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.m in Sources */,
+ DAD165701CF41981001FF4B9 /* MGLFeature.mm in Sources */,
+ 40EDA1C11CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */,
+ DA8848541CBAFB9800AB86E3 /* MGLCompactCalloutView.m in Sources */,
+ DA8848251CBAFA6200AB86E3 /* MGLPointAnnotation.m in Sources */,
+ DA88482D1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.m in Sources */,
+ DA88485B1CBAFB9800AB86E3 /* MGLUserLocation.m in Sources */,
+ DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */,
+ DA35A2B81CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
+ DAD1657A1CF4CDFF001FF4B9 /* MGLShapeCollection.m in Sources */,
+ DA8848901CBB048E00AB86E3 /* reachability.m in Sources */,
+ DA8848211CBAFA6200AB86E3 /* MGLOfflinePack.mm in Sources */,
+ DA8848591CBAFB9800AB86E3 /* MGLMapView.mm in Sources */,
+ DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */,
+ DA8848281CBAFA6200AB86E3 /* MGLShape.m in Sources */,
+ DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
+ DA35A2CB1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
+ DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */,
+ DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
+ DA8848291CBAFA6200AB86E3 /* MGLStyle.mm in Sources */,
+ DA88481C1CBAFA6200AB86E3 /* MGLGeometry.mm in Sources */,
+ DA88481F1CBAFA6200AB86E3 /* MGLMultiPoint.mm in Sources */,
+ DA88482B1CBAFA6200AB86E3 /* MGLTypes.m in Sources */,
+ 4018B1C71CDC287F00F666AF /* MGLAnnotationView.mm in Sources */,
+ DA88481D1CBAFA6200AB86E3 /* MGLMapCamera.mm in Sources */,
+ DA8848261CBAFA6200AB86E3 /* MGLPolygon.mm in Sources */,
+ DA8848521CBAFB9800AB86E3 /* MGLAPIClient.m in Sources */,
+ DA8848301CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m in Sources */,
+ DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */,
+ DA88482A1CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm in Sources */,
+ DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */,
+ DA8848271CBAFA6200AB86E3 /* MGLPolyline.mm in Sources */,
+ DA8848581CBAFB9800AB86E3 /* MGLMapboxEvents.m in Sources */,
+ DA8848561CBAFB9800AB86E3 /* MGLLocationManager.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DAA4E40F1CBB71D400178DFB /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DAA4E4221CBB730400178DFB /* MGLPointAnnotation.m in Sources */,
+ DAD165711CF41981001FF4B9 /* MGLFeature.mm in Sources */,
+ 40EDA1C21CFE0E0500D9EA68 /* MGLAnnotationContainerView.m in Sources */,
+ DAA4E4291CBB730400178DFB /* NSBundle+MGLAdditions.m in Sources */,
+ DAA4E42E1CBB730400178DFB /* MGLAPIClient.m in Sources */,
+ DAA4E4201CBB730400178DFB /* MGLOfflinePack.mm in Sources */,
+ DAA4E4331CBB730400178DFB /* MGLUserLocation.m in Sources */,
+ DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */,
+ DA35A2B91CCA9A5D00E826B2 /* MGLClockDirectionFormatter.m in Sources */,
+ DAD1657B1CF4CDFF001FF4B9 /* MGLShapeCollection.m in Sources */,
+ DAA4E4251CBB730400178DFB /* MGLShape.m in Sources */,
+ DAA4E42B1CBB730400178DFB /* NSString+MGLAdditions.m in Sources */,
+ DAA4E4261CBB730400178DFB /* MGLStyle.mm in Sources */,
+ DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */,
+ DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */,
+ DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
+ DA35A2CC1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
+ DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */,
+ DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
+ DAA4E42D1CBB730400178DFB /* MGLAnnotationImage.m in Sources */,
+ DAA4E4301CBB730400178DFB /* MGLLocationManager.m in Sources */,
+ DAA4E4321CBB730400178DFB /* MGLMapView.mm in Sources */,
+ DAA4E41E1CBB730400178DFB /* MGLMapCamera.mm in Sources */,
+ 4018B1C81CDC287F00F666AF /* MGLAnnotationView.mm in Sources */,
+ DAA4E4341CBB730400178DFB /* MGLUserLocationAnnotationView.m in Sources */,
+ DAA4E42C1CBB730400178DFB /* reachability.m in Sources */,
+ DAA4E4311CBB730400178DFB /* MGLMapboxEvents.m in Sources */,
+ DAA4E4231CBB730400178DFB /* MGLPolygon.mm in Sources */,
+ DAA4E42A1CBB730400178DFB /* NSProcessInfo+MGLAdditions.m in Sources */,
+ DAA4E4211CBB730400178DFB /* MGLOfflineStorage.mm in Sources */,
+ DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */,
+ DAA4E4271CBB730400178DFB /* MGLTilePyramidOfflineRegion.mm in Sources */,
+ DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */,
+ DAA4E4241CBB730400178DFB /* MGLPolyline.mm in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DABCABA41CB80692000A7C39 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */,
+ DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */,
+ DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */,
+ DABCABAC1CB80692000A7C39 /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ DA25D5C81CCDA0C100607828 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA25D5B81CCD9EDE00607828 /* settings */;
+ targetProxy = DA25D5C71CCDA0C100607828 /* PBXContainerItemProxy */;
+ };
+ DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA8933D41CCD306400E68420 /* bundle */;
+ targetProxy = DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */;
+ };
+ DA25D5CC1CCDA0CC00607828 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA25D5B81CCD9EDE00607828 /* settings */;
+ targetProxy = DA25D5CB1CCDA0CC00607828 /* PBXContainerItemProxy */;
+ };
+ DA2E88581CC036F400F24E7B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA8847D11CBAF91600AB86E3 /* dynamic */;
+ targetProxy = DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */;
+ };
+ DA8847D81CBAF91600AB86E3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA8847D11CBAF91600AB86E3 /* dynamic */;
+ targetProxy = DA8847D71CBAF91600AB86E3 /* PBXContainerItemProxy */;
+ };
+ DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DA8847D11CBAF91600AB86E3 /* dynamic */;
+ targetProxy = DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ DA25D5C41CCDA06800607828 /* Root.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DA25D5C51CCDA06800607828 /* Base */,
+ );
+ name = Root.strings;
+ sourceTree = "<group>";
+ };
+ DA89339F1CCC951200E68420 /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DA8933A01CCC951200E68420 /* Base */,
+ );
+ name = Localizable.strings;
+ sourceTree = "<group>";
+ };
+ DA8933BA1CCD2CA100E68420 /* Foundation.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DA8933BB1CCD2CA100E68420 /* Base */,
+ );
+ name = Foundation.strings;
+ sourceTree = "<group>";
+ };
+ DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DA8933BE1CCD2CAD00E68420 /* en */,
+ );
+ name = Foundation.stringsdict;
+ sourceTree = "<group>";
+ };
+ DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DABCABB91CB80692000A7C39 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "<group>";
+ };
+ DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */ = {
+ isa = PBXVariantGroup;
+ children = (
+ DAC49C621CD07D74009E1AA3 /* en */,
+ );
+ name = Localizable.stringsdict;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ DA1DC95F1CB6C1C2006E619F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_COMMIT_HASH = deadbeef;
+ CURRENT_SEMANTIC_VERSION = 1.0.0;
+ CURRENT_SHORT_VERSION = 1.0;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SYMROOT = ../../build/ios;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ DA1DC9601CB6C1C2006E619F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_COMMIT_HASH = deadbeef;
+ CURRENT_SEMANTIC_VERSION = 1.0.0;
+ CURRENT_SHORT_VERSION = 1.0;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SYMROOT = ../../build/ios;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ DA1DC9621CB6C1C2006E619F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
+ PRODUCT_NAME = "Mapbox GL";
+ };
+ name = Debug;
+ };
+ DA1DC9631CB6C1C2006E619F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = "$(SRCROOT)/app/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxGL;
+ PRODUCT_NAME = "Mapbox GL";
+ };
+ name = Release;
+ };
+ DA25D5BC1CCD9EDE00607828 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = Settings;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ DA25D5BD1CCD9EDE00607828 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = Settings;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+ DA2E885A1CC036F400F24E7B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ HEADER_SEARCH_PATHS = ../../include;
+ INFOPLIST_FILE = test/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ DA2E885B1CC036F400F24E7B /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ HEADER_SEARCH_PATHS = ../../include;
+ INFOPLIST_FILE = test/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
+ DA8847DB1CBAF91600AB86E3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ HEADER_SEARCH_PATHS = (
+ ../default,
+ ../../include,
+ ../../src,
+ );
+ INFOPLIST_FILE = framework/Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(sqlite_cflags)",
+ "$(zlib_cflags)",
+ "$(rapidjson_cflags)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ OTHER_LDFLAGS = (
+ "$(sqlite_ldflags)",
+ "$(zlib_ldflags)",
+ "$(opengl_ldflags)",
+ "$(geojsonvt_static_libs)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.sdk.ios;
+ PRODUCT_NAME = Mapbox;
+ SKIP_INSTALL = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Debug;
+ };
+ DA8847DC1CBAF91600AB86E3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ CURRENT_PROJECT_VERSION = 1;
+ DEFINES_MODULE = YES;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ HEADER_SEARCH_PATHS = (
+ ../default,
+ ../../include,
+ ../../src,
+ );
+ INFOPLIST_FILE = framework/Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(sqlite_cflags)",
+ "$(zlib_cflags)",
+ "$(rapidjson_cflags)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ OTHER_LDFLAGS = (
+ "$(sqlite_ldflags)",
+ "$(zlib_ldflags)",
+ "$(opengl_ldflags)",
+ "$(geojsonvt_static_libs)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.sdk.ios;
+ PRODUCT_NAME = Mapbox;
+ SKIP_INSTALL = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Release;
+ };
+ DA8933D91CCD306400E68420 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = "framework/Info-static.plist";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.sdk.ios;
+ PRODUCT_NAME = Mapbox;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Debug;
+ };
+ DA8933DA1CCD306400E68420 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INFOPLIST_FILE = "framework/Info-static.plist";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.sdk.ios;
+ PRODUCT_NAME = Mapbox;
+ SKIP_INSTALL = YES;
+ WRAPPER_EXTENSION = bundle;
+ };
+ name = Release;
+ };
+ DAA4E41A1CBB71D500178DFB /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ HEADER_SEARCH_PATHS = (
+ ../default,
+ ../../include,
+ ../../src,
+ );
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(sqlite_cflags)",
+ "$(zlib_cflags)",
+ "$(rapidjson_cflags)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "$(sqlite_ldflags)",
+ "$(zlib_ldflags)",
+ "$(opengl_ldflags)",
+ "$(geojsonvt_static_libs)",
+ );
+ PRODUCT_NAME = Mapbox;
+ PUBLIC_HEADERS_FOLDER_PATH = Headers;
+ SKIP_INSTALL = YES;
+ };
+ name = Debug;
+ };
+ DAA4E41B1CBB71D500178DFB /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DAC07C961CBB2CD6000CB309 /* mbgl.xcconfig */;
+ buildSettings = {
+ HEADER_SEARCH_PATHS = (
+ ../default,
+ ../../include,
+ ../../src,
+ );
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "$(sqlite_cflags)",
+ "$(zlib_cflags)",
+ "$(rapidjson_cflags)",
+ "$(variant_cflags)",
+ "$(geometry_cflags)",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "$(sqlite_ldflags)",
+ "$(zlib_ldflags)",
+ "$(opengl_ldflags)",
+ "$(geojsonvt_static_libs)",
+ );
+ PRODUCT_NAME = Mapbox;
+ PUBLIC_HEADERS_FOLDER_PATH = Headers;
+ SKIP_INSTALL = YES;
+ };
+ name = Release;
+ };
+ DABCABBC1CB80692000A7C39 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = "$(SRCROOT)/benchmark/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.bench;
+ PRODUCT_NAME = "Bench GL";
+ };
+ name = Debug;
+ };
+ DABCABBD1CB80692000A7C39 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = "$(SRCROOT)/benchmark/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.bench;
+ PRODUCT_NAME = "Bench GL";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA1DC95F1CB6C1C2006E619F /* Debug */,
+ DA1DC9601CB6C1C2006E619F /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA1DC9621CB6C1C2006E619F /* Debug */,
+ DA1DC9631CB6C1C2006E619F /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DA25D5BE1CCD9EDE00607828 /* Build configuration list for PBXNativeTarget "settings" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA25D5BC1CCD9EDE00607828 /* Debug */,
+ DA25D5BD1CCD9EDE00607828 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA2E885A1CC036F400F24E7B /* Debug */,
+ DA2E885B1CC036F400F24E7B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA8847DB1CBAF91600AB86E3 /* Debug */,
+ DA8847DC1CBAF91600AB86E3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DA8933D91CCD306400E68420 /* Debug */,
+ DA8933DA1CCD306400E68420 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DAA4E41A1CBB71D500178DFB /* Debug */,
+ DAA4E41B1CBB71D500178DFB /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DABCABBC1CB80692000A7C39 /* Debug */,
+ DABCABBD1CB80692000A7C39 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = DA1DC9421CB6C1C2006E619F /* Project object */;
+}
diff --git a/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000..92ad79b9dd
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:ios.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
new file mode 100644
index 0000000000..26982c0747
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "4E8A9455A3A23B7FD2A8FC52"
+ BuildableName = "All"
+ BlueprintName = "All"
+ ReferencedContainer = "container:../../build/ios/platform/ios/platform.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "NO"
+ buildForProfiling = "NO"
+ buildForArchiving = "NO"
+ buildForAnalyzing = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ <TestableReference
+ skipped = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </TestableReference>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme
new file mode 100644
index 0000000000..bfddf3c6c6
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DABCABA71CB80692000A7C39"
+ BuildableName = "Bench GL.app"
+ BlueprintName = "bench"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DABCABA71CB80692000A7C39"
+ BuildableName = "Bench GL.app"
+ BlueprintName = "bench"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DABCABA71CB80692000A7C39"
+ BuildableName = "Bench GL.app"
+ BlueprintName = "bench"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DABCABA71CB80692000A7C39"
+ BuildableName = "Bench GL.app"
+ BlueprintName = "bench"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme
new file mode 100644
index 0000000000..4b50564e54
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
+ BuildableName = "libMapbox.a"
+ BlueprintName = "static"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "NO"
+ buildForProfiling = "NO"
+ buildForArchiving = "NO"
+ buildForAnalyzing = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ <TestableReference
+ skipped = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </TestableReference>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
new file mode 100644
index 0000000000..b77beb34aa
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "NO"
+ buildForProfiling = "NO"
+ buildForArchiving = "NO"
+ buildForAnalyzing = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ <TestableReference
+ skipped = "NO">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA2E88501CC036F400F24E7B"
+ BuildableName = "test.xctest"
+ BlueprintName = "test"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </TestableReference>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA8847D11CBAF91600AB86E3"
+ BuildableName = "Mapbox.framework"
+ BlueprintName = "dynamic"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme
new file mode 100644
index 0000000000..de74d64314
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DA1DC9491CB6C1C2006E619F"
+ BuildableName = "Mapbox GL.app"
+ BlueprintName = "iosapp"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme
new file mode 100644
index 0000000000..8293b8e2a9
--- /dev/null
+++ b/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "0730"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
+ BuildableName = "libMapbox.a"
+ BlueprintName = "static"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
+ BuildableName = "libMapbox.a"
+ BlueprintName = "static"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
+ BuildableName = "libMapbox.a"
+ BlueprintName = "static"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "DAA4E4121CBB71D400178DFB"
+ BuildableName = "libMapbox.a"
+ BlueprintName = "static"
+ ReferencedContainer = "container:ios.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/platform/ios/ios.xcworkspace/contents.xcworkspacedata b/platform/ios/ios.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000..929ade2fee
--- /dev/null
+++ b/platform/ios/ios.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "group:ios.xcodeproj">
+ </FileRef>
+ <FileRef
+ location = "group:uitest/ios-tests.xcodeproj">
+ </FileRef>
+ <FileRef
+ location = "group:uitest/KIF/KIF.xcodeproj">
+ </FileRef>
+ <FileRef
+ location = "group:../../build/ios/platform/ios/platform.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/platform/ios/ios.xcworkspace/xcshareddata/ios.xcscmblueprint b/platform/ios/ios.xcworkspace/xcshareddata/ios.xcscmblueprint
new file mode 100644
index 0000000000..a86fb58e7b
--- /dev/null
+++ b/platform/ios/ios.xcworkspace/xcshareddata/ios.xcscmblueprint
@@ -0,0 +1,37 @@
+{
+ "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "7E68CB584078A487C0535CC191D3B7551EEE2095",
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
+
+ },
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
+ "10265E242415D473A6A613214DB7AC3EE3D43F93" : 0,
+ "D1BB63D501E0048981F00509C5A268D4AF5FEE4C" : 0,
+ "7E68CB584078A487C0535CC191D3B7551EEE2095" : 0
+ },
+ "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "D6F4212C-91A7-4C87-9973-DF38C92B9C5F",
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
+ "10265E242415D473A6A613214DB7AC3EE3D43F93" : "mapbox-gl-native\/platform\/ios\/test\/KIF\/",
+ "D1BB63D501E0048981F00509C5A268D4AF5FEE4C" : "mapbox-gl-native\/platform\/ios\/vendor\/SMCalloutView\/",
+ "7E68CB584078A487C0535CC191D3B7551EEE2095" : "mapbox-gl-native\/"
+ },
+ "DVTSourceControlWorkspaceBlueprintNameKey" : "ios",
+ "DVTSourceControlWorkspaceBlueprintVersion" : 204,
+ "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "platform\/ios\/ios.xcworkspace",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
+ {
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/kif-framework\/KIF.git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "10265E242415D473A6A613214DB7AC3EE3D43F93"
+ },
+ {
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/mapbox\/mapbox-gl-native.git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "7E68CB584078A487C0535CC191D3B7551EEE2095"
+ },
+ {
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/mapbox\/smcalloutview.git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "D1BB63D501E0048981F00509C5A268D4AF5FEE4C"
+ }
+ ]
+} \ No newline at end of file
diff --git a/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
new file mode 100644
index 0000000000..cb6ecad738
--- /dev/null
+++ b/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+ type = "3"
+ version = "2.0">
+ <Breakpoints>
+ <BreakpointProxy
+ BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
+ <BreakpointContent
+ shouldBeEnabled = "No"
+ ignoreCount = "0"
+ continueAfterRunningActions = "No"
+ scope = "1"
+ stopOnStyle = "0">
+ <Actions>
+ <BreakpointActionProxy
+ ActionExtensionID = "Xcode.BreakpointAction.Sound">
+ <ActionContent
+ soundName = "Basso">
+ </ActionContent>
+ </BreakpointActionProxy>
+ </Actions>
+ </BreakpointContent>
+ </BreakpointProxy>
+ </Breakpoints>
+</Bucket>
diff --git a/platform/ios/jazzy.yml b/platform/ios/jazzy.yml
new file mode 100644
index 0000000000..67d877cda3
--- /dev/null
+++ b/platform/ios/jazzy.yml
@@ -0,0 +1,90 @@
+module: Mapbox
+author: Mapbox
+author_url: https://www.mapbox.com/
+github_url: https://github.com/mapbox/mapbox-gl-native
+dash_url: https://www.mapbox.com/ios-sdk/docsets/Mapbox.xml
+copyright: '© 2014–2016 [Mapbox](https://www.mapbox.com/). See [license](https://github.com/mapbox/mapbox-gl-native/blob/master/LICENSE.md) for more details.'
+
+head: |
+ <link rel='shortcut icon' href='https://www.mapbox.com/img/favicon.ico' type='image/x-icon' />
+
+objc: Yes
+skip_undocumented: Yes
+hide_documentation_coverage: Yes
+umbrella_header: src/Mapbox.h
+framework_root: ../darwin/src
+
+custom_categories:
+ - name: Maps
+ children:
+ - MGLAccountManager
+ - MGLMapCamera
+ - MGLMapDebugMaskOptions
+ - MGLMapView
+ - MGLMapViewDelegate
+ - MGLStyle
+ - MGLStyleDefaultVersion
+ - MGLUserTrackingMode
+ - name: Annotations
+ children:
+ - MGLAnnotation
+ - MGLAnnotationImage
+ - MGLAnnotationVerticalAlignment
+ - MGLAnnotationView
+ - MGLCalloutView
+ - MGLCalloutViewDelegate
+ - MGLMultiPoint
+ - MGLMultiPolygon
+ - MGLMultiPolyline
+ - MGLPointAnnotation
+ - MGLPolygon
+ - MGLPolyline
+ - MGLOverlay
+ - MGLShape
+ - MGLShapeCollection
+ - MGLUserLocation
+ - name: Map Data
+ children:
+ - MGLFeature
+ - MGLMultiPointFeature
+ - MGLMultiPolygonFeature
+ - MGLMultiPolylineFeature
+ - MGLPointFeature
+ - MGLPolygonFeature
+ - MGLPolylineFeature
+ - MGLShapeCollectionFeature
+ - name: Offline Maps
+ children:
+ - MGLOfflineRegion
+ - MGLOfflineStorage
+ - MGLOfflinePack
+ - MGLOfflinePackAdditionCompletionHandler
+ - MGLOfflinePackErrorNotification
+ - MGLOfflinePackErrorUserInfoKey
+ - MGLOfflinePackMaximumCountUserInfoKey
+ - MGLOfflinePackMaximumMapboxTilesReachedNotification
+ - MGLOfflinePackProgress
+ - MGLOfflinePackProgressChangedNotification
+ - MGLOfflinePackProgressUserInfoKey
+ - MGLOfflinePackRemovalCompletionHandler
+ - MGLOfflinePackState
+ - MGLOfflinePackStateUserInfoKey
+ - MGLTilePyramidOfflineRegion
+ - name: Geometry
+ children:
+ - MGLClockDirectionFormatter
+ - MGLCompassDirectionFormatter
+ - MGLCoordinateBounds
+ - MGLCoordinateBoundsEqualToCoordinateBounds
+ - MGLCoordinateBoundsGetCoordinateSpan
+ - MGLCoordinateBoundsIsEmpty
+ - MGLCoordinateBoundsMake
+ - MGLCoordinateBoundsOffset
+ - MGLCoordinateFormatter
+ - MGLCoordinateSpan
+ - MGLCoordinateSpanEqualToCoordinateSpan
+ - MGLCoordinateSpanMake
+ - MGLCoordinateSpanZero
+ - MGLDegreesFromRadians
+ - MGLRadiansFromDegrees
+ - MGLStringFromCoordinateBounds
diff --git a/platform/ios/platform.gyp b/platform/ios/platform.gyp
new file mode 100644
index 0000000000..e4abff27e3
--- /dev/null
+++ b/platform/ios/platform.gyp
@@ -0,0 +1,141 @@
+{
+ 'variables': {
+ 'loop_lib': 'darwin',
+ 'headless_lib': 'eagl',
+ 'coverage': 0,
+ },
+ 'includes': [
+ '../../build/ios/config.gypi',
+ '../../mbgl.gypi',
+ '../../test/test.gypi',
+ ],
+ 'target_defaults': {
+ 'target_conditions': [
+ ['_type == "static_library"', {
+ 'xcode_settings': {
+ 'SDKROOT': 'iphoneos',
+ 'SUPPORTED_PLATFORMS': 'iphonesimulator iphoneos',
+ 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
+ 'TARGETED_DEVICE_FAMILY': '1,2',
+ 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
+ 'CODE_SIGN_IDENTITY': 'iPhone Developer',
+ },
+ }],
+ ],
+ },
+ 'targets': [
+ {
+ 'target_name': 'test',
+ 'type': 'executable',
+ 'product_name': 'ios-test',
+ 'product_extension': 'app',
+ 'mac_bundle': 1,
+
+ 'dependencies': [
+ 'test-lib',
+ 'platform-lib',
+ ],
+
+ 'sources': [
+ '../../test/src/main.mm',
+# '../../src/mbgl/util/premultiply.cpp',
+ ],
+
+ 'xcode_settings': {
+ 'SDKROOT': 'iphoneos',
+ 'SUPPORTED_PLATFORMS': 'iphonesimulator iphoneos',
+ 'INFOPLIST_FILE': '../../test/src/app-info.plist',
+ 'IPHONEOS_DEPLOYMENT_TARGET': '8.0',
+ 'TARGETED_DEVICE_FAMILY': '1,2',
+ 'COPY_PHASE_STRIP': 'NO',
+ 'CLANG_ENABLE_OBJC_ARC': 'YES',
+ 'CLANG_ENABLE_MODULES': 'YES',
+ 'CODE_SIGN_IDENTITY': 'iPhone Developer',
+ 'PRODUCT_BUNDLE_IDENTIFIER': 'com.mapbox.MapboxGLUnitTest',
+ },
+
+ 'copies': [{
+ 'destination': '<(PRODUCT_DIR)/$(WRAPPER_NAME)/test',
+ 'files': [ '../../test/fixtures' ],
+ }],
+
+ 'link_settings': {
+ 'libraries': [
+ '$(SDKROOT)/System/Library/Frameworks/CoreGraphics.framework',
+ '$(SDKROOT)/System/Library/Frameworks/GLKit.framework',
+ '$(SDKROOT)/System/Library/Frameworks/ImageIO.framework',
+ '$(SDKROOT)/System/Library/Frameworks/MobileCoreServices.framework',
+ '$(SDKROOT)/System/Library/Frameworks/OpenGLES.framework',
+ ],
+ },
+ },
+ {
+ 'target_name': 'platform-lib',
+ 'product_name': 'mbgl-platform-ios',
+ 'type': 'static_library',
+ 'standalone_static_library': 1,
+ 'hard_dependency': 1,
+ 'dependencies': [
+ 'core',
+ ],
+
+ 'include_dirs': [
+ 'include',
+ '../darwin/include',
+ '../default',
+ '../../include',
+ '../../src', # TODO: eliminate
+ '<(SHARED_INTERMEDIATE_DIR)/include',
+ ],
+
+ 'sources': [
+ '../default/asset_file_source.cpp',
+ '../default/default_file_source.cpp',
+ '../default/online_file_source.cpp',
+ '../default/mbgl/storage/offline.hpp',
+ '../default/mbgl/storage/offline.cpp',
+ '../default/mbgl/storage/offline_database.hpp',
+ '../default/mbgl/storage/offline_database.cpp',
+ '../default/mbgl/storage/offline_download.hpp',
+ '../default/mbgl/storage/offline_download.cpp',
+ '../default/sqlite3.hpp',
+ '../default/sqlite3.cpp',
+ '../darwin/src/http_file_source.mm',
+ '../darwin/src/log_nslog.mm',
+ '../darwin/src/string_nsstring.mm',
+ '../darwin/src/image.mm',
+ '../darwin/src/nsthread.mm',
+ '../darwin/src/reachability.m',
+ ],
+
+ 'variables': {
+ 'cflags_cc': [
+ '<@(sqlite_cflags)',
+ '<@(zlib_cflags)',
+ '<@(rapidjson_cflags)',
+ ],
+ 'ldflags': [
+ '<@(sqlite_ldflags)',
+ '<@(zlib_ldflags)',
+ ],
+ 'libraries': [
+ '<@(sqlite_static_libs)',
+ '<@(zlib_static_libs)',
+ ],
+ },
+
+ 'xcode_settings': {
+ 'OTHER_CPLUSPLUSFLAGS': [ '<@(cflags_cc)' ],
+ 'CLANG_ENABLE_OBJC_ARC': 'YES',
+ 'CLANG_ENABLE_MODULES': 'YES',
+ },
+
+ 'link_settings': {
+ 'libraries': [ '<@(libraries)' ],
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [ '<@(ldflags)' ],
+ },
+ },
+ },
+ ],
+}
diff --git a/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings
new file mode 100644
index 0000000000..c4569fe239
--- /dev/null
+++ b/platform/ios/resources/Base.lproj/Localizable.strings
@@ -0,0 +1,84 @@
+/* Accessibility hint */
+"ANNOTATION_A11Y_HINT" = "Shows more info";
+
+/* No comment provided by engineer. */
+"API_CLIENT_400_DESC" = "The session data task failed. Original request was: %@";
+
+/* No comment provided by engineer. */
+"API_CLIENT_400_REASON" = "The status code was %ld";
+
+/* No comment provided by engineer. */
+"CANCEL" = "Cancel";
+
+/* Accessibility hint */
+"COMPASS_A11Y_HINT" = "Rotates the map to face due north";
+
+/* Accessibility label */
+"COMPASS_A11Y_LABEL" = "Compass";
+
+/* Compass abbreviation for north */
+"COMPASS_NORTH" = "N";
+
+/* Copyright notice in attribution sheet */
+"COPY_MAPBOX" = "© Mapbox";
+
+/* Copyright notice in attribution sheet */
+"COPY_OSM" = "© OpenStreetMap";
+
+/* Instructions in Interface Builder designable; {key}, {plist file name} */
+"DESIGNABLE" = "To display a Mapbox-hosted map here, set %1$@ to your access token in %2$@\n\nFor detailed instructions, see:";
+
+/* Setup documentation URL display string; keep as short as possible */
+"FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk";
+
+/* Accessibility hint */
+"INFO_A11Y_HINT" = "Shows credits, a feedback form, and more";
+
+/* Accessibility label */
+"INFO_A11Y_LABEL" = "About this map";
+
+/* Accessibility label */
+"LOGO_A11Y_LABEL" = "Mapbox";
+
+/* Accessibility label */
+"MAP_A11Y_LABEL" = "Map";
+
+/* Map accessibility value */
+"MAP_A11Y_VALUE" = "Zoom %1$dx\n%2$ld annotation(s) visible";
+
+/* Action in attribution sheet */
+"MAP_FEEDBACK" = "Improve This Map";
+
+/* Action sheet title */
+"SDK_NAME" = "Mapbox iOS SDK";
+
+/* Telemetry prompt message */
+"TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
+
+/* Telemetry prompt button */
+"TELEMETRY_DISABLED_OFF" = "Don’t Participate";
+
+/* Telemetry prompt button */
+"TELEMETRY_DISABLED_ON" = "Participate";
+
+/* Telemetry prompt message */
+"TELEMETRY_ENABLED_MSG" = "You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
+
+/* Telemetry prompt button */
+"TELEMETRY_ENABLED_OFF" = "Stop Participating";
+
+/* Telemetry prompt button */
+"TELEMETRY_ENABLED_ON" = "Keep Participating";
+
+/* Telemetry prompt button */
+"TELEMETRY_MORE" = "Tell Me More";
+
+/* Action in attribution sheet */
+"TELEMETRY_NAME" = "Mapbox Telemetry";
+
+/* Telemetry prompt title */
+"TELEMETRY_TITLE" = "Make Mapbox Maps Better";
+
+/* Default user location annotation title */
+"USER_DOT_TITLE" = "You Are Here";
+
diff --git a/platform/ios/resources/Compass.png b/platform/ios/resources/Compass.png
index e6b0b52c58..08bed0591b 100644
--- a/platform/ios/resources/Compass.png
+++ b/platform/ios/resources/Compass.png
Binary files differ
diff --git a/platform/ios/resources/Compass@2x.png b/platform/ios/resources/Compass@2x.png
index 2bd8a286da..8473a2d1ec 100644
--- a/platform/ios/resources/Compass@2x.png
+++ b/platform/ios/resources/Compass@2x.png
Binary files differ
diff --git a/platform/ios/resources/Compass@3x.png b/platform/ios/resources/Compass@3x.png
index 9308a46a51..9cf66ca483 100644
--- a/platform/ios/resources/Compass@3x.png
+++ b/platform/ios/resources/Compass@3x.png
Binary files differ
diff --git a/platform/ios/resources/en.lproj/Localizable.stringsdict b/platform/ios/resources/en.lproj/Localizable.stringsdict
new file mode 100644
index 0000000000..ee4de02116
--- /dev/null
+++ b/platform/ios/resources/en.lproj/Localizable.stringsdict
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>MAP_A11Y_VALUE</key>
+ <dict>
+ <key>NSStringLocalizedFormatKey</key>
+ <string>Zoom %dx
+%#@count@ visible</string>
+ <key>count</key>
+ <dict>
+ <key>NSStringFormatSpecTypeKey</key>
+ <string>NSStringPluralRuleType</string>
+ <key>NSStringFormatValueTypeKey</key>
+ <string>ld</string>
+ <key>one</key>
+ <string>%d annotation</string>
+ <key>other</key>
+ <string>%d annotations</string>
+ </dict>
+ </dict>
+</dict>
+</plist>
diff --git a/platform/ios/scripts/after_failure.sh b/platform/ios/scripts/after_failure.sh
deleted file mode 100755
index 88a6427f75..0000000000
--- a/platform/ios/scripts/after_failure.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-ls $KIF_SCREENSHOTS/
-
-REPO_NAME=$(basename $TRAVIS_REPO_SLUG)
-
-aws s3 cp $KIF_SCREENSHOTS/ s3://mapbox/$REPO_NAME/ios/tests/$TRAVIS_JOB_NUMBER/ --acl public-read --recursive > /dev/null
-
-echo http://mapbox.s3.amazonaws.com/$REPO_NAME/ios/tests/$TRAVIS_JOB_NUMBER/index.html
diff --git a/platform/ios/scripts/configure.sh b/platform/ios/scripts/configure.sh
index ee6d60de2f..408180881c 100644
--- a/platform/ios/scripts/configure.sh
+++ b/platform/ios/scripts/configure.sh
@@ -1,9 +1,14 @@
#!/usr/bin/env bash
-BOOST_VERSION=1.59.0
+UNIQUE_RESOURCE_VERSION=dev
+PROTOZERO_VERSION=1.3.0
+BOOST_VERSION=1.60.0
SQLITE_VERSION=system
-LIBUV_VERSION=1.7.5
ZLIB_VERSION=system
-GEOJSONVT_VERSION=3.1.0
-VARIANT_VERSION=1.0
+GEOMETRY_VERSION=0.5.0
+GEOJSONVT_VERSION=4.1.2
+VARIANT_VERSION=1.1.0
RAPIDJSON_VERSION=1.0.2
+GTEST_VERSION=1.7.0
+PIXELMATCH_VERSION=0.9.0
+EARCUT_VERSION=0.11
diff --git a/platform/ios/scripts/defaults.mk b/platform/ios/scripts/defaults.mk
deleted file mode 100644
index c2a3e95eeb..0000000000
--- a/platform/ios/scripts/defaults.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-HEADLESS = none
-PLATFORM ?= ios
-ASSET ?= fs
-HTTP ?= nsurl
-
-HOST_VERSION = all
-
-PROVISIONING_PROFILE ?= 19324a54-7455-4f0b-8e1c-e6957c718ebc
-
-export MASON_PLATFORM=$(HOST)
-export MASON_PLATFORM_VERSION=$(HOST_VERSION)
diff --git a/platform/ios/scripts/deploy-packages.sh b/platform/ios/scripts/deploy-packages.sh
index 64cb472f6b..42bce89cf3 100755
--- a/platform/ios/scripts/deploy-packages.sh
+++ b/platform/ios/scripts/deploy-packages.sh
@@ -56,6 +56,7 @@ export TRAVIS_REPO_SLUG=mapbox-gl-native
export PUBLISH_VERSION=$1
export GITHUB_USER=mapbox
export GITHUB_REPO=mapbox-gl-native
+export BUILDTYPE=Release
BINARY_DIRECTORY=$2
PUBLISH_PRE_FLAG=''
diff --git a/platform/ios/scripts/document.sh b/platform/ios/scripts/document.sh
index 4890aca15c..3059550ba0 100755
--- a/platform/ios/scripts/document.sh
+++ b/platform/ios/scripts/document.sh
@@ -33,6 +33,7 @@ rm -rf ${OUTPUT}
mkdir -p ${OUTPUT}
jazzy \
+ --config platform/ios/jazzy.yml \
--sdk iphonesimulator \
--swift-version $SWIFT_VERSION \
--github-file-prefix https://github.com/mapbox/mapbox-gl-native/tree/${BRANCH} \
diff --git a/platform/ios/scripts/install.sh b/platform/ios/scripts/install.sh
deleted file mode 100755
index 437193b1f2..0000000000
--- a/platform/ios/scripts/install.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-
-git fetch --tags
-
-mapbox_time "checkout_mason" \
-git submodule update --init .mason
-
-mapbox_time "install_recent_git" \
-brew install git
-
-mapbox_time "install_awscli" \
-brew install awscli
-
-mapbox_time "install_jazzy" \
-gem install jazzy
-
-mkdir -p ${KIF_SCREENSHOTS}
diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh
index 137775ef71..f0ca683389 100755
--- a/platform/ios/scripts/package.sh
+++ b/platform/ios/scripts/package.sh
@@ -6,11 +6,11 @@ set -u
NAME=Mapbox
OUTPUT=build/ios/pkg
-LIBUV_VERSION=1.7.5
+DERIVED_DATA=build/ios
+PRODUCTS=${DERIVED_DATA}/Build/Products
-BUILDTYPE=${BUILDTYPE:-Release}
+BUILDTYPE=${BUILDTYPE:-Debug}
BUILD_FOR_DEVICE=${BUILD_DEVICE:-true}
-ENABLE_BITCODE=${BITCODE:-YES}
GCC_GENERATE_DEBUGGING_SYMBOLS=${SYMBOLS:-YES}
BUILD_DYNAMIC=true
@@ -21,25 +21,19 @@ elif [[ ${FORMAT} == "dynamic" ]]; then
BUILD_STATIC=false
fi
-BUNDLE_RESOURCES=${BUNDLE_RESOURCES:-}
-BUNDLE_PATH=
-if [[ ${BUNDLE_RESOURCES} ]]; then
- BUNDLE_PATH="/${NAME}.bundle"
-fi
-
-PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK=${PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK:-}
-STATIC_BUNDLE_PATH=
-if [[ ${PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK} ]]; then
- STATIC_BUNDLE_PATH="${OUTPUT}/static${BUNDLE_PATH}"
+SELF_CONTAINED=${SELF_CONTAINED:-}
+STATIC_BUNDLE_DIR=
+if [[ ${SELF_CONTAINED} ]]; then
+ STATIC_BUNDLE_DIR="${OUTPUT}/static/${NAME}.framework"
else
- STATIC_BUNDLE_PATH="${OUTPUT}/static/${NAME}.framework${BUNDLE_PATH}"
+ STATIC_BUNDLE_DIR="${OUTPUT}/static"
fi
-STATIC_SETTINGS_DIRECTORY=
-if [[ ${PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK} ]]; then
- STATIC_SETTINGS_DIRECTORY="${OUTPUT}"
+STATIC_SETTINGS_DIR=
+if [[ ${SELF_CONTAINED} ]]; then
+ STATIC_SETTINGS_DIR="${OUTPUT}/static/${NAME}.framework"
else
- STATIC_SETTINGS_DIRECTORY="${OUTPUT}/static/${NAME}.framework"
+ STATIC_SETTINGS_DIR="${OUTPUT}"
fi
SDK=iphonesimulator
@@ -48,7 +42,7 @@ if [[ ${BUILD_FOR_DEVICE} == true ]]; then
fi
IOS_SDK_VERSION=`xcrun --sdk ${SDK} --show-sdk-version`
-echo "Configuring ${FORMAT:-dynamic and static} ${BUILDTYPE} framework for ${SDK}; symbols: ${GCC_GENERATE_DEBUGGING_SYMBOLS}; Bitcode: ${ENABLE_BITCODE}; Mapbox.bundle: ${BUNDLE_RESOURCES} bundle.outside: ${PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK}"
+echo "Configuring ${FORMAT:-dynamic and static} ${BUILDTYPE} framework for ${SDK}; symbols: ${GCC_GENERATE_DEBUGGING_SYMBOLS}; self-contained static framework: ${SELF_CONTAINED:-NO}"
function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
function finish { >&2 echo -en "\033[0m"; }
@@ -63,7 +57,6 @@ if [[ ${BUILD_DYNAMIC} == true ]]; then
mkdir -p "${OUTPUT}"/dynamic
fi
-
step "Recording library version…"
VERSION="${OUTPUT}"/version.txt
echo -n "https://github.com/mapbox/mapbox-gl-native/commit/" > ${VERSION}
@@ -72,77 +65,50 @@ echo -n "mapbox-gl-native "
echo ${HASH}
echo ${HASH} >> ${VERSION}
-
-step "Creating build files…"
-export MASON_PLATFORM=ios
-export BUILDTYPE=${BUILDTYPE:-Release}
-export HOST=ios
-make Xcode/ios
-
PROJ_VERSION=$(git rev-list --count HEAD)
+SEM_VERSION=$( git describe --tags --match=ios-v*.*.* --abbrev=0 | sed 's/^ios-v//' )
+SHORT_VERSION=${SEM_VERSION%-*}
-if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
- if [[ ${BUILD_STATIC} == true ]]; then
- step "Building intermediate static libraries for iOS devices (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
- ARCHS="arm64 armv7 armv7s" \
- ONLY_ACTIVE_ARCH=NO \
- GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=${ENABLE_BITCODE} \
- DEPLOYMENT_POSTPROCESSING=YES \
- CODE_SIGNING_REQUIRED=NO \
- CODE_SIGN_IDENTITY= \
- -project ./build/ios-all/gyp/mbgl.xcodeproj \
- -configuration ${BUILDTYPE} \
- -target everything \
- -jobs ${JOBS}
- fi
-
- if [[ ${BUILD_DYNAMIC} == true ]]; then
- step "Building dynamic framework for iOS devices (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphoneos${IOS_SDK_VERSION} \
- ARCHS="arm64 armv7 armv7s" \
- ONLY_ACTIVE_ARCH=NO \
- GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=${ENABLE_BITCODE} \
- DEPLOYMENT_POSTPROCESSING=YES \
- CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- CODE_SIGNING_REQUIRED=NO \
- CODE_SIGN_IDENTITY= \
- -project ./build/ios-all/gyp/ios.xcodeproj \
- -configuration ${BUILDTYPE} \
- -target iossdk \
- -jobs ${JOBS}
- fi
-fi
+step "Building targets (build ${PROJ_VERSION}, version ${SEM_VERSION})…"
+
+SCHEME='dynamic'
+if [[ ${BUILD_DYNAMIC} == true && ${BUILD_STATIC} == true ]]; then
+ SCHEME+='+static'
+elif [[ ${BUILD_STATIC} == true ]]; then
+ SCHEME='static'
+fi
+
+xcodebuild \
+ GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
+ CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
+ CURRENT_SHORT_VERSION=${SHORT_VERSION} \
+ CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
+ CURRENT_COMMIT_HASH=${HASH} \
+ ONLY_ACTIVE_ARCH=NO \
+ -derivedDataPath ${DERIVED_DATA} \
+ -workspace ./platform/ios/ios.xcworkspace \
+ -scheme ${SCHEME} \
+ -configuration ${BUILDTYPE} \
+ -sdk iphonesimulator \
+ -jobs ${JOBS} | xcpretty
-if [[ ${BUILD_STATIC} == true ]]; then
- step "Building intermediate static libraries for iOS Simulator (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
- ARCHS="x86_64 i386" \
- ONLY_ACTIVE_ARCH=NO \
- GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- -project ./build/ios-all/gyp/mbgl.xcodeproj \
- -configuration ${BUILDTYPE} \
- -target everything \
- -jobs ${JOBS}
-fi
-
-if [[ ${BUILD_DYNAMIC} == true ]]; then
- step "Building dynamic framework for iOS Simulator (build ${PROJ_VERSION})…"
- xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \
- ARCHS="x86_64 i386" \
- ONLY_ACTIVE_ARCH=NO \
+if [[ ${BUILD_FOR_DEVICE} == true ]]; then
+ xcodebuild \
GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \
- ENABLE_BITCODE=${ENABLE_BITCODE} \
CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
- -project ./build/ios-all/gyp/ios.xcodeproj \
+ CURRENT_SHORT_VERSION=${SHORT_VERSION} \
+ CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \
+ CURRENT_COMMIT_HASH=${HASH} \
+ ONLY_ACTIVE_ARCH=NO \
+ -derivedDataPath ${DERIVED_DATA} \
+ -workspace ./platform/ios/ios.xcworkspace \
+ -scheme ${SCHEME} \
-configuration ${BUILDTYPE} \
- -target iossdk \
- -jobs ${JOBS}
+ -sdk iphoneos \
+ -jobs ${JOBS} | xcpretty
fi
-LIBS=(core.a platform-ios.a asset-fs.a http-nsurl.a)
+LIBS=(Mapbox.a mbgl-core.a mbgl-platform-ios.a)
# https://medium.com/@syshen/create-an-ios-universal-framework-148eb130a46c
if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
@@ -150,46 +116,56 @@ if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
step "Assembling static framework for iOS Simulator and devices…"
mkdir -p ${OUTPUT}/static/${NAME}.framework
libtool -static -no_warning_for_no_symbols \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
-o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphoneos/libmbgl-} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
+ ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphoneos/lib} \
+ ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphonesimulator/lib} \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a`
+
+ cp -rv ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.bundle ${STATIC_BUNDLE_DIR}
fi
if [[ ${BUILD_DYNAMIC} == true ]]; then
step "Copying dynamic framework into place for iOS devices"
cp -r \
- gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework \
- ${OUTPUT}/dynamic/
- cp -r gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM \
+ ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework \
${OUTPUT}/dynamic/
+ if [[ -e ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM ]]; then
+ cp -r ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework.dSYM \
+ ${OUTPUT}/dynamic/
+ fi
step "Merging simulator dynamic library into device dynamic library…"
lipo \
- gyp/build/${BUILDTYPE}-iphoneos/${NAME}.framework/${NAME} \
- gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework/${NAME} \
+ ${PRODUCTS}/${BUILDTYPE}-iphoneos/${NAME}.framework/${NAME} \
+ ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework/${NAME} \
-create -output ${OUTPUT}/dynamic/${NAME}.framework/${NAME} | echo
fi
+
+ cp -rv ${PRODUCTS}/${BUILDTYPE}-iphoneos/Settings.bundle ${STATIC_SETTINGS_DIR}
else
if [[ ${BUILD_STATIC} == true ]]; then
step "Assembling static library for iOS Simulator…"
mkdir -p ${OUTPUT}/static/${NAME}.framework
libtool -static -no_warning_for_no_symbols \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` \
-o ${OUTPUT}/static/${NAME}.framework/${NAME} \
- ${LIBS[@]/#/gyp/build/${BUILDTYPE}-iphonesimulator/libmbgl-}
+ ${LIBS[@]/#/${PRODUCTS}/${BUILDTYPE}-iphonesimulator/lib} \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a`
+
+ cp -rv ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.bundle ${STATIC_BUNDLE_DIR}
fi
if [[ ${BUILD_DYNAMIC} == true ]]; then
step "Copying dynamic framework into place for iOS Simulator…"
cp -r \
- gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework \
+ ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework \
${OUTPUT}/dynamic/${NAME}.framework
- cp -r gyp/build/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM \
- ${OUTPUT}/dynamic/
+ if [[ -e ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM ]]; then
+ cp -r ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/${NAME}.framework.dSYM \
+ ${OUTPUT}/dynamic/
+ fi
fi
+
+ cp -rv ${PRODUCTS}/${BUILDTYPE}-iphonesimulator/Settings.bundle ${STATIC_SETTINGS_DIR}
fi
if [[ "${GCC_GENERATE_DEBUGGING_SYMBOLS}" == false ]]; then
@@ -211,48 +187,19 @@ fi
if [[ ${BUILD_STATIC} == true ]]; then
step "Copying static library headers…"
- mkdir -p "${OUTPUT}/static/${NAME}.framework/Headers"
- cp -pv platform/{darwin,ios}/include/*.h "${OUTPUT}/static/${NAME}.framework/Headers"
+ cp -rv "${PRODUCTS}/${BUILDTYPE}-iphoneos/Headers" "${OUTPUT}/static/${NAME}.framework/Headers"
cat platform/ios/framework/Mapbox-static.h > "${OUTPUT}/static/${NAME}.framework/Headers/Mapbox.h"
- cat platform/ios/framework/Mapbox.h >> "${OUTPUT}/static/${NAME}.framework/Headers/Mapbox.h"
+ cat "${PRODUCTS}/${BUILDTYPE}-iphoneos/Headers/Mapbox.h" >> "${OUTPUT}/static/${NAME}.framework/Headers/Mapbox.h"
fi
step "Copying library resources…"
-SEM_VERSION=$( git describe --tags --match=ios-v*.*.* --abbrev=0 | sed 's/^ios-v//' )
-SHORT_VERSION=${SEM_VERSION%-*}
-if [[ ${BUNDLE_RESOURCES} ]]; then
- cp -pv LICENSE.md ${STATIC_SETTINGS_DIRECTORY}
- cp -rv platform/ios/app/Settings.bundle ${STATIC_SETTINGS_DIRECTORY}
-else
- cp -pv LICENSE.md "${OUTPUT}"
- cp -rv platform/ios/app/Settings.bundle "${OUTPUT}"
-fi
+cp -pv LICENSE.md ${STATIC_SETTINGS_DIR}
if [[ ${BUILD_STATIC} == true ]]; then
- mkdir -p ${STATIC_BUNDLE_PATH}
- cp -pv platform/{default,ios}/resources/* ${STATIC_BUNDLE_PATH}
- INFO_PLIST_PATH="${OUTPUT}/static/${NAME}.framework/Info.plist"
- cp -pv platform/ios/framework/Info.plist "${INFO_PLIST_PATH}"
- plutil -remove CFBundleExecutable "${INFO_PLIST_PATH}"
- plutil -remove CFBundlePackageType "${INFO_PLIST_PATH}"
- plutil -replace CFBundleIdentifier -string com.mapbox.sdk.ios "${INFO_PLIST_PATH}"
- plutil -replace CFBundleName -string ${NAME} "${INFO_PLIST_PATH}"
- plutil -replace CFBundleShortVersionString -string "${SHORT_VERSION}" "${INFO_PLIST_PATH}"
- plutil -replace CFBundleVersion -string ${PROJ_VERSION} "${INFO_PLIST_PATH}"
- plutil -replace MGLSemanticVersionString -string "${SEM_VERSION}" "${INFO_PLIST_PATH}"
- plutil -replace MGLCommitHash -string "${HASH}" "${INFO_PLIST_PATH}"
- if [[ ${BUNDLE_RESOURCES} ]]; then
- cp -pv "${INFO_PLIST_PATH}" "${STATIC_BUNDLE_PATH}/Info.plist"
- fi
+ cp -pv "${STATIC_BUNDLE_DIR}/${NAME}.bundle/Info.plist" "${OUTPUT}/static/${NAME}.framework/Info.plist"
+ plutil -replace CFBundlePackageType -string FMWK "${OUTPUT}/static/${NAME}.framework/Info.plist"
mkdir "${OUTPUT}/static/${NAME}.framework/Modules"
cp -pv platform/ios/framework/modulemap "${OUTPUT}/static/${NAME}.framework/Modules/module.modulemap"
fi
-if [[ ${BUILD_DYNAMIC} == true ]]; then
- plutil -replace CFBundleShortVersionString -string "${SHORT_VERSION}" "${OUTPUT}/dynamic/${NAME}.framework/Info.plist"
- plutil -replace CFBundleVersion -string "${PROJ_VERSION}" "${OUTPUT}/dynamic/${NAME}.framework/Info.plist"
- plutil -replace MGLSemanticVersionString -string "${SEM_VERSION}" "${OUTPUT}/dynamic/${NAME}.framework/Info.plist"
- plutil -replace MGLCommitHash -string "${HASH}" "${OUTPUT}/dynamic/${NAME}.framework/Info.plist"
- cp -pv platform/ios/framework/strip-frameworks.sh "${OUTPUT}/dynamic/${NAME}.framework/strip-frameworks.sh"
-fi
sed -n -e '/^## /,$p' platform/ios/CHANGELOG.md > "${OUTPUT}/CHANGELOG.md"
rm -rf /tmp/mbgl
diff --git a/platform/ios/scripts/run.sh b/platform/ios/scripts/run.sh
deleted file mode 100755
index 44c21e7562..0000000000
--- a/platform/ios/scripts/run.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-source ./platform/ios/scripts/setup.sh
-
-BUILDTYPE=${BUILDTYPE:-Release}
-
-PUBLISH_TAG=($(git show -s --format=%B | sed -n 's/.*\[publish \([a-z]\{1,\}\)-v\([0-9a-z.\-]\{1,\}\)\].*/\1 \2/p'))
-PUBLISH_PLATFORM=${PUBLISH_TAG[0],-}
-PUBLISH_VERSION=${PUBLISH_TAG[1],-}
-
-
-################################################################################
-# Build
-################################################################################
-
-if [[ ${PUBLISH_PLATFORM} = 'ios' ]]; then
- # default, with debug symbols
- mapbox_time "package_ios_symbols" \
- make ipackage
-
- mapbox_time "deploy_ios_symbols"
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" symbols
-
- # no debug symbols, for smaller distribution
- mapbox_time "package_ios_stripped" \
- make ipackage-strip
-
- mapbox_time "deploy_ios_stripped"
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}"
-
- # dynamic, with debug symbols
- mapbox_time "package_ios_dynamic" \
- make iframework
-
- mapbox_time "deploy_ios_dynamic"
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" symbols-dynamic
-
- # dynamic, without debug symbols
- mapbox_time "package_ios_dynamic_stripped" \
- make iframework SYMBOLS=NO
-
- mapbox_time "deploy_ios_dynamic_stripped"
- ./platform/ios/scripts/publish.sh "${PUBLISH_VERSION}" dynamic
-else
- # build & test iOS
- mapbox_time "run_ios_tests" \
- make itest
-fi
diff --git a/platform/ios/scripts/setup.sh b/platform/ios/scripts/setup.sh
deleted file mode 100644
index d115cf9020..0000000000
--- a/platform/ios/scripts/setup.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-# This script is sourced; do not set -e or -o pipefail here.
-
-# Ensure mason is on the PATH
-export PATH="`pwd`/.mason:${PATH}" MASON_DIR="`pwd`/.mason"
diff --git a/platform/ios/scripts/test.sh b/platform/ios/scripts/test.sh
deleted file mode 100755
index 630a99686d..0000000000
--- a/platform/ios/scripts/test.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o pipefail
-set -u
-
-xcodebuild \
- -project ./platform/ios/test/ios-tests.xcodeproj \
- -scheme 'Mapbox GL Tests' \
- -sdk iphonesimulator \
- -destination 'platform=iOS Simulator,name=iPhone 6,OS=latest' \
- -destination 'platform=iOS Simulator,name=iPad 2,OS=latest' \
- test
diff --git a/platform/ios/src/MGLAPIClient.m b/platform/ios/src/MGLAPIClient.m
index 63adb3c463..31fd39c83d 100644
--- a/platform/ios/src/MGLAPIClient.m
+++ b/platform/ios/src/MGLAPIClient.m
@@ -14,7 +14,7 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST";
@interface MGLAPIClient ()
@property (nonatomic, copy) NSURLSession *session;
-@property (nonatomic, copy) NSString *baseURL;
+@property (nonatomic, copy) NSURL *baseURL;
@property (nonatomic, copy) NSData *digicertCert;
@property (nonatomic, copy) NSData *geoTrustCert;
@property (nonatomic, copy) NSData *testServerCert;
@@ -47,14 +47,14 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST";
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSError *statusError = nil;
if (httpResponse.statusCode >= 400) {
- NSString *description = [NSString stringWithFormat:NSLocalizedString(@"The session data task failed. Original request was: %@", nil), dataTask.originalRequest];
- NSString *reason = [NSString stringWithFormat:NSLocalizedString(@"The status code was %ld", nil), (long)httpResponse.statusCode];
+ NSString *description = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"API_CLIENT_400_DESC", nil, nil, @"The session data task failed. Original request was: %@", nil), dataTask.originalRequest];
+ NSString *reason = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"API_CLIENT_400_REASON", nil, nil, @"The status code was %ld", nil), (long)httpResponse.statusCode];
NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description,
NSLocalizedFailureReasonErrorKey: reason};
statusError = [NSError errorWithDomain:MGLErrorDomain code:1 userInfo:userInfo];
}
if (completionHandler) {
- error = error ? error : statusError;
+ error = error ?: statusError;
completionHandler(error);
}
[self.dataTasks removeObject:dataTask];
@@ -76,8 +76,9 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST";
#pragma mark Utilities
- (NSURLRequest *)requestForEvents:(NS_ARRAY_OF(MGLMapboxEventAttributes *) *)events {
- NSString *url = [NSString stringWithFormat:@"%@/%@?access_token=%@", self.baseURL, MGLAPIClientEventsPath, [MGLAccountManager accessToken]];
- NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
+ NSString *path = [NSString stringWithFormat:@"%@?access_token=%@", MGLAPIClientEventsPath, [MGLAccountManager accessToken]];
+ NSURL *url = [NSURL URLWithString:path relativeToURL:self.baseURL];
+ NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setValue:self.userAgent forHTTPHeaderField:MGLAPIClientHeaderFieldUserAgentKey];
[request setValue:MGLAPIClientHeaderFieldContentTypeValue forHTTPHeaderField:MGLAPIClientHeaderFieldContentTypeKey];
[request setHTTPMethod:MGLAPIClientHTTPMethodPost];
@@ -87,12 +88,13 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST";
}
- (void)setupBaseURL {
- NSString *testServerURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLMetricsTestServerURL"];
- if (testServerURL) {
- _baseURL = testServerURL;
- _usesTestServer = YES;
+ NSString *testServerURLString = [[NSUserDefaults standardUserDefaults] stringForKey:@"MGLTelemetryTestServerURL"];
+ NSURL *testServerURL = [NSURL URLWithString:testServerURLString];
+ if (testServerURL && [testServerURL.scheme isEqualToString:@"https"]) {
+ self.baseURL = testServerURL;
+ self.usesTestServer = YES;
} else {
- _baseURL = MGLAPIClientBaseURL;
+ self.baseURL = [NSURL URLWithString:MGLAPIClientBaseURL];
}
}
@@ -120,7 +122,7 @@ static NSString * const MGLAPIClientHTTPMethodPost = @"POST";
NSString *appBuildNumber = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *semanticVersion = [NSBundle mgl_frameworkInfoDictionary][@"MGLSemanticVersionString"];
NSString *shortVersion = [NSBundle mgl_frameworkInfoDictionary][@"CFBundleShortVersionString"];
- NSString *sdkVersion = semanticVersion ? semanticVersion : shortVersion;
+ NSString *sdkVersion = semanticVersion ?: shortVersion;
_userAgent = [NSString stringWithFormat:@"%@/%@/%@ %@/%@", appName, appVersion, appBuildNumber, MGLAPIClientUserAgentBase, sdkVersion];
}
diff --git a/platform/ios/src/MGLAnnotationContainerView.h b/platform/ios/src/MGLAnnotationContainerView.h
new file mode 100644
index 0000000000..90d2964831
--- /dev/null
+++ b/platform/ios/src/MGLAnnotationContainerView.h
@@ -0,0 +1,17 @@
+#import <UIKit/UIKit.h>
+
+#import "MGLTypes.h"
+
+@class MGLAnnotationView;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MGLAnnotationContainerView : UIView
+
++ (instancetype)annotationContainerViewWithAnnotationContainerView:(MGLAnnotationContainerView *)annotationContainerView;
+
+- (void)addSubviews:(NS_ARRAY_OF(MGLAnnotationView *) *)subviews;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationContainerView.m b/platform/ios/src/MGLAnnotationContainerView.m
new file mode 100644
index 0000000000..9a823c839c
--- /dev/null
+++ b/platform/ios/src/MGLAnnotationContainerView.m
@@ -0,0 +1,52 @@
+#import "MGLAnnotationContainerView.h"
+#import "MGLAnnotationView.h"
+
+@interface MGLAnnotationContainerView ()
+
+@property (nonatomic) NS_MUTABLE_ARRAY_OF(MGLAnnotationView *) *annotationViews;
+
+@end
+
+@implementation MGLAnnotationContainerView
+
+- (instancetype)initWithFrame:(CGRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self)
+ {
+ _annotationViews = [NSMutableArray array];
+ }
+ return self;
+}
+
++ (instancetype)annotationContainerViewWithAnnotationContainerView:(nonnull MGLAnnotationContainerView *)annotationContainerView
+{
+ MGLAnnotationContainerView *newAnnotationContainerView = [[MGLAnnotationContainerView alloc] initWithFrame:annotationContainerView.frame];
+ [newAnnotationContainerView addSubviews:annotationContainerView.subviews];
+ return newAnnotationContainerView;
+}
+
+- (void)addSubviews:(NS_ARRAY_OF(MGLAnnotationView *) *)subviews
+{
+ for (MGLAnnotationView *view in subviews)
+ {
+ [self addSubview:view];
+ [self.annotationViews addObject:view];
+ }
+}
+
+#pragma mark UIAccessibility methods
+
+- (UIAccessibilityTraits)accessibilityTraits {
+ return UIAccessibilityTraitAdjustable;
+}
+
+- (void)accessibilityIncrement {
+ [self.superview.superview accessibilityIncrement];
+}
+
+- (void)accessibilityDecrement {
+ [self.superview.superview accessibilityDecrement];
+}
+
+@end
diff --git a/platform/ios/include/MGLAnnotationImage.h b/platform/ios/src/MGLAnnotationImage.h
index f9d9e70566..fa2adb3830 100644
--- a/platform/ios/include/MGLAnnotationImage.h
+++ b/platform/ios/src/MGLAnnotationImage.h
@@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark Getting and Setting Attributes
/** The image to be displayed for the annotation. */
-@property (nonatomic, strong) UIImage *image;
+@property (nonatomic, strong, nullable) UIImage *image;
/**
The string that identifies that this annotation image is reusable. (read-only)
diff --git a/platform/ios/src/MGLAnnotationImage.m b/platform/ios/src/MGLAnnotationImage.m
index 374ed162fb..e1085be98d 100644
--- a/platform/ios/src/MGLAnnotationImage.m
+++ b/platform/ios/src/MGLAnnotationImage.m
@@ -3,6 +3,8 @@
@interface MGLAnnotationImage ()
@property (nonatomic, strong) NSString *reuseIdentifier;
+@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
+
@property (nonatomic, weak) id<MGLAnnotationImageDelegate> delegate;
@end
diff --git a/platform/ios/src/MGLAnnotationImage_Private.h b/platform/ios/src/MGLAnnotationImage_Private.h
index f22a9ac4e2..dcd8a49bf9 100644
--- a/platform/ios/src/MGLAnnotationImage_Private.h
+++ b/platform/ios/src/MGLAnnotationImage_Private.h
@@ -11,6 +11,9 @@ NS_ASSUME_NONNULL_BEGIN
@interface MGLAnnotationImage (Private)
+/// Unique identifier of the sprite image used by the style to represent the receiver’s `image`.
+@property (nonatomic, strong, nullable) NSString *styleIconIdentifier;
+
@property (nonatomic, weak) id<MGLAnnotationImageDelegate> delegate;
@end
diff --git a/platform/ios/src/MGLAnnotationView.h b/platform/ios/src/MGLAnnotationView.h
new file mode 100644
index 0000000000..5b8091e7b4
--- /dev/null
+++ b/platform/ios/src/MGLAnnotationView.h
@@ -0,0 +1,61 @@
+#import <UIKit/UIKit.h>
+
+#import "MGLTypes.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** The MGLAnnotationView class is responsible for representing point-based annotation markers as a view. Annotation views represent an annotation object, which is an object that corresponds to the MGLAnnotation protocol. When an annotation’s coordinate point is visible on the map view, the map view delegate is asked to provide a corresponding annotation view. If an annotation view is created with a reuse identifier, the map view may recycle the view when it goes offscreen. */
+@interface MGLAnnotationView : UIView
+
+/**
+ Initializes and returns a new annotation view object.
+
+ @param reuseIdentifier The string that identifies that this annotation view is reusable.
+ @return The initialized annotation view object.
+ */
+- (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier;
+
+/**
+ The string that identifies that this annotation view is reusable. (read-only)
+
+ You specify the reuse identifier when you create the view. You use the identifier later to retrieve an annotation view that was
+ created previously but which is currently unused because its annotation is not on screen.
+
+ If you define distinctly different types of annotations (with distinctly different annotation views to go with them), you can
+ differentiate between the annotation types by specifying different reuse identifiers for each one.
+ */
+@property (nonatomic, readonly, nullable) NSString *reuseIdentifier;
+
+/**
+ Annotation view is centered at the coordinate point of the associated annotation.
+
+ By changing this property you can reposition the view as needed. The offset is measured in points.
+ Positive offset moves the annotation view towards the bottom right, while negative offset moves it towards the top left.
+ */
+@property (nonatomic) CGVector centerOffset;
+
+
+/**
+ Setting this property to YES will force the annotation view to tilt according to the associated map view.
+ */
+@property (nonatomic, assign, getter=isFlat) BOOL flat;
+
+/**
+ Setting this property to YES will cause the annotation view to shrink as it approaches the horizon and grow as it moves away from the
+ horizon when the associated map view is tilted. Conversely, setting this property to NO will ensure that the annotation view maintains
+ a constant size even when the map view is tilted. To maintain consistency with annotation representations that are not backed by an
+ MGLAnnotationView object, the default value of this property is YES.
+ */
+@property (nonatomic, assign, getter=isScaledWithViewingDistance) BOOL scalesWithViewingDistance;
+
+/**
+ Called when the view is removed from the reuse queue.
+
+ The default implementation of this method does nothing. You can override it in your custom annotation views and use it to put the view
+ in a known state before it is returned to your map view delegate.
+ */
+- (void)prepareForReuse;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLAnnotationView.mm b/platform/ios/src/MGLAnnotationView.mm
new file mode 100644
index 0000000000..31657dbf4e
--- /dev/null
+++ b/platform/ios/src/MGLAnnotationView.mm
@@ -0,0 +1,147 @@
+#import "MGLAnnotationView.h"
+#import "MGLAnnotationView_Private.h"
+#import "MGLMapView_Internal.h"
+
+#import "NSBundle+MGLAdditions.h"
+
+#include <mbgl/util/constants.hpp>
+
+@interface MGLAnnotationView ()
+
+@property (nonatomic) id<MGLAnnotation> annotation;
+@property (nonatomic, readwrite, nullable) NSString *reuseIdentifier;
+
+@end
+
+@implementation MGLAnnotationView
+
+- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
+{
+ self = [self initWithFrame:CGRectZero];
+ if (self)
+ {
+ _reuseIdentifier = [reuseIdentifier copy];
+ _scalesWithViewingDistance = YES;
+ }
+ return self;
+}
+
+- (void)prepareForReuse
+{
+ // Intentionally left blank. The default implementation of this method does nothing.
+}
+
+- (void)setCenterOffset:(CGVector)centerOffset
+{
+ _centerOffset = centerOffset;
+ self.center = self.center;
+}
+
+- (void)setCenter:(CGPoint)center
+{
+ [self setCenter:center pitch:0];
+}
+
+- (void)setCenter:(CGPoint)center pitch:(CGFloat)pitch
+{
+ center.x += _centerOffset.dx;
+ center.y += _centerOffset.dy;
+
+ [super setCenter:center];
+
+ if (self.flat)
+ {
+ [self updatePitch:pitch];
+ }
+
+ if (self.scalesWithViewingDistance)
+ {
+ [self updateScaleForPitch:pitch];
+ }
+}
+
+- (void)updatePitch:(CGFloat)pitch
+{
+ CATransform3D t = CATransform3DRotate(CATransform3DIdentity, MGLRadiansFromDegrees(pitch), 1.0, 0, 0);
+ self.layer.transform = t;
+}
+
+- (void)updateScaleForPitch:(CGFloat)pitch
+{
+ CGFloat superviewHeight = CGRectGetHeight(self.superview.frame);
+ if (superviewHeight > 0.0) {
+ // Find the maximum amount of scale reduction to apply as the view's center moves from the top
+ // of the superview to the bottom. For example, if this view's center has moved 25% of the way
+ // from the top of the superview towards the bottom then the maximum scale reduction is 1 - .25
+ // or 75%. The range goes from a maximum of 100% to 0% as the view moves from the top to the bottom
+ // along the y axis of its superview.
+ CGFloat maxScaleReduction = 1.0 - self.center.y / superviewHeight;
+
+ // The pitch intensity represents how much the map view is actually pitched compared to
+ // what is possible. The value will range from 0% (not pitched at all) to 100% (pitched as much
+ // as the map view will allow). The map view's maximum pitch is defined in `mbgl::util::PITCH_MAX`.
+ // Since it is possible for the map view to report a pitch less than 0 due to the nature of
+ // how the gesture information is captured, the value is guarded with MAX.
+ CGFloat pitchIntensity = MAX(pitch, 0) / MGLDegreesFromRadians(mbgl::util::PITCH_MAX);
+
+ // The pitch adjusted scale is the inverse proportion of the maximum possible scale reduction
+ // multiplied by the pitch intensity. For example, if the maximum scale reduction is 75% and the
+ // map view is 50% pitched then the annotation view should be reduced by 37.5% (.75 * .5). The
+ // reduction is then normalized for a scale of 1.0.
+ CGFloat pitchAdjustedScale = 1.0 - maxScaleReduction * pitchIntensity;
+
+ CATransform3D transform = self.flat ? self.layer.transform : CATransform3DIdentity;
+ self.layer.transform = CATransform3DScale(transform, pitchAdjustedScale, pitchAdjustedScale, 1);
+ }
+}
+
+- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event
+{
+ // Allow mbgl to drive animation of this view’s bounds.
+ if ([event isEqualToString:@"bounds"])
+ {
+ return [NSNull null];
+ }
+ return [super actionForLayer:layer forKey:event];
+}
+
+#pragma mark UIAccessibility methods
+
+- (BOOL)isAccessibilityElement {
+ return !self.hidden;
+}
+
+- (UIAccessibilityTraits)accessibilityTraits {
+ return UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable;
+}
+
+- (NSString *)accessibilityLabel {
+ return [self.annotation respondsToSelector:@selector(title)] ? self.annotation.title : super.accessibilityLabel;
+}
+
+- (NSString *)accessibilityValue {
+ return [self.annotation respondsToSelector:@selector(subtitle)] ? self.annotation.subtitle : super.accessibilityValue;
+}
+
+- (NSString *)accessibilityHint {
+ return NSLocalizedStringWithDefaultValue(@"ANNOTATION_A11Y_HINT", nil, nil, @"Shows more info", @"Accessibility hint");
+}
+
+- (CGRect)accessibilityFrame {
+ CGRect accessibilityFrame = self.frame;
+ CGRect minimumFrame = CGRectInset({ self.center, CGSizeZero },
+ -MGLAnnotationAccessibilityElementMinimumSize.width / 2,
+ -MGLAnnotationAccessibilityElementMinimumSize.height / 2);
+ accessibilityFrame = CGRectUnion(accessibilityFrame, minimumFrame);
+ return accessibilityFrame;
+}
+
+- (void)accessibilityIncrement {
+ [self.superview accessibilityIncrement];
+}
+
+- (void)accessibilityDecrement {
+ [self.superview accessibilityDecrement];
+}
+
+@end \ No newline at end of file
diff --git a/platform/ios/src/MGLAnnotationView_Private.h b/platform/ios/src/MGLAnnotationView_Private.h
new file mode 100644
index 0000000000..c5a65487a2
--- /dev/null
+++ b/platform/ios/src/MGLAnnotationView_Private.h
@@ -0,0 +1,15 @@
+#import "MGLAnnotationView.h"
+#import "MGLAnnotation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MGLAnnotationView (Private)
+
+@property (nonatomic) id<MGLAnnotation> annotation;
+@property (nonatomic, readwrite, nullable) NSString *reuseIdentifier;
+
+- (void)setCenter:(CGPoint)center pitch:(CGFloat)pitch;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/include/MGLCalloutView.h b/platform/ios/src/MGLCalloutView.h
index 8e72ee9d68..641976dfee 100644
--- a/platform/ios/include/MGLCalloutView.h
+++ b/platform/ios/src/MGLCalloutView.h
@@ -62,6 +62,16 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (void)calloutViewTapped:(UIView<MGLCalloutView> *)calloutView;
+/**
+ Called before the callout view appears on screen, or before the appearance animation will start.
+ */
+- (void)calloutViewWillAppear:(UIView<MGLCalloutView> *)calloutView;
+
+/**
+ Called after the callout view appears on screen, or after the appearance animation is complete.
+ */
+- (void)calloutViewDidAppear:(UIView<MGLCalloutView> *)calloutView;
+
@end
-NS_ASSUME_NONNULL_END \ No newline at end of file
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLLocationManager.m b/platform/ios/src/MGLLocationManager.m
index b5740e3547..7a9faf5c8d 100644
--- a/platform/ios/src/MGLLocationManager.m
+++ b/platform/ios/src/MGLLocationManager.m
@@ -61,12 +61,16 @@ static NSString * const MGLLocationManagerRegionIdentifier = @"MGLLocationManage
}
- (void)startLocationServices {
- if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized ||
- [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) {
-
+ CLAuthorizationStatus authorizationStatus = [CLLocationManager authorizationStatus];
+#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000
+ BOOL authorizedAlways = authorizationStatus == kCLAuthorizationStatusAuthorizedAlways;
+#else
+ BOOL authorizedAlways = authorizationStatus == kCLAuthorizationStatusAuthorized;
+#endif
+ if (authorizedAlways || authorizationStatus == kCLAuthorizationStatusAuthorizedWhenInUse) {
// If the host app can run in the background with `always` location permissions then allow background
// updates and start the significant location change service and background timeout timer
- if (self.hostAppHasBackgroundCapability && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
+ if (self.hostAppHasBackgroundCapability && authorizedAlways) {
[self.standardLocationManager startMonitoringSignificantLocationChanges];
[self startBackgroundTimeoutTimer];
// On iOS 9 and above also allow background location updates
@@ -121,7 +125,11 @@ static NSString * const MGLLocationManagerRegionIdentifier = @"MGLLocationManage
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
switch (status) {
- case kCLAuthorizationStatusAuthorized: // Also handles kCLAuthorizationStatusAuthorizedAlways
+#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000
+ case kCLAuthorizationStatusAuthorizedAlways:
+#else
+ case kCLAuthorizationStatusAuthorized:
+#endif
case kCLAuthorizationStatusAuthorizedWhenInUse:
[self startUpdatingLocation];
break;
diff --git a/platform/ios/include/MGLMapView+IBAdditions.h b/platform/ios/src/MGLMapView+IBAdditions.h
index f18df56e01..f18df56e01 100644
--- a/platform/ios/include/MGLMapView+IBAdditions.h
+++ b/platform/ios/src/MGLMapView+IBAdditions.h
diff --git a/platform/ios/include/MGLMapView+MGLCustomStyleLayerAdditions.h b/platform/ios/src/MGLMapView+MGLCustomStyleLayerAdditions.h
index de4dc01f99..de4dc01f99 100644
--- a/platform/ios/include/MGLMapView+MGLCustomStyleLayerAdditions.h
+++ b/platform/ios/src/MGLMapView+MGLCustomStyleLayerAdditions.h
diff --git a/platform/ios/include/MGLMapView.h b/platform/ios/src/MGLMapView.h
index bfc1d3c679..63d799bda9 100644
--- a/platform/ios/include/MGLMapView.h
+++ b/platform/ios/src/MGLMapView.h
@@ -8,6 +8,7 @@
NS_ASSUME_NONNULL_BEGIN
+@class MGLAnnotationView;
@class MGLAnnotationImage;
@class MGLUserLocation;
@class MGLPolyline;
@@ -18,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN
@protocol MGLAnnotation;
@protocol MGLOverlay;
@protocol MGLCalloutView;
+@protocol MGLFeature;
/** The vertical alignment of an annotation within a map view. */
typedef NS_ENUM(NSUInteger, MGLAnnotationVerticalAlignment) {
@@ -41,6 +43,9 @@ typedef NS_OPTIONS(NSUInteger, MGLMapDebugMaskOptions) {
/** Edges of glyphs and symbols are shown as faint, green lines to help
diagnose collision and label placement issues. */
MGLMapDebugCollisionBoxesMask = 1 << 4,
+ /** Line widths, backgrounds, and fill colors are ignored to create a
+ wireframe effect. */
+ MGLMapDebugWireframesMask = 1 << 5,
};
/**
@@ -137,6 +142,20 @@ IB_DESIGNABLE
@property (nonatomic, null_resettable) NSURL *styleURL;
/**
+ Reloads the style.
+
+ You do not normally need to call this method. The map view automatically
+ responds to changes in network connectivity by reloading the style. You may
+ need to call this method if you change the access token after a style has
+ loaded but before loading a style associated with a different Mapbox account.
+
+ This method does not bust the cache. Even if the style has recently changed on
+ the server, calling this method does not necessarily ensure that the map view
+ reflects those changes.
+ */
+- (IBAction)reloadStyle:(id)sender;
+
+/**
A control indicating the map's direction and allowing the user to manipulate
the direction, positioned in the upper-right corner.
*/
@@ -719,6 +738,31 @@ IB_DESIGNABLE
- (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion;
/**
+ Returns the camera that best fits the given coordinate bounds.
+
+ @param bounds The coordinate bounds to fit to the receiver’s viewport.
+ @return A camera object centered on the same location as the coordinate
+ bounds with zoom level as high (close to the ground) as possible while still
+ including the entire coordinate bounds. The camera object uses the current
+ direction and pitch.
+ */
+- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds;
+
+/**
+ Returns the camera that best fits the given coordinate bounds, optionally with
+ some additional padding on each side.
+
+ @param bounds The coordinate bounds to fit to the receiver’s viewport.
+ @param insets The minimum padding (in screen points) that would be visible
+ around the returned camera object if it were set as the receiver’s camera.
+ @return A camera object centered on the same location as the coordinate bounds
+ with zoom level as high (close to the ground) as possible while still
+ including the entire coordinate bounds. The camera object uses the current
+ direction and pitch.
+ */
+- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets;
+
+/**
The distance from the edges of the map view’s frame to the edges of the map
view’s logical viewport.
@@ -837,6 +881,12 @@ IB_DESIGNABLE
/**
Adds an annotation to the map view.
+ @note `MGLMultiPolyline`, `MGLMultiPolygon`, and `MGLShapeCollection` objects
+ cannot be added to the map view at this time. Nor can `MGLMultiPoint`
+ objects that are not instances of `MGLPolyline` or `MGLPolygon`. Any
+ multipoint, multipolyline, multipolygon, or shape collection object that is
+ specified is silently ignored.
+
@param annotation The annotation object to add to the receiver. This object
must conform to the `MGLAnnotation` protocol. The map view retains the
annotation object. */
@@ -845,6 +895,12 @@ IB_DESIGNABLE
/**
Adds an array of annotations to the map view.
+ @note `MGLMultiPolyline`, `MGLMultiPolygon`, and `MGLShapeCollection` objects
+ cannot be added to the map view at this time. Nor can `MGLMultiPoint`
+ objects that are not instances of `MGLPolyline` or `MGLPolygon`. Any
+ multipoint, multipolyline, multipolygon, or shape collection objects that
+ are specified are silently ignored.
+
@param annotations An array of annotation objects. Each object in the array
must conform to the `MGLAnnotation` protocol. The map view retains each
individual annotation object.
@@ -892,6 +948,22 @@ IB_DESIGNABLE
*/
- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier;
+/**
+ Returns a reusable annotation view object associated with its identifier.
+
+ For performance reasons, you should generally reuse `MGLAnnotationView`
+ objects for identical-looking annotations in your map views. Dequeueing
+ saves time and memory during performance-critical operations such as
+ scrolling.
+
+ @param identifier A string identifying the annotation view to be reused.
+ This string is the same one you specify when initially returning the
+ annotation view object using the `-mapView:viewForAnnotation:` method.
+ @return An annotation view object with the given identifier, or `nil` if no
+ such object exists in the reuse queue.
+ */
+- (nullable MGLAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier;
+
#pragma mark Managing Annotation Selections
/**
@@ -962,6 +1034,132 @@ IB_DESIGNABLE
*/
- (void)removeOverlays:(NS_ARRAY_OF(id <MGLOverlay>) *)overlays;
+#pragma mark Accessing the Underlying Map Data
+
+/**
+ Returns an array of rendered map features that intersect with a given point.
+
+ This method may return features from any of the map’s style layers. To restrict
+ the search to a particular layer or layers, use the
+ `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
+ information about searching for map features, see that method’s documentation.
+
+ @param point A point expressed in the map view’s coordinate system.
+ @return An array of objects conforming to the `MGLFeature` protocol that
+ represent features in the sources used by the current style.
+ */
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesAtPoint:(CGPoint)point NS_SWIFT_NAME(visibleFeatures(at:));
+
+/**
+ Returns an array of rendered map features that intersect with a given point,
+ restricted to the given style layers.
+
+ Each object in the returned array represents a feature rendered by the
+ current style and provides access to attributes specified by the relevant
+ <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources">tile sources</a>.
+ The returned array includes features specified in vector and GeoJSON tile
+ sources but does not include anything from raster, image, or video sources.
+
+ Only visible features are returned. For example, suppose the current style uses
+ the
+ <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
+ but none of the specified style layers includes features that have the `maki`
+ property set to `bus`. If you pass a point corresponding to the location of a
+ bus stop into this method, the bus stop feature does not appear in the
+ resulting array. On the other hand, if the style does include bus stops, an
+ `MGLFeature` object representing that bus stop is returned and its
+ `featureAttributes` dictionary has the `maki` key set to `bus` (along with
+ other attributes). The dictionary contains only the attributes provided by the
+ tile source; it does not include computed attribute values or rules about how
+ the feature is rendered by the current style.
+
+ The returned array is sorted by z-order, starting with the topmost rendered
+ feature and ending with the bottommost rendered feature. A feature that is
+ rendered multiple times due to wrapping across the antimeridian at low zoom
+ levels is included only once, subject to the caveat that follows.
+
+ Features come from tiled vector data or GeoJSON data that is converted to tiles
+ internally, so feature geometries are clipped at tile boundaries and features
+ may appear duplicated across tiles. For example, suppose the specified point
+ lies along a road that spans the screen. The resulting array includes those
+ parts of the road that lie within the map tile that contain the specified
+ point, even if the road extends into other tiles.
+
+ To find out the layer names in a particular style, view the style in
+ <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
+
+ @param point A point expressed in the map view’s coordinate system.
+ @param styleLayerIdentifiers A set of strings that correspond to the names of
+ layers defined in the current style. Only the features contained in these
+ layers are included in the returned array.
+ @return An array of objects conforming to the `MGLFeature` protocol that
+ represent features in the sources used by the current style.
+ */
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(nullable NS_SET_OF(NSString *) *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(at:styleLayerIdentifiers:));
+
+/**
+ Returns an array of rendered map features that intersect with the given
+ rectangle.
+
+ This method may return features from any of the map’s style layers. To restrict
+ the search to a particular layer or layers, use the
+ `-visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:` method. For more
+ information about searching for map features, see that method’s documentation.
+
+ @param rect A rectangle expressed in the map view’s coordinate system.
+ @return An array of objects conforming to the `MGLFeature` protocol that
+ represent features in the sources used by the current style.
+ */
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesInRect:(CGRect)rect NS_SWIFT_NAME(visibleFeatures(in:));
+
+/**
+ Returns an array of rendered map features that intersect with the given
+ rectangle, restricted to the given style layers.
+
+ Each object in the returned array represents a feature rendered by the
+ current style and provides access to attributes specified by the relevant
+ <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources">tile sources</a>.
+ The returned array includes features specified in vector and GeoJSON tile
+ sources but does not include anything from raster, image, or video sources.
+
+ Only visible features are returned. For example, suppose the current style uses
+ the
+ <a href="https://www.mapbox.com/vector-tiles/mapbox-streets/">Mapbox Streets source</a>,
+ but none of the specified style layers includes features that have the `maki`
+ property set to `bus`. If you pass a rectangle containing the location of a bus
+ stop into this method, the bus stop feature does not appear in the resulting
+ array. On the other hand, if the style does include bus stops, an `MGLFeature`
+ object representing that bus stop is returned and its `featureAttributes`
+ dictionary has the `maki` key set to `bus` (along with other attributes). The
+ dictionary contains only the attributes provided by the tile source; it does
+ not include computed attribute values or rules about how the feature is
+ rendered by the current style.
+
+ The returned array is sorted by z-order, starting with the topmost rendered
+ feature and ending with the bottommost rendered feature. A feature that is
+ rendered multiple times due to wrapping across the antimeridian at low zoom
+ levels is included only once, subject to the caveat that follows.
+
+ Features come from tiled vector data or GeoJSON data that is converted to tiles
+ internally, so feature geometries are clipped at tile boundaries and features
+ may appear duplicated across tiles. For example, suppose the specified
+ rectangle intersects with a road that spans the screen. The resulting array
+ includes those parts of the road that lie within the map tiles covering the
+ specified rectangle, even if the road extends into other tiles. The portion of
+ the road within each map tile is included individually.
+
+ To find out the layer names in a particular style, view the style in
+ <a href="https://www.mapbox.com/studio/">Mapbox Studio</a>.
+
+ @param rect A rectangle expressed in the map view’s coordinate system.
+ @param styleLayerIdentifiers A set of strings that correspond to the names of
+ layers defined in the current style. Only the features contained in these
+ layers are included in the returned array.
+ @return An array of objects conforming to the `MGLFeature` protocol that
+ represent features in the sources used by the current style.
+ */
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(nullable NS_SET_OF(NSString *) *)styleLayerIdentifiers NS_SWIFT_NAME(visibleFeatures(in:styleLayerIdentifiers:));
+
#pragma mark Debugging the Map
/**
@@ -976,10 +1174,7 @@ IB_DESIGNABLE
- (void)toggleDebug __attribute__((deprecated("Use -setDebugMask:.")));
-/**
- Empties the in-memory tile cache.
- */
-- (void)emptyMemoryCache;
+- (void)emptyMemoryCache __attribute__((deprecated));
/**
Resets the map to the minimum zoom level, a center coordinate of (0, 0), and
@@ -989,272 +1184,4 @@ IB_DESIGNABLE
@end
-#pragma mark - MGLMapViewDelegate
-
-/** The MGLMapViewDelegate protocol defines a set of optional methods that you can use to receive map-related update messages. Because many map operations require the `MGLMapView` class to load data asynchronously, the map view calls these methods to notify your application when specific operations complete. The map view also uses these methods to request annotation marker symbology and to manage interactions with those markers. */
-@protocol MGLMapViewDelegate <NSObject>
-
-@optional
-
-#pragma mark Responding to Map Position Changes
-
-/**
- Tells the delegate that the region displayed by the map view is about to change.
-
- This method is called whenever the currently displayed map region will start changing.
-
- @param mapView The map view whose visible region will change.
- @param animated Whether the change will cause an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
-
-/**
- Tells the delegate that the region displayed by the map view is changing.
-
- This method is called whenever the currently displayed map region changes. During movement, this method may be called many times to report updates to the map position. Therefore, your implementation of this method should be as lightweight as possible to avoid affecting performance.
-
- @param mapView The map view whose visible region is changing.
- */
-- (void)mapViewRegionIsChanging:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the region displayed by the map view just changed.
-
- This method is called whenever the currently displayed map region has finished changing.
-
- @param mapView The map view whose visible region changed.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
-
-#pragma mark Loading the Map
-
-/**
- Tells the delegate that the map view will begin to load.
-
- This method is called whenever the map view starts loading, including when a new style has been set and the map must reload.
-
- @param mapView The map view that is starting to load.
- */
-- (void)mapViewWillStartLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has finished loading.
-
- This method is called whenever the map view finishes loading, either after the initial load or after a style change has forced a reload.
-
- @param mapView The map view that has finished loading.
- */
-- (void)mapViewDidFinishLoadingMap:(MGLMapView *)mapView;
-
-// TODO
-- (void)mapViewDidFailLoadingMap:(MGLMapView *)mapView withError:(NSError *)error;
-
-// TODO
-- (void)mapViewWillStartRenderingMap:(MGLMapView *)mapView;
-
-// TODO
-- (void)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-// TODO
-- (void)mapViewWillStartRenderingFrame:(MGLMapView *)mapView;
-
-// TODO
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-#pragma mark Tracking User Location
-
-/**
- Tells the delegate that the map view will begin tracking the user's location.
-
- This method is called when the value of the `showsUserLocation` property changes to `YES`.
-
- @param mapView The map view that is tracking the user's location.
- */
-- (void)mapViewWillStartLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has stopped tracking the user's location.
-
- This method is called when the value of the `showsUserLocation` property changes to `NO`.
-
- @param mapView The map view that is tracking the user's location.
- */
-- (void)mapViewDidStopLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the location of the user was updated.
-
- While the `showsUserLocation` property is set to `YES`, this method is called whenever a new location update is received by the map view. This method is also called if the map view's user tracking mode is set to `MGLUserTrackingModeFollowWithHeading` and the heading changes, or if it is set to `MGLUserTrackingModeFollowWithCourse` and the course changes.
-
- This method is not called if the application is currently running in the background. If you want to receive location updates while running in the background, you must use the Core Location framework.
-
- @param mapView The map view that is tracking the user's location.
- @param userLocation The location object representing the user's latest location. This property may be `nil`.
- */
-- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(nullable MGLUserLocation *)userLocation;
-
-/**
- Tells the delegate that an attempt to locate the user's position failed.
-
- @param mapView The map view that is tracking the user's location.
- @param error An error object containing the reason why location tracking failed.
- */
-- (void)mapView:(MGLMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
-
-/**
- Tells the delegate that the map view's user tracking mode has changed.
-
- This method is called after the map view asynchronously changes to reflect the new user tracking mode, for example by beginning to zoom or rotate.
-
- @param mapView The map view that changed its tracking mode.
- @param mode The new tracking mode.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView didChangeUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated;
-
-#pragma mark Managing the Display of Annotations
-
-/**
- Returns an image object to use for the marker for the specified point annotation object.
-
- @param mapView The map view that requested the annotation image.
- @param annotation The object representing the annotation that is about to be displayed.
- @return The image object to display for the specified annotation or `nil` if you want to display the default marker image.
- */
-- (nullable MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the alpha value to use when rendering a shape annotation. Defaults to `1.0`.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return An alpha value between `0` and `1.0`.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the stroke color to use when rendering a shape annotation. Defaults to the map view’s tint color.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return A color to use for the shape outline.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the fill color to use when rendering a polygon annotation. Defaults to the map view’s tint color.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return A color to use for the polygon interior.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
-
-/**
- Returns the line width to use when rendering a polyline annotation. Defaults to `3.0`.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return A line width for the polyline.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
-
-/**
- Returns a Boolean value indicating whether the annotation is able to display extra information in a callout bubble.
-
- If the value returned is `YES`, a standard callout bubble is shown when the user taps a selected annotation. The callout uses the title and subtitle text from the associated annotation object. If there is no title text, though, the annotation will not show a callout. The callout also displays any custom callout views returned by the delegate for the left and right callout accessory views.
-
- If the value returned is `NO`, the value of the title and subtitle strings are ignored.
-
- @param mapView The map view that requested the annotation callout ability.
- @param annotation The object representing the annotation.
- @return A Boolean indicating whether the annotation should show a callout.
- */
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation;
-
-/**
- Returns a callout view to display for the specified annotation.
-
- If this method is present in the delegate, it must return a new instance of a view dedicated to display the callout bubble. It will be configured by the map view. If this method is not present, or if it returns `nil`, a standard, two-line, bubble-like callout view is displayed by default.
-
- @param mapView The map view that requested the callout view.
- @param annotation The object representing the annotation.
- @return A view conforming to the `MGLCalloutView` protocol, or `nil` to use the default callout view.
- */
-- (nullable UIView <MGLCalloutView> *)mapView:(MGLMapView *)mapView calloutViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the left side of the standard callout bubble.
-
- The default value is treated as if `nil`. The left callout view is typically used to display information about the annotation or to link to custom information provided by your application.
-
- If the view you specify is also a descendant of the `UIControl` class, you can use the map view's delegate to receive notifications when your control is tapped. If it does not descend from `UIControl`, your view is responsible for handling any touch events within its bounds.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the right side of the standard callout bubble.
-
- The default value is treated is if `nil`. The right callout view is typically used to link to more detailed information about the annotation. A common view to specify for this property is `UIButton` object whose type is set to `UIButtonTypeDetailDisclosure`.
-
- If the view you specify is also a descendant of the `UIControl` class, you can use the map view's delegate to receive notifications when your control is tapped. If it does not descend from `UIControl`, your view is responsible for handling any touch events within its bounds.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-#pragma mark Managing Annotations
-
-/**
- Tells the delegate that the user tapped one of the annotation's accessory buttons.
-
- Accessory views contain custom content and are positioned on either side of the annotation title text. If a view you specify is a descendant of the `UIControl` class, the map view calls this method as a convenience whenever the user taps your view. You can use this method to respond to taps and perform any actions associated with that control. For example, if your control displayed additional information about the annotation, you could use this method to present a modal panel with that information.
-
- If your custom accessory views are not descendants of the `UIControl` class, the map view does not call this method.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose button was tapped.
- @param control The control that was tapped.
- */
-- (void)mapView:(MGLMapView *)mapView annotation:(id <MGLAnnotation>)annotation calloutAccessoryControlTapped:(UIControl *)control;
-
-/**
- Tells the delegate that the user tapped on an annotation's callout view.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose callout was tapped.
- */
-- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation;
-
-#pragma mark Selecting Annotations
-
-/**
- Tells the delegate that one of its annotations was selected.
-
- You can use this method to track changes in the selection state of annotations.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotations was deselected.
-
- You can use this method to track changes in the selection state of annotations.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation;
-
-@end
-
NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index 57e59be10d..5d1bcb1109 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -1,6 +1,4 @@
-#import "MGLMapView.h"
-#import "MGLMapView+IBAdditions.h"
-#import "MGLMapView+MGLCustomStyleLayerAdditions.h"
+#import "MGLMapView_Internal.h"
#import <mbgl/platform/log.hpp>
#import <mbgl/gl/gl.hpp>
@@ -9,8 +7,7 @@
#import <OpenGLES/EAGL.h>
#include <mbgl/mbgl.hpp>
-#include <mbgl/annotation/point_annotation.hpp>
-#include <mbgl/annotation/shape_annotation.hpp>
+#include <mbgl/annotation/annotation.hpp>
#include <mbgl/sprite/sprite_image.hpp>
#include <mbgl/map/camera.hpp>
#include <mbgl/map/mode.hpp>
@@ -18,19 +15,21 @@
#include <mbgl/platform/darwin/reachability.h>
#include <mbgl/storage/default_file_source.hpp>
#include <mbgl/storage/network_status.hpp>
+#include <mbgl/style/transition_options.hpp>
+#include <mbgl/style/layers/custom_layer.hpp>
+#include <mbgl/math/wrap.hpp>
#include <mbgl/util/geo.hpp>
-#include <mbgl/util/math.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/util/image.hpp>
#include <mbgl/util/projection.hpp>
-#include <mbgl/util/std.hpp>
#include <mbgl/util/default_styles.hpp>
#include <mbgl/util/chrono.hpp>
#import "Mapbox.h"
-#import "../../darwin/src/MGLGeometry_Private.h"
-#import "../../darwin/src/MGLMultiPoint_Private.h"
-#import "../../darwin/src/MGLOfflineStorage_Private.h"
+#import "MGLFeature_Private.h"
+#import "MGLGeometry_Private.h"
+#import "MGLMultiPoint_Private.h"
+#import "MGLOfflineStorage_Private.h"
#import "NSBundle+MGLAdditions.h"
#import "NSString+MGLAdditions.h"
@@ -39,8 +38,10 @@
#import "MGLUserLocationAnnotationView.h"
#import "MGLUserLocation_Private.h"
#import "MGLAnnotationImage_Private.h"
+#import "MGLAnnotationView_Private.h"
#import "MGLMapboxEvents.h"
#import "MGLCompactCalloutView.h"
+#import "MGLAnnotationContainerView.h"
#import <algorithm>
#import <cstdlib>
@@ -60,8 +61,6 @@ typedef NS_ENUM(NSUInteger, MGLUserTrackingState) {
MGLUserTrackingStateChanged,
};
-NSString *const MGLMapboxSetupDocumentationURLDisplayString = @"mapbox.com/help/first-steps-ios-sdk";
-
const NSTimeInterval MGLAnimationDuration = 0.3;
/// Duration of an animation due to a user location update, typically chosen to
@@ -99,6 +98,8 @@ const CGFloat MGLAnnotationImagePaddingForHitTest = 5;
/// Distance from the callout’s anchor point to the annotation it points to.
const CGFloat MGLAnnotationImagePaddingForCallout = 1;
+const CGSize MGLAnnotationAccessibilityElementMinimumSize = CGSizeMake(10, 10);
+
/// Unique identifier representing a single annotation in mbgl.
typedef uint32_t MGLAnnotationTag;
@@ -132,15 +133,69 @@ mbgl::Color MGLColorObjectFromUIColor(UIColor *color)
return {{ (float)r, (float)g, (float)b, (float)a }};
}
+@interface MGLAnnotationAccessibilityElement : UIAccessibilityElement
+
+@property (nonatomic) MGLAnnotationTag tag;
+
+- (instancetype)initWithAccessibilityContainer:(id)container tag:(MGLAnnotationTag)identifier NS_DESIGNATED_INITIALIZER;
+
+@end
+
+@implementation MGLAnnotationAccessibilityElement
+
+- (instancetype)initWithAccessibilityContainer:(id)container tag:(MGLAnnotationTag)tag
+{
+ if (self = [super initWithAccessibilityContainer:container])
+ {
+ _tag = tag;
+ self.accessibilityTraits = UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable;
+ }
+ return self;
+}
+
+- (void)accessibilityIncrement
+{
+ [self.accessibilityContainer accessibilityIncrement];
+}
+
+- (void)accessibilityDecrement
+{
+ [self.accessibilityContainer accessibilityDecrement];
+}
+
+@end
+
/// Lightweight container for metadata about an annotation, including the annotation itself.
class MGLAnnotationContext {
public:
id <MGLAnnotation> annotation;
- /// mbgl-given identifier for the annotation image used by this annotation.
- /// Based on the annotation image’s reusable identifier.
- NSString *symbolIdentifier;
+ /// The annotation’s image’s reuse identifier.
+ NSString *imageReuseIdentifier;
+ MGLAnnotationAccessibilityElement *accessibilityElement;
+ MGLAnnotationView *annotationView;
+ NSString *viewReuseIdentifier;
};
+/** An accessibility element representing the MGLMapView at large. */
+@interface MGLMapViewProxyAccessibilityElement : UIAccessibilityElement
+
+@end
+
+@implementation MGLMapViewProxyAccessibilityElement
+
+- (instancetype)initWithAccessibilityContainer:(id)container
+{
+ if (self = [super initWithAccessibilityContainer:container])
+ {
+ self.accessibilityTraits = UIAccessibilityTraitButton;
+ self.accessibilityLabel = [self.accessibilityContainer accessibilityLabel];
+ self.accessibilityHint = @"Returns to the map";
+ }
+ return self;
+}
+
+@end
+
#pragma mark - Private -
@interface MGLMapView () <UIGestureRecognizerDelegate,
@@ -180,6 +235,8 @@ public:
@property (nonatomic) CGFloat quickZoomStart;
@property (nonatomic, getter=isDormant) BOOL dormant;
@property (nonatomic, readonly, getter=isRotationAllowed) BOOL rotationAllowed;
+@property (nonatomic) MGLMapViewProxyAccessibilityElement *mapViewProxyAccessibilityElement;
+@property (nonatomic) MGLAnnotationContainerView *annotationContainerView;
@end
@@ -191,14 +248,18 @@ public:
BOOL _opaque;
NS_MUTABLE_ARRAY_OF(NSURL *) *_bundledStyleURLs;
-
+
MGLAnnotationContextMap _annotationContextsByAnnotationTag;
/// Tag of the selected annotation. If the user location annotation is selected, this ivar is set to `MGLAnnotationTagNotFound`.
MGLAnnotationTag _selectedAnnotationTag;
+ NS_MUTABLE_DICTIONARY_OF(NSString *, NS_MUTABLE_ARRAY_OF(MGLAnnotationView *) *) *_annotationViewReuseQueueByIdentifier;
+
BOOL _userLocationAnnotationIsSelected;
/// Size of the rectangle formed by unioning the maximum slop area around every annotation image.
CGSize _unionedAnnotationImageSize;
std::vector<MGLAnnotationTag> _annotationsNearbyLastTap;
+ CGPoint _initialImplicitCalloutViewOffset;
+ NSDate *_userLocationAnimationCompletionDate;
BOOL _isWaitingForRedundantReachableNotification;
BOOL _isTargetingInterfaceBuilder;
@@ -219,6 +280,10 @@ public:
BOOL _delegateHasStrokeColorsForShapeAnnotations;
BOOL _delegateHasFillColorsForShapeAnnotations;
BOOL _delegateHasLineWidthsForShapeAnnotations;
+
+ MGLCompassDirectionFormatter *_accessibilityCompassFormatter;
+
+ CGSize _largestAnnotationViewSize;
}
#pragma mark - Setup & Teardown -
@@ -288,6 +353,12 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
_mbglMap->setStyleURL([[styleURL absoluteString] UTF8String]);
}
+- (IBAction)reloadStyle:(__unused id)sender {
+ NSURL *styleURL = self.styleURL;
+ _mbglMap->setStyleURL("");
+ self.styleURL = styleURL;
+}
+
- (void)commonInit
{
_isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent;
@@ -299,7 +370,14 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self createGLView];
}
- self.accessibilityLabel = @"Map";
+ // setup accessibility
+ //
+// self.isAccessibilityElement = YES;
+ self.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"MAP_A11Y_LABEL", nil, nil, @"Map", @"Accessibility label");
+ self.accessibilityTraits = UIAccessibilityTraitAllowsDirectInteraction | UIAccessibilityTraitAdjustable;
+ _accessibilityCompassFormatter = [[MGLCompassDirectionFormatter alloc] init];
+ _accessibilityCompassFormatter.unitStyle = NSFormattingUnitStyleLong;
+
self.backgroundColor = [UIColor clearColor];
self.clipsToBounds = YES;
@@ -314,12 +392,12 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// setup mbgl map
mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource;
- _mbglMap = new mbgl::Map(*_mbglView, *mbglFileSource, mbgl::MapMode::Continuous, mbgl::GLContextMode::Unique, mbgl::ConstrainMode::None);
+ _mbglMap = new mbgl::Map(*_mbglView, *mbglFileSource, mbgl::MapMode::Continuous, mbgl::GLContextMode::Unique, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default);
+ [self validateTileCacheSize];
// start paused if in IB
if (_isTargetingInterfaceBuilder || background) {
self.dormant = YES;
- _mbglMap->pause();
}
// Notify map object when network reachability status changes.
@@ -338,6 +416,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// Set up annotation management and selection state.
_annotationImagesByIdentifier = [NSMutableDictionary dictionary];
_annotationContextsByAnnotationTag = {};
+ _annotationViewReuseQueueByIdentifier = [NSMutableDictionary dictionary];
_selectedAnnotationTag = MGLAnnotationTagNotFound;
_annotationsNearbyLastTap = {};
@@ -345,7 +424,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
//
UIImage *logo = [[MGLMapView resourceImageNamed:@"mapbox.png"] imageWithAlignmentRectInsets:UIEdgeInsetsMake(1.5, 4, 3.5, 2)];
_logoView = [[UIImageView alloc] initWithImage:logo];
- _logoView.accessibilityLabel = @"Mapbox logo";
+ _logoView.accessibilityTraits = UIAccessibilityTraitStaticText;
+ _logoView.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"LOGO_A11Y_LABEL", nil, nil, @"Mapbox", @"Accessibility label");
_logoView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_logoView];
_logoViewConstraints = [NSMutableArray array];
@@ -353,7 +433,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// setup attribution
//
_attributionButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
- _attributionButton.accessibilityLabel = @"Attribution info";
+ _attributionButton.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"INFO_A11Y_LABEL", nil, nil, @"About this map", @"Accessibility label");
+ _attributionButton.accessibilityHint = NSLocalizedStringWithDefaultValue(@"INFO_A11Y_HINT", nil, nil, @"Shows credits, a feedback form, and more", @"Accessibility hint");
[_attributionButton addTarget:self action:@selector(showAttribution) forControlEvents:UIControlEventTouchUpInside];
_attributionButton.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_attributionButton];
@@ -362,12 +443,14 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// setup compass
//
- _compassView = [[UIImageView alloc] initWithImage:[MGLMapView resourceImageNamed:@"Compass.png"]];
- _compassView.accessibilityLabel = @"Compass";
- _compassView.frame = CGRectMake(0, 0, _compassView.image.size.width, _compassView.image.size.height);
+ _compassView = [[UIImageView alloc] initWithImage:self.compassImage];
+ _compassView.frame = { CGPointZero, _compassView.image.size };
_compassView.alpha = 0;
_compassView.userInteractionEnabled = YES;
[_compassView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleCompassTapGesture:)]];
+ _compassView.accessibilityTraits = UIAccessibilityTraitButton;
+ _compassView.accessibilityLabel = NSLocalizedStringWithDefaultValue(@"COMPASS_A11Y_LABEL", nil, nil, @"Compass", @"Accessibility label");
+ _compassView.accessibilityHint = NSLocalizedStringWithDefaultValue(@"COMPASS_A11Y_HINT", nil, nil, @"Rotates the map to face due north", @"Accessibility hint");
UIView *container = [[UIView alloc] initWithFrame:CGRectZero];
[container addSubview:_compassView];
container.translatesAutoresizingMaskIntoConstraints = NO;
@@ -469,7 +552,6 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
_glView.delegate = self;
[_glView bindDrawable];
[self insertSubview:_glView atIndex:0];
-
_glView.contentMode = UIViewContentModeCenter;
// load extensions
@@ -488,6 +570,26 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
});
}
+- (UIImage *)compassImage
+{
+ UIImage *scaleImage = [MGLMapView resourceImageNamed:@"Compass.png"];
+ UIGraphicsBeginImageContextWithOptions(scaleImage.size, NO, [UIScreen mainScreen].scale);
+ [scaleImage drawInRect:{ CGPointZero, scaleImage.size }];
+
+ NSAttributedString *north = [[NSAttributedString alloc] initWithString:NSLocalizedStringWithDefaultValue(@"COMPASS_NORTH", nil, nil, @"N", @"Compass abbreviation for north") attributes:@{
+ NSFontAttributeName: [UIFont systemFontOfSize:9 weight:UIFontWeightUltraLight],
+ NSForegroundColorAttributeName: [UIColor whiteColor],
+ }];
+ CGRect stringRect = CGRectMake((scaleImage.size.width - north.size.width) / 2,
+ scaleImage.size.height * 0.45,
+ north.size.width, north.size.height);
+ [north drawInRect:stringRect];
+
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
+ return image;
+}
+
- (void)reachabilityChanged:(NSNotification *)notification
{
MGLReachability *reachability = [notification object];
@@ -503,6 +605,13 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[[NSNotificationCenter defaultCenter] removeObserver:self];
[_attributionButton removeObserver:self forKeyPath:@"hidden"];
+ // Removing the annotations unregisters any outstanding KVO observers.
+ NSArray *annotations = self.annotations;
+ if (annotations)
+ {
+ [self removeAnnotations:annotations];
+ }
+
[self validateDisplayLink];
if (_mbglMap)
@@ -533,14 +642,6 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if (_delegate == delegate) return;
_delegate = delegate;
-
- if ([delegate respondsToSelector:@selector(mapView:symbolNameForAnnotation:)])
- {
- [NSException raise:@"Method unavailable" format:
- @"-mapView:symbolNameForAnnotation: has been removed from the MGLMapViewDelegate protocol, but %@ still implements it. "
- @"Implement -[%@ mapView:imageForAnnotation:] instead.",
- NSStringFromClass([delegate class]), NSStringFromClass([delegate class])];
- }
_delegateHasAlphasForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:alphaForShapeAnnotation:)];
_delegateHasStrokeColorsForShapeAnnotations = [_delegate respondsToSelector:@selector(mapView:strokeColorForShapeAnnotation:)];
@@ -558,15 +659,37 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)setFrame:(CGRect)frame
{
[super setFrame:frame];
-
- [self setNeedsLayout];
+ if ( ! CGRectEqualToRect(frame, self.frame))
+ {
+ [self validateTileCacheSize];
+ }
}
- (void)setBounds:(CGRect)bounds
{
[super setBounds:bounds];
+ if ( ! CGRectEqualToRect(bounds, self.bounds))
+ {
+ [self validateTileCacheSize];
+ }
+}
+
+- (void)validateTileCacheSize
+{
+ if ( ! _mbglMap)
+ {
+ return;
+ }
+
+ CGFloat zoomFactor = self.maximumZoomLevel - self.minimumZoomLevel + 1;
+ CGFloat cpuFactor = [NSProcessInfo processInfo].processorCount;
+ CGFloat memoryFactor = (CGFloat)[NSProcessInfo processInfo].physicalMemory / 1000 / 1000 / 1000;
+ CGFloat sizeFactor = (CGRectGetWidth(self.bounds) / mbgl::util::tileSize) *
+ (CGRectGetHeight(self.bounds) / mbgl::util::tileSize);
+
+ NSUInteger cacheSize = zoomFactor * cpuFactor * memoryFactor * sizeFactor * 0.5;
- [self setNeedsLayout];
+ _mbglMap->setSourceTileCacheSize(cacheSize);
}
+ (BOOL)requiresConstraintBasedLayout
@@ -636,6 +759,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
multiplier:1
constant:5]];
+ UIImage *compassImage = self.compassView.image;
[compassContainerConstraints addObject:
[NSLayoutConstraint constraintWithItem:compassContainer
attribute:NSLayoutAttributeWidth
@@ -643,7 +767,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
- constant:self.compassView.image.size.width]];
+ constant:compassImage.size.width]];
[compassContainerConstraints addObject:
[NSLayoutConstraint constraintWithItem:compassContainer
@@ -652,7 +776,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
- constant:self.compassView.image.size.height]];
+ constant:compassImage.size.height]];
[constraintParentView addConstraints:compassContainerConstraints];
// logo bug
@@ -741,17 +865,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ( ! self.dormant)
{
- CGFloat zoomFactor = _mbglMap->getMaxZoom() - _mbglMap->getMinZoom() + 1;
- CGFloat cpuFactor = (CGFloat)[[NSProcessInfo processInfo] processorCount];
- CGFloat memoryFactor = (CGFloat)[[NSProcessInfo processInfo] physicalMemory] / 1000 / 1000 / 1000;
- CGFloat sizeFactor = ((CGFloat)_mbglMap->getWidth() / mbgl::util::tileSize) *
- ((CGFloat)_mbglMap->getHeight() / mbgl::util::tileSize);
-
- NSUInteger cacheSize = zoomFactor * cpuFactor * memoryFactor * sizeFactor * 0.5;
-
- _mbglMap->setSourceTileCacheSize(cacheSize);
-
- _mbglMap->renderSync();
+ _mbglMap->render();
[self updateUserLocationAnnotationView];
}
@@ -894,7 +1008,6 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
[self validateDisplayLink];
self.dormant = YES;
- _mbglMap->pause();
[self.glView deleteDrawable];
}
}
@@ -967,8 +1080,6 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self.glSnapshotView addSubview:snapshotTint];
}
- _mbglMap->pause();
-
[self.glView deleteDrawable];
}
}
@@ -988,8 +1099,6 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self.glSnapshotView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.glView bindDrawable];
-
- _mbglMap->resume();
_displayLink.paused = NO;
@@ -1017,6 +1126,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
for (UIView *subview in view.subviews) [self updateTintColorForView:subview];
}
+- (BOOL)canBecomeFirstResponder {
+ return YES;
+}
+
#pragma mark - Gestures -
- (void)handleCompassTapGesture:(__unused id)sender
@@ -1142,7 +1255,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if (log2(newScale) < _mbglMap->getMinZoom()) return;
- _mbglMap->setScale(newScale, { centerPoint.x, centerPoint.y });
+ _mbglMap->setScale(newScale, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
// The gesture recognizer only reports the gesture’s current center
// point, so use the previous center point to anchor the transition.
@@ -1152,7 +1265,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
CLLocationCoordinate2D centerCoordinate = _previousPinchCenterCoordinate;
_mbglMap->setLatLng(MGLLatLngFromLocationCoordinate2D(centerCoordinate),
- { centerPoint.x, centerPoint.y });
+ mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
}
[self notifyMapChange:mbgl::MapChangeRegionIsChanging];
@@ -1190,7 +1303,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if (velocity)
{
- _mbglMap->setScale(newScale, { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(duration));
+ _mbglMap->setScale(newScale, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(duration));
}
[self notifyGestureDidEndWithDrift:velocity];
@@ -1239,7 +1352,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
newDegrees = fmaxf(newDegrees, -30);
}
- _mbglMap->setBearing(newDegrees, { centerPoint.x, centerPoint.y });
+ _mbglMap->setBearing(newDegrees, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
[self notifyMapChange:mbgl::MapChangeRegionIsChanging];
}
@@ -1254,7 +1367,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
CGFloat newRadians = radians + velocity * duration * 0.1;
CGFloat newDegrees = MGLDegreesFromRadians(newRadians) * -1;
- _mbglMap->setBearing(newDegrees, { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(duration));
+ _mbglMap->setBearing(newDegrees, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(duration));
[self notifyGestureDidEndWithDrift:YES];
@@ -1280,24 +1393,40 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
return;
}
[self trackGestureEvent:MGLEventGestureSingleTap forRecognizer:singleTap];
+
+ if (self.mapViewProxyAccessibilityElement.accessibilityElementIsFocused)
+ {
+ id nextElement;
+ if (_userLocationAnnotationIsSelected)
+ {
+ nextElement = self.userLocationAnnotationView;
+ }
+ else
+ {
+ nextElement = _annotationContextsByAnnotationTag[_selectedAnnotationTag].accessibilityElement;
+ }
+ [self deselectAnnotation:self.selectedAnnotation animated:YES];
+ UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nextElement);
+ return;
+ }
CGPoint tapPoint = [singleTap locationInView:self];
- if (self.userLocationVisible)
+ if (self.userLocationVisible
+ && [self.userLocationAnnotationView.layer.presentationLayer hitTest:tapPoint])
{
- // Assume that the user is fat-fingering an annotation.
- CGRect hitRect = CGRectInset({ tapPoint, CGSizeZero },
- -MGLAnnotationImagePaddingForHitTest,
- -MGLAnnotationImagePaddingForHitTest);
-
- if (CGRectIntersectsRect(hitRect, self.userLocationAnnotationView.frame))
+ if ( ! _userLocationAnnotationIsSelected)
{
- if ( ! _userLocationAnnotationIsSelected)
- {
- [self selectAnnotation:self.userLocation animated:YES];
- }
- return;
+ [self selectAnnotation:self.userLocation animated:YES];
}
+ return;
+ }
+
+ MGLAnnotationView *hitAnnotationView = [self annotationViewAtPoint:tapPoint];
+ if (hitAnnotationView)
+ {
+ [self selectAnnotation:hitAnnotationView.annotation animated:YES];
+ return;
}
MGLAnnotationTag hitAnnotationTag = [self annotationTagAtPoint:tapPoint persistingResults:YES];
@@ -1405,7 +1534,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
centerPoint = self.userLocationAnnotationViewCenter;
}
_mbglMap->scaleBy(powf(2, newZoom) / _mbglMap->getScale(),
- { centerPoint.x, centerPoint.y });
+ mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
[self notifyMapChange:mbgl::MapChangeRegionIsChanging];
}
@@ -1440,7 +1569,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
centerPoint = self.userLocationAnnotationViewCenter;
}
- _mbglMap->setPitch(pitchNew, centerPoint);
+ _mbglMap->setPitch(pitchNew, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
[self notifyMapChange:mbgl::MapChangeRegionIsChanging];
}
@@ -1479,7 +1608,9 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if ([self.delegate respondsToSelector:@selector(mapView:annotation:calloutAccessoryControlTapped:)])
{
NSAssert([tap.view isKindOfClass:[UIControl class]], @"Tapped view %@ is not a UIControl", tap.view);
- [self.delegate mapView:self annotation:self.selectedAnnotation
+ id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
+ NSAssert(selectedAnnotation, @"Selected annotation should not be nil.");
+ [self.delegate mapView:self annotation:selectedAnnotation
calloutAccessoryControlTapped:(UIControl *)tap.view];
}
}
@@ -1493,7 +1624,9 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ([self.delegate respondsToSelector:@selector(mapView:tapOnCalloutForAnnotation:)])
{
- [self.delegate mapView:self tapOnCalloutForAnnotation:self.selectedAnnotation];
+ id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
+ NSAssert(selectedAnnotation, @"Selected annotation should not be nil.");
+ [self.delegate mapView:self tapOnCalloutForAnnotation:selectedAnnotation];
}
}
@@ -1501,10 +1634,18 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ([self.delegate respondsToSelector:@selector(mapView:tapOnCalloutForAnnotation:)])
{
- [self.delegate mapView:self tapOnCalloutForAnnotation:self.selectedAnnotation];
+ id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
+ NSAssert(selectedAnnotation, @"Selected annotation should not be nil.");
+ [self.delegate mapView:self tapOnCalloutForAnnotation:selectedAnnotation];
}
}
+- (void)calloutViewDidAppear:(UIView<MGLCalloutView> *)calloutView
+{
+ UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil);
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, calloutView);
+}
+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
NSArray *validSimultaneousGestures = @[ self.pan, self.pinch, self.rotate ];
@@ -1532,15 +1673,15 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ( ! self.attributionSheet)
{
- self.attributionSheet = [[UIActionSheet alloc] initWithTitle:@"Mapbox iOS SDK"
+ self.attributionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title")
delegate:self
- cancelButtonTitle:@"Cancel"
+ cancelButtonTitle:NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"")
destructiveButtonTitle:nil
otherButtonTitles:
- @"© Mapbox",
- @"© OpenStreetMap",
- @"Improve This Map",
- @"Mapbox Telemetry",
+ NSLocalizedStringWithDefaultValue(@"COPY_MAPBOX", nil, nil, @"© Mapbox", @"Copyright notice in attribution sheet"),
+ NSLocalizedStringWithDefaultValue(@"COPY_OSM", nil, nil, @"© OpenStreetMap", @"Copyright notice in attribution sheet"),
+ NSLocalizedStringWithDefaultValue(@"MAP_FEEDBACK", nil, nil, @"Improve This Map", @"Action in attribution sheet"),
+ NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet"),
nil];
}
@@ -1575,22 +1716,22 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"])
{
- message = @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
- participate = @"Keep Participating";
- optOut = @"Stop Participating";
+ message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
+ participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
+ optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
}
else
{
- message = @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.";
- participate = @"Participate";
- optOut = @"Don’t Participate";
+ message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
+ participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
+ optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
}
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Make Mapbox Maps Better"
+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title")
message:message
delegate:self
cancelButtonTitle:participate
- otherButtonTitles:@"Tell Me More", optOut, nil];
+ otherButtonTitles:NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button"), optOut, nil];
[alert show];
}
}
@@ -1604,7 +1745,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
else if (buttonIndex == alertView.firstOtherButtonIndex)
{
[[UIApplication sharedApplication] openURL:
- [NSURL URLWithString:@"https://mapbox.com/telemetry/"]];
+ [NSURL URLWithString:@"https://www.mapbox.com/telemetry/"]];
}
else if (buttonIndex == alertView.firstOtherButtonIndex + 1)
{
@@ -1614,7 +1755,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
#pragma mark - Properties -
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(__unused void *)context
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"hidden"] && object == _attributionButton)
{
@@ -1625,6 +1766,35 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[MGLMapboxEvents ensureMetricsOptoutExists];
}
}
+ else if ([keyPath isEqualToString:@"coordinate"] && [object conformsToProtocol:@protocol(MGLAnnotation)] && ![object isKindOfClass:[MGLMultiPoint class]])
+ {
+ id <MGLAnnotation> annotation = object;
+ MGLAnnotationTag annotationTag = (MGLAnnotationTag)(NSUInteger)context;
+ // We can get here because a subclass registered itself as an observer
+ // of the coordinate key path of a non-multipoint annotation but failed
+ // to handle the change. This check deters us from treating the
+ // subclass’s context as an annotation tag. If the context happens to
+ // match a valid annotation tag, the annotation will be unnecessarily
+ // but safely updated.
+ if (annotation == [self annotationWithTag:annotationTag])
+ {
+ const mbgl::Point<double> point = MGLPointFromLocationCoordinate2D(annotation.coordinate);
+
+ MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
+ NSString *symbolName;
+ if (!annotationContext.annotationView)
+ {
+ MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
+ symbolName = annotationImage.styleIconIdentifier;
+ }
+
+ _mbglMap->updateAnnotation(annotationTag, mbgl::SymbolAnnotation { point, symbolName.UTF8String ?: "" });
+ if (annotationTag == _selectedAnnotationTag)
+ {
+ [self deselectAnnotation:annotation animated:YES];
+ }
+ }
+ }
}
+ (NS_SET_OF(NSString *) *)keyPathsForValuesAffectingZoomEnabled
@@ -1667,6 +1837,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
mask |= MGLMapDebugCollisionBoxesMask;
}
+ if (options & mbgl::MapDebugOptions::Wireframe)
+ {
+ mask |= MGLMapDebugWireframesMask;
+ }
return mask;
}
@@ -1689,6 +1863,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
options |= mbgl::MapDebugOptions::Collision;
}
+ if (debugMask & MGLMapDebugWireframesMask)
+ {
+ options |= mbgl::MapDebugOptions::Wireframe;
+ }
_mbglMap->setDebug(options);
}
@@ -1731,6 +1909,242 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
_mbglMap->onLowMemory();
}
+#pragma mark - Accessibility -
+
+- (NSString *)accessibilityValue
+{
+ double zoomLevel = round(self.zoomLevel + 1);
+ return [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"MAP_A11Y_VALUE", nil, nil, @"Zoom %dx\n%ld annotation(s) visible", @"Map accessibility value"), (int)zoomLevel, (long)self.accessibilityAnnotationCount];
+}
+
+- (CGRect)accessibilityFrame
+{
+ CGRect frame = [super accessibilityFrame];
+ UIViewController *viewController = self.viewControllerForLayoutGuides;
+ if (viewController)
+ {
+ CGFloat topInset = viewController.topLayoutGuide.length;
+ frame.origin.y += topInset;
+ frame.size.height -= topInset + viewController.bottomLayoutGuide.length;
+ }
+ return frame;
+}
+
+- (UIBezierPath *)accessibilityPath
+{
+ UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.accessibilityFrame];
+
+ // Exclude any visible annotation callout view.
+ if (self.calloutViewForSelectedAnnotation)
+ {
+ UIBezierPath *calloutViewPath = [UIBezierPath bezierPathWithRect:self.calloutViewForSelectedAnnotation.frame];
+ [path appendPath:calloutViewPath];
+ }
+
+ return path;
+}
+
+- (NSInteger)accessibilityElementCount
+{
+ if (self.calloutViewForSelectedAnnotation)
+ {
+ return 2 /* selectedAnnotationCalloutView, mapViewProxyAccessibilityElement */;
+ }
+ NSInteger count = self.accessibilityAnnotationCount + 2 /* compass, attributionButton */;
+ if (self.userLocationAnnotationView)
+ {
+ count++;
+ }
+ return count;
+}
+
+- (NSInteger)accessibilityAnnotationCount
+{
+ std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
+ return visibleAnnotations.size();
+}
+
+- (id)accessibilityElementAtIndex:(NSInteger)index
+{
+ if (self.calloutViewForSelectedAnnotation)
+ {
+ if (index == 0)
+ {
+ return self.calloutViewForSelectedAnnotation;
+ }
+ if (index == 1)
+ {
+ self.mapViewProxyAccessibilityElement.accessibilityFrame = self.accessibilityFrame;
+ self.mapViewProxyAccessibilityElement.accessibilityPath = self.accessibilityPath;
+ return self.mapViewProxyAccessibilityElement;
+ }
+ return nil;
+ }
+ std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
+
+ // Ornaments
+ if (index == 0)
+ {
+ return self.compassView;
+ }
+ if ( ! self.userLocationAnnotationView)
+ {
+ index++;
+ }
+ else if (index == 1)
+ {
+ return self.userLocationAnnotationView;
+ }
+ if (index > 0 && (NSUInteger)index == visibleAnnotations.size() + 2 /* compass, userLocationAnnotationView */)
+ {
+ return self.attributionButton;
+ }
+
+ std::sort(visibleAnnotations.begin(), visibleAnnotations.end());
+ CGPoint centerPoint = self.contentCenter;
+ if (self.userTrackingMode != MGLUserTrackingModeNone)
+ {
+ centerPoint = self.userLocationAnnotationViewCenter;
+ }
+ CLLocationCoordinate2D currentCoordinate = [self convertPoint:centerPoint toCoordinateFromView:self];
+ std::sort(visibleAnnotations.begin(), visibleAnnotations.end(), [&](const MGLAnnotationTag tagA, const MGLAnnotationTag tagB) {
+ CLLocationCoordinate2D coordinateA = [[self annotationWithTag:tagA] coordinate];
+ CLLocationCoordinate2D coordinateB = [[self annotationWithTag:tagB] coordinate];
+ CLLocationDegrees deltaA = hypot(coordinateA.latitude - currentCoordinate.latitude,
+ coordinateA.longitude - currentCoordinate.longitude);
+ CLLocationDegrees deltaB = hypot(coordinateB.latitude - currentCoordinate.latitude,
+ coordinateB.longitude - currentCoordinate.longitude);
+ return deltaA < deltaB;
+ });
+
+ NSUInteger annotationIndex = MGLAnnotationTagNotFound;
+ if (index >= 0 && (NSUInteger)(index - 2) < visibleAnnotations.size())
+ {
+ annotationIndex = index - 2 /* compass, userLocationAnnotationView */;
+ }
+ MGLAnnotationTag annotationTag = visibleAnnotations[annotationIndex];
+ NSAssert(annotationTag != MGLAnnotationTagNotFound, @"Can’t get accessibility element for nonexistent or invisible annotation at index %li.", (long)index);
+ NSAssert(_annotationContextsByAnnotationTag.count(annotationTag), @"Missing annotation for tag %u.", annotationTag);
+ MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
+ id <MGLAnnotation> annotation = annotationContext.annotation;
+
+ // Let the annotation view serve as its own accessibility element.
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+ if (annotationView && annotationView.superview)
+ {
+ return annotationView;
+ }
+
+ // Lazily create an accessibility element for the found annotation.
+ if ( ! annotationContext.accessibilityElement)
+ {
+ annotationContext.accessibilityElement = [[MGLAnnotationAccessibilityElement alloc] initWithAccessibilityContainer:self tag:annotationTag];
+ }
+
+ // Update the accessibility element.
+ MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
+ CGRect annotationFrame = [self frameOfImage:annotationImage.image centeredAtCoordinate:annotation.coordinate];
+ CGPoint annotationFrameCenter = CGPointMake(CGRectGetMidX(annotationFrame), CGRectGetMidY(annotationFrame));
+ CGRect minimumFrame = CGRectInset({ annotationFrameCenter, CGSizeZero },
+ -MGLAnnotationAccessibilityElementMinimumSize.width / 2,
+ -MGLAnnotationAccessibilityElementMinimumSize.height / 2);
+ annotationFrame = CGRectUnion(annotationFrame, minimumFrame);
+ CGRect screenRect = UIAccessibilityConvertFrameToScreenCoordinates(annotationFrame, self);
+ annotationContext.accessibilityElement.accessibilityFrame = screenRect;
+ annotationContext.accessibilityElement.accessibilityHint = NSLocalizedStringWithDefaultValue(@"ANNOTATION_A11Y_HINT", nil, nil, @"Shows more info", @"Accessibility hint");
+
+ if ([annotation respondsToSelector:@selector(title)])
+ {
+ annotationContext.accessibilityElement.accessibilityLabel = annotation.title;
+ }
+ if ([annotation respondsToSelector:@selector(subtitle)])
+ {
+ annotationContext.accessibilityElement.accessibilityValue = annotation.subtitle;
+ }
+
+ return annotationContext.accessibilityElement;
+}
+
+- (NSInteger)indexOfAccessibilityElement:(id)element
+{
+ if (self.calloutViewForSelectedAnnotation)
+ {
+ return [@[self.calloutViewForSelectedAnnotation, self.mapViewProxyAccessibilityElement]
+ indexOfObject:element];
+ }
+ if (element == self.compassView)
+ {
+ return 0;
+ }
+ if (element == self.userLocationAnnotationView)
+ {
+ return 1;
+ }
+
+ std::vector<MGLAnnotationTag> visibleAnnotations = [self annotationTagsInRect:self.bounds];
+
+ MGLAnnotationTag tag = MGLAnnotationTagNotFound;
+ if ([element isKindOfClass:[MGLAnnotationView class]])
+ {
+ id <MGLAnnotation> annotation = [(MGLAnnotationView *)element annotation];
+ tag = [self annotationTagForAnnotation:annotation];
+ }
+ else if ([element isKindOfClass:[MGLAnnotationAccessibilityElement class]])
+ {
+ tag = [(MGLAnnotationAccessibilityElement *)element tag];
+ }
+ else if (element == self.attributionButton)
+ {
+ return !!self.userLocationAnnotationView + visibleAnnotations.size();
+ }
+ else
+ {
+ return NSNotFound;
+ }
+
+ std::sort(visibleAnnotations.begin(), visibleAnnotations.end());
+ auto foundElement = std::find(visibleAnnotations.begin(), visibleAnnotations.end(), tag);
+ if (foundElement == visibleAnnotations.end())
+ {
+ return NSNotFound;
+ }
+ return !!self.userLocationAnnotationView + std::distance(visibleAnnotations.begin(), foundElement) + 1 /* compass */;
+}
+
+- (MGLMapViewProxyAccessibilityElement *)mapViewProxyAccessibilityElement
+{
+ if ( ! _mapViewProxyAccessibilityElement)
+ {
+ _mapViewProxyAccessibilityElement = [[MGLMapViewProxyAccessibilityElement alloc] initWithAccessibilityContainer:self];
+ }
+ return _mapViewProxyAccessibilityElement;
+}
+
+- (void)accessibilityIncrement
+{
+ // Swipe up to zoom out.
+ [self accessibilityScaleBy:0.5];
+}
+
+- (void)accessibilityDecrement
+{
+ // Swipe down to zoom in.
+ [self accessibilityScaleBy:2];
+}
+
+- (void)accessibilityScaleBy:(double)scaleFactor
+{
+ CGPoint centerPoint = self.contentCenter;
+ if (self.userTrackingMode != MGLUserTrackingModeNone)
+ {
+ centerPoint = self.userLocationAnnotationViewCenter;
+ }
+ _mbglMap->scaleBy(scaleFactor, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y });
+ [self unrotateIfNeededForGesture];
+
+ UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.accessibilityValue);
+}
+
#pragma mark - Geography -
+ (NS_SET_OF(NSString *) *)keyPathsForValuesAffectingCenterCoordinate
@@ -1837,6 +2251,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)setMinimumZoomLevel:(double)minimumZoomLevel
{
_mbglMap->setMinZoom(minimumZoomLevel);
+ [self validateTileCacheSize];
}
- (double)minimumZoomLevel
@@ -1847,6 +2262,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)setMaximumZoomLevel:(double)maximumZoomLevel
{
_mbglMap->setMaxZoom(maximumZoomLevel);
+ [self validateTileCacheSize];
}
- (double)maximumZoomLevel
@@ -1925,14 +2341,14 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self willChangeValueForKey:@"visibleCoordinateBounds"];
mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::AnnotationSegment segment;
- segment.reserve(count);
+ std::vector<mbgl::LatLng> latLngs;
+ latLngs.reserve(count);
for (NSUInteger i = 0; i < count; i++)
{
- segment.push_back({coordinates[i].latitude, coordinates[i].longitude});
+ latLngs.push_back({coordinates[i].latitude, coordinates[i].longitude});
}
- mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngs(segment, padding);
+ mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngs(latLngs, padding);
if (direction >= 0)
{
cameraOptions.angle = MGLRadiansFromDegrees(-direction);
@@ -1994,7 +2410,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
else
{
CGPoint centerPoint = self.userLocationAnnotationViewCenter;
- _mbglMap->setBearing(direction, { centerPoint.x, centerPoint.y },
+ _mbglMap->setBearing(direction, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y },
MGLDurationInSeconds(duration));
}
}
@@ -2016,14 +2432,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (MGLMapCamera *)camera
{
- CGFloat pitch = _mbglMap->getPitch();
- CLLocationDistance altitude = MGLAltitudeForZoomLevel(self.zoomLevel, pitch,
- self.centerCoordinate.latitude,
- self.frame.size);
- return [MGLMapCamera cameraLookingAtCenterCoordinate:self.centerCoordinate
- fromDistance:altitude
- pitch:pitch
- heading:self.direction];
+ mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
+ return [self cameraForCameraOptions:_mbglMap->getCameraOptions(padding)];
}
- (void)setCamera:(MGLMapCamera *)camera
@@ -2123,6 +2533,29 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self didChangeValueForKey:@"camera"];
}
+- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds
+{
+ return [self cameraThatFitsCoordinateBounds:bounds edgePadding:UIEdgeInsetsZero];
+}
+
+- (MGLMapCamera *)cameraThatFitsCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets
+{
+ mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(insets);
+ padding += MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
+ mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding);
+ return [self cameraForCameraOptions:cameraOptions];
+}
+
+- (MGLMapCamera *)cameraForCameraOptions:(const mbgl::CameraOptions &)cameraOptions
+{
+ CLLocationCoordinate2D centerCoordinate = MGLLocationCoordinate2DFromLatLng(cameraOptions.center ? *cameraOptions.center : _mbglMap->getLatLng());
+ double zoomLevel = cameraOptions.zoom ? *cameraOptions.zoom : self.zoomLevel;
+ CLLocationDirection direction = cameraOptions.angle ? -MGLDegreesFromRadians(*cameraOptions.angle) : self.direction;
+ CGFloat pitch = cameraOptions.pitch ? MGLDegreesFromRadians(*cameraOptions.pitch) : _mbglMap->getPitch();
+ CLLocationDistance altitude = MGLAltitudeForZoomLevel(zoomLevel, pitch, centerCoordinate.latitude, self.frame.size);
+ return [MGLMapCamera cameraLookingAtCenterCoordinate:centerCoordinate fromDistance:altitude pitch:pitch heading:direction];
+}
+
/// Returns a CameraOptions object that specifies parameters for animating to
/// the given camera.
- (mbgl::CameraOptions)cameraOptionsObjectForAnimatingToCamera:(MGLMapCamera *)camera edgePadding:(UIEdgeInsets)insets
@@ -2299,8 +2732,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
newAppliedClasses.insert(newAppliedClasses.end(), [appliedClass UTF8String]);
}
- _mbglMap->setDefaultTransitionDuration(MGLDurationInSeconds(transitionDuration));
- _mbglMap->setClasses(newAppliedClasses);
+ mbgl::style::TransitionOptions transition { { MGLDurationInSeconds(transitionDuration) } };
+ _mbglMap->setClasses(newAppliedClasses, transition);
}
- (BOOL)hasStyleClass:(NSString *)styleClass
@@ -2342,6 +2775,11 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
return pair.second.annotation;
});
+
+ annotations.erase(std::remove_if(annotations.begin(), annotations.end(),
+ [](const id <MGLAnnotation> annotation) { return annotation == nullptr; }),
+ annotations.end());
+
return [NSArray arrayWithObjects:&annotations[0] count:annotations.size()];
}
@@ -2390,10 +2828,13 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if ( ! annotations) return;
[self willChangeValueForKey:@"annotations"];
- std::vector<mbgl::PointAnnotation> points;
- std::vector<mbgl::ShapeAnnotation> shapes;
+ NSMutableDictionary *annotationImagesForAnnotation = [NSMutableDictionary dictionary];
+ NSMutableDictionary *annotationViewsForAnnotation = [NSMutableDictionary dictionary];
+ BOOL delegateImplementsViewForAnnotation = [self.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)];
BOOL delegateImplementsImageForPoint = [self.delegate respondsToSelector:@selector(mapView:imageForAnnotation:)];
+
+ NSMutableArray *newAnnotationViews = [[NSMutableArray alloc] initWithCapacity:annotations.count];
for (id <MGLAnnotation> annotation in annotations)
{
@@ -2401,66 +2842,153 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if ([annotation isKindOfClass:[MGLMultiPoint class]])
{
- [(MGLMultiPoint *)annotation addShapeAnnotationObjectToCollection:shapes withDelegate:self];
- }
- else
- {
- MGLAnnotationImage *annotationImage = delegateImplementsImageForPoint ? [self.delegate mapView:self imageForAnnotation:annotation] : nil;
- if ( ! annotationImage)
+ // Actual multipoints aren’t supported as annotations.
+ if ([annotation isMemberOfClass:[MGLMultiPoint class]]
+ || [annotation isMemberOfClass:[MGLMultiPointFeature class]])
{
- annotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
+ continue;
}
- if ( ! annotationImage)
- {
- // Create a default annotation image that depicts a round pin
- // rising from the center, with a shadow slightly below center.
- // The alignment rect therefore excludes the bottom half.
- UIImage *defaultAnnotationImage = [MGLMapView resourceImageNamed:MGLDefaultStyleMarkerSymbolName];
- defaultAnnotationImage = [defaultAnnotationImage imageWithAlignmentRectInsets:
- UIEdgeInsetsMake(0, 0, defaultAnnotationImage.size.height / 2, 0)];
- annotationImage = [MGLAnnotationImage annotationImageWithImage:defaultAnnotationImage
- reuseIdentifier:MGLDefaultStyleMarkerSymbolName];
+
+ // The polyline or polygon knows how to style itself (with the map view’s help).
+ MGLMultiPoint *multiPoint = (MGLMultiPoint *)annotation;
+ if (!multiPoint.pointCount) {
+ continue;
}
+
+ MGLAnnotationTag annotationTag = _mbglMap->addAnnotation([multiPoint annotationObjectWithDelegate:self]);
+ MGLAnnotationContext context;
+ context.annotation = annotation;
+ _annotationContextsByAnnotationTag[annotationTag] = context;
+ }
+ else if ( ! [annotation isKindOfClass:[MGLMultiPolyline class]]
+ || ![annotation isKindOfClass:[MGLMultiPolygon class]]
+ || ![annotation isKindOfClass:[MGLShapeCollection class]])
+ {
+ MGLAnnotationView *annotationView;
+ NSString *symbolName;
+ NSValue *annotationValue = [NSValue valueWithNonretainedObject:annotation];
- if ( ! self.annotationImagesByIdentifier[annotationImage.reuseIdentifier])
+ if (delegateImplementsViewForAnnotation)
{
- self.annotationImagesByIdentifier[annotationImage.reuseIdentifier] = annotationImage;
- [self installAnnotationImage:annotationImage];
- annotationImage.delegate = self;
+ annotationView = [self annotationViewForAnnotation:annotation];
+ if (annotationView)
+ {
+ annotationViewsForAnnotation[annotationValue] = annotationView;
+ annotationView.center = [self convertCoordinate:annotation.coordinate toPointToView:self];
+ [newAnnotationViews addObject:annotationView];
+ }
+ }
+
+ if ( ! annotationView) {
+ MGLAnnotationImage *annotationImage;
+
+ if (delegateImplementsImageForPoint)
+ {
+ annotationImage = [self.delegate mapView:self imageForAnnotation:annotation];
+ }
+ if ( ! annotationImage)
+ {
+ annotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
+ }
+ if ( ! annotationImage)
+ {
+ annotationImage = self.defaultAnnotationImage;
+ }
+
+ symbolName = annotationImage.styleIconIdentifier;
+
+ if ( ! symbolName)
+ {
+ symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
+ annotationImage.styleIconIdentifier = symbolName;
+ }
+ if ( ! self.annotationImagesByIdentifier[annotationImage.reuseIdentifier])
+ {
+ [self installAnnotationImage:annotationImage];
+ }
+
+ annotationImagesForAnnotation[annotationValue] = annotationImage;
}
- NSString *symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
+ MGLAnnotationTag annotationTag = _mbglMap->addAnnotation(mbgl::SymbolAnnotation {
+ MGLPointFromLocationCoordinate2D(annotation.coordinate),
+ symbolName.UTF8String ?: ""
+ });
- points.emplace_back(MGLLatLngFromLocationCoordinate2D(annotation.coordinate), symbolName ? [symbolName UTF8String] : "");
+ MGLAnnotationContext context;
+ context.annotation = annotation;
+ MGLAnnotationImage *annotationImage = annotationImagesForAnnotation[annotationValue];
+
+ if (annotationImage) {
+ context.imageReuseIdentifier = annotationImage.reuseIdentifier;
+ }
+ if (annotationView) {
+ context.annotationView = annotationView;
+ context.viewReuseIdentifier = annotationView.reuseIdentifier;
+ }
+
+ _annotationContextsByAnnotationTag[annotationTag] = context;
+ if ([annotation isKindOfClass:[NSObject class]]) {
+ NSAssert(![annotation isKindOfClass:[MGLMultiPoint class]], @"Point annotation should not be MGLMultiPoint.");
+ [(NSObject *)annotation addObserver:self forKeyPath:@"coordinate" options:0 context:(void *)(NSUInteger)annotationTag];
+ }
}
}
- if (points.size())
+ [self updateAnnotationContainerViewWithAnnotationViews:newAnnotationViews];
+
+ [self didChangeValueForKey:@"annotations"];
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
+}
+
+- (void)updateAnnotationContainerViewWithAnnotationViews:(NS_ARRAY_OF(MGLAnnotationView *) *)annotationViews
+{
+ if (annotationViews.count == 0) return;
+
+ MGLAnnotationContainerView *newAnnotationContainerView;
+ if (self.annotationContainerView)
{
- std::vector<MGLAnnotationTag> pointAnnotationTags = _mbglMap->addPointAnnotations(points);
-
- for (size_t i = 0; i < pointAnnotationTags.size(); ++i)
- {
- MGLAnnotationContext context;
- context.annotation = annotations[i];
- context.symbolIdentifier = @(points[i].icon.c_str());
- _annotationContextsByAnnotationTag[pointAnnotationTags[i]] = context;
- }
+ // reload any previously added views
+ newAnnotationContainerView = [MGLAnnotationContainerView annotationContainerViewWithAnnotationContainerView:self.annotationContainerView];
+ [self.annotationContainerView removeFromSuperview];
+ }
+ else
+ {
+ newAnnotationContainerView = [[MGLAnnotationContainerView alloc] initWithFrame:self.bounds];
}
+ newAnnotationContainerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+ newAnnotationContainerView.contentMode = UIViewContentModeCenter;
+ [newAnnotationContainerView addSubviews:annotationViews];
+ [_glView insertSubview:newAnnotationContainerView atIndex:0];
+ self.annotationContainerView = newAnnotationContainerView;
+}
+
+/// Initialize and return a default annotation image that depicts a round pin
+/// rising from the center, with a shadow slightly below center. The alignment
+/// rect therefore excludes the bottom half.
+- (MGLAnnotationImage *)defaultAnnotationImage
+{
+ UIImage *image = [MGLMapView resourceImageNamed:MGLDefaultStyleMarkerSymbolName];
+ image = [image imageWithAlignmentRectInsets:
+ UIEdgeInsetsMake(0, 0, image.size.height / 2, 0)];
+ MGLAnnotationImage *annotationImage = [MGLAnnotationImage annotationImageWithImage:image
+ reuseIdentifier:MGLDefaultStyleMarkerSymbolName];
+ annotationImage.styleIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
+ return annotationImage;
+}
- if (shapes.size())
+- (MGLAnnotationView *)annotationViewForAnnotation:(id<MGLAnnotation>)annotation
+{
+ MGLAnnotationView *annotationView = [self.delegate mapView:self viewForAnnotation:annotation];
+
+ if (annotationView)
{
- std::vector<MGLAnnotationTag> shapeAnnotationTags = _mbglMap->addShapeAnnotations(shapes);
-
- for (size_t i = 0; i < shapeAnnotationTags.size(); ++i)
- {
- MGLAnnotationContext context;
- context.annotation = annotations[i];
- _annotationContextsByAnnotationTag[shapeAnnotationTags[i]] = context;
- }
+ annotationView.annotation = annotation;
+ CGRect bounds = UIEdgeInsetsInsetRect({ CGPointZero, annotationView.frame.size }, annotationView.alignmentRectInsets);
+ _largestAnnotationViewSize = CGSizeMake(bounds.size.width / 2.0, bounds.size.height / 2.0);
}
- [self didChangeValueForKey:@"annotations"];
+ return annotationView;
}
- (double)alphaForShapeAnnotation:(MGLShape *)annotation
@@ -2499,6 +3027,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)installAnnotationImage:(MGLAnnotationImage *)annotationImage
{
+ NSString *iconIdentifier = annotationImage.styleIconIdentifier;
+ self.annotationImagesByIdentifier[annotationImage.reuseIdentifier] = annotationImage;
+ annotationImage.delegate = self;
+
// retrieve pixels
CGImageRef image = annotationImage.image.CGImage;
size_t width = CGImageGetWidth(image);
@@ -2519,8 +3051,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
float(annotationImage.image.scale));
// sprite upload
- NSString *symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- _mbglMap->addAnnotationIcon(symbolName.UTF8String, cSpriteImage);
+ _mbglMap->addAnnotationIcon(iconIdentifier.UTF8String, cSpriteImage);
// Create a slop area with a “radius” equal in size to the annotation
// image’s alignment rect, allowing the eventual tap to be on any point
@@ -2546,8 +3077,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ( ! annotations) return;
- std::vector<MGLAnnotationTag> annotationTagsToRemove;
- annotationTagsToRemove.reserve(annotations.count);
+ [self willChangeValueForKey:@"annotations"];
for (id <MGLAnnotation> annotation in annotations)
{
@@ -2558,7 +3088,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
continue;
}
- annotationTagsToRemove.push_back(annotationTag);
+
+ MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+ [annotationView removeFromSuperview];
if (annotationTag == _selectedAnnotationTag)
{
@@ -2566,14 +3099,17 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
_annotationContextsByAnnotationTag.erase(annotationTag);
- }
+
+ if ([annotation isKindOfClass:[NSObject class]] && ![annotation isKindOfClass:[MGLMultiPoint class]])
+ {
+ [(NSObject *)annotation removeObserver:self forKeyPath:@"coordinate" context:(void *)(NSUInteger)annotationTag];
+ }
- if ( ! annotationTagsToRemove.empty())
- {
- [self willChangeValueForKey:@"annotations"];
- _mbglMap->removeAnnotations(annotationTagsToRemove);
- [self didChangeValueForKey:@"annotations"];
+ _mbglMap->removeAnnotation(annotationTag);
}
+
+ [self didChangeValueForKey:@"annotations"];
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
}
- (void)addOverlay:(id <MGLOverlay>)overlay
@@ -2583,10 +3119,12 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)addOverlays:(NS_ARRAY_OF(id <MGLOverlay>) *)overlays
{
+#if DEBUG
for (id <MGLOverlay> overlay in overlays)
{
NSAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"overlay should conform to MGLOverlay");
}
+#endif
[self addAnnotations:overlays];
}
@@ -2598,23 +3136,48 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)removeOverlays:(NS_ARRAY_OF(id <MGLOverlay>) *)overlays
{
+#if DEBUG
for (id <MGLOverlay> overlay in overlays)
{
NSAssert([overlay conformsToProtocol:@protocol(MGLOverlay)], @"overlay should conform to MGLOverlay");
}
+#endif
[self removeAnnotations:overlays];
}
- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier
{
- // This prefix is used to avoid collisions with style-defined sprites in
- // mbgl, but reusable identifiers are never prefixed.
- if ([identifier hasPrefix:MGLAnnotationSpritePrefix])
+ return self.annotationImagesByIdentifier[identifier];
+}
+
+- (nullable MGLAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier
+{
+ NSMutableArray *annotationViewReuseQueue = [self annotationViewReuseQueueForIdentifier:identifier];
+ MGLAnnotationView *reusableView = annotationViewReuseQueue.firstObject;
+ [reusableView prepareForReuse];
+ [annotationViewReuseQueue removeObject:reusableView];
+
+ return reusableView;
+}
+
+- (MGLAnnotationView *)annotationViewAtPoint:(CGPoint)point
+{
+ std::vector<MGLAnnotationTag> annotationTags = [self annotationTagsInRect:self.bounds];
+
+ for(auto const& annotationTag: annotationTags)
{
- identifier = [identifier substringFromIndex:MGLAnnotationSpritePrefix.length];
+ auto &annotationContext = _annotationContextsByAnnotationTag[annotationTag];
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+ CGPoint convertedPoint = [self convertPoint:point toView:annotationView];
+
+ if ([annotationView pointInside:convertedPoint withEvent:nil])
+ {
+ return annotationView;
+ }
}
- return self.annotationImagesByIdentifier[identifier];
+
+ return nil;
}
/**
@@ -2648,6 +3211,9 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
-MGLAnnotationImagePaddingForHitTest,
-MGLAnnotationImagePaddingForHitTest);
+ MGLAnnotationImage *fallbackAnnotationImage = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName];
+ UIImage *fallbackImage = fallbackAnnotationImage.image;
+
// Filter out any annotation whose image is unselectable or for which
// hit testing fails.
auto end = std::remove_if(nearbyAnnotations.begin(), nearbyAnnotations.end(),
@@ -2656,6 +3222,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
NSAssert(annotation, @"Unknown annotation found nearby tap");
+ MGLAnnotationContext annotationContext = _annotationContextsByAnnotationTag[annotationTag];
+
MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
if ( ! annotationImage.enabled)
{
@@ -2664,10 +3232,11 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// Filter out the annotation if the fattened finger didn’t land
// within the image’s alignment rect.
- CGRect annotationRect = [self frameOfImage:annotationImage.image
- centeredAtCoordinate:annotation.coordinate];
+ CGRect annotationRect = [self frameOfImage:annotationImage.image ?: fallbackImage centeredAtCoordinate:annotation.coordinate];
+
return !!!CGRectIntersectsRect(annotationRect, hitRect);
});
+
nearbyAnnotations.resize(std::distance(nearbyAnnotations.begin(), end));
}
@@ -2732,9 +3301,9 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
// Choose the first nearby annotation.
- if (_annotationsNearbyLastTap.size())
+ if (nearbyAnnotations.size())
{
- hitAnnotationTag = _annotationsNearbyLastTap.front();
+ hitAnnotationTag = nearbyAnnotations.front();
}
}
}
@@ -2773,7 +3342,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (NS_ARRAY_OF(id <MGLAnnotation>) *)selectedAnnotations
{
- return (self.selectedAnnotation ? @[ self.selectedAnnotation ] : @[]);
+ id <MGLAnnotation> selectedAnnotation = self.selectedAnnotation;
+ return (selectedAnnotation ? @[ selectedAnnotation ] : @[]);
}
- (void)setSelectedAnnotations:(NS_ARRAY_OF(id <MGLAnnotation>) *)selectedAnnotations
@@ -2813,10 +3383,29 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if (annotationTag == MGLAnnotationTagNotFound && annotation != self.userLocation)
{
[self addAnnotation:annotation];
+ annotationTag = [self annotationTagForAnnotation:annotation];
+ if (annotationTag == MGLAnnotationTagNotFound) return;
}
- // The annotation can’t be selected if no part of it is hittable.
+ // By default attempt to use the GL annotation image frame as the positioning rect.
CGRect positioningRect = [self positioningRectForCalloutForAnnotationWithTag:annotationTag];
+
+ if (annotation != self.userLocation)
+ {
+ MGLAnnotationContext &annotationContext = _annotationContextsByAnnotationTag.at(annotationTag);
+
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+ if (annotationView)
+ {
+ // Annotations represented by views use the view frame as the positioning rect.
+ positioningRect = annotationView.frame;
+
+ [annotationView.superview bringSubviewToFront:annotationView];
+ }
+ }
+
+ // The client can request that any annotation be selected (even ones that are offscreen).
+ // The annotation can’t be selected if no part of it is hittable.
if ( ! CGRectIntersectsRect(positioningRect, self.bounds) && annotation != self.userLocation)
{
return;
@@ -2830,59 +3419,62 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self.delegate mapView:self annotationCanShowCallout:annotation])
{
// build the callout
+ UIView <MGLCalloutView> *calloutView;
if ([self.delegate respondsToSelector:@selector(mapView:calloutViewForAnnotation:)])
{
- self.calloutViewForSelectedAnnotation = [self.delegate mapView:self calloutViewForAnnotation:annotation];
+ calloutView = [self.delegate mapView:self calloutViewForAnnotation:annotation];
}
- if (!self.calloutViewForSelectedAnnotation)
+ if (!calloutView)
{
- self.calloutViewForSelectedAnnotation = [self calloutViewForAnnotation:annotation];
+ calloutView = [self calloutViewForAnnotation:annotation];
}
+ self.calloutViewForSelectedAnnotation = calloutView;
if (_userLocationAnnotationIsSelected)
{
- positioningRect = CGRectInset(self.userLocationAnnotationView.frame,
- -MGLAnnotationImagePaddingForCallout,
- -MGLAnnotationImagePaddingForCallout);
+ positioningRect = [self.userLocationAnnotationView.layer.presentationLayer frame];
+
+ CGRect implicitAnnotationFrame = [self.userLocationAnnotationView.layer.presentationLayer frame];
+ CGRect explicitAnnotationFrame = self.userLocationAnnotationView.frame;
+ _initialImplicitCalloutViewOffset = CGPointMake(CGRectGetMinX(explicitAnnotationFrame) - CGRectGetMinX(implicitAnnotationFrame),
+ CGRectGetMinY(explicitAnnotationFrame) - CGRectGetMinY(implicitAnnotationFrame));
}
// consult delegate for left and/or right accessory views
if ([self.delegate respondsToSelector:@selector(mapView:leftCalloutAccessoryViewForAnnotation:)])
{
- self.calloutViewForSelectedAnnotation.leftAccessoryView =
- [self.delegate mapView:self leftCalloutAccessoryViewForAnnotation:annotation];
+ calloutView.leftAccessoryView = [self.delegate mapView:self leftCalloutAccessoryViewForAnnotation:annotation];
- if ([self.calloutViewForSelectedAnnotation.leftAccessoryView isKindOfClass:[UIControl class]])
+ if ([calloutView.leftAccessoryView isKindOfClass:[UIControl class]])
{
UITapGestureRecognizer *calloutAccessoryTap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleCalloutAccessoryTapGesture:)];
- [self.calloutViewForSelectedAnnotation.leftAccessoryView addGestureRecognizer:calloutAccessoryTap];
+ [calloutView.leftAccessoryView addGestureRecognizer:calloutAccessoryTap];
}
}
if ([self.delegate respondsToSelector:@selector(mapView:rightCalloutAccessoryViewForAnnotation:)])
{
- self.calloutViewForSelectedAnnotation.rightAccessoryView =
- [self.delegate mapView:self rightCalloutAccessoryViewForAnnotation:annotation];
+ calloutView.rightAccessoryView = [self.delegate mapView:self rightCalloutAccessoryViewForAnnotation:annotation];
- if ([self.calloutViewForSelectedAnnotation.rightAccessoryView isKindOfClass:[UIControl class]])
+ if ([calloutView.rightAccessoryView isKindOfClass:[UIControl class]])
{
UITapGestureRecognizer *calloutAccessoryTap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleCalloutAccessoryTapGesture:)];
- [self.calloutViewForSelectedAnnotation.rightAccessoryView addGestureRecognizer:calloutAccessoryTap];
+ [calloutView.rightAccessoryView addGestureRecognizer:calloutAccessoryTap];
}
}
// set annotation delegate to handle taps on the callout view
- self.calloutViewForSelectedAnnotation.delegate = self;
+ calloutView.delegate = self;
// present popup
- [self.calloutViewForSelectedAnnotation presentCalloutFromRect:positioningRect
- inView:self.glView
- constrainedToView:self.glView
- animated:animated];
+ [calloutView presentCalloutFromRect:positioningRect
+ inView:self.glView
+ constrainedToView:self.glView
+ animated:animated];
}
// notify delegate
@@ -2906,6 +3498,8 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
/// and is appropriate for positioning a popover.
- (CGRect)positioningRectForCalloutForAnnotationWithTag:(MGLAnnotationTag)annotationTag
{
+ MGLAnnotationContext annotationContext = _annotationContextsByAnnotationTag[annotationTag];
+
id <MGLAnnotation> annotation = [self annotationWithTag:annotationTag];
if ( ! annotation)
{
@@ -2914,11 +3508,16 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
UIImage *image = [self imageOfAnnotationWithTag:annotationTag].image;
if ( ! image)
{
+ image = [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName].image;
+ }
+ if ( ! image)
+ {
return CGRectZero;
}
CGRect positioningRect = [self frameOfImage:image centeredAtCoordinate:annotation.coordinate];
positioningRect.origin.x -= 0.5;
+
return CGRectInset(positioningRect, -MGLAnnotationImagePaddingForCallout,
-MGLAnnotationImagePaddingForCallout);
}
@@ -2941,7 +3540,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
return nil;
}
- NSString *customSymbol = _annotationContextsByAnnotationTag.at(annotationTag).symbolIdentifier;
+ NSString *customSymbol = _annotationContextsByAnnotationTag.at(annotationTag).imageReuseIdentifier;
NSString *symbolName = customSymbol.length ? customSymbol : MGLDefaultStyleMarkerSymbolName;
return [self dequeueReusableAnnotationImageWithIdentifier:symbolName];
@@ -2951,7 +3550,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
if ( ! annotation) return;
- if ([self.selectedAnnotation isEqual:annotation])
+ if (self.selectedAnnotation == annotation)
{
// dismiss popup
[self.calloutViewForSelectedAnnotation dismissCalloutAnimated:animated];
@@ -2968,6 +3567,35 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
}
+- (void)calloutViewWillAppear:(UIView <MGLCalloutView> *)calloutView
+{
+ if (_userLocationAnnotationIsSelected ||
+ CGPointEqualToPoint(_initialImplicitCalloutViewOffset, CGPointZero))
+ {
+ return;
+ }
+
+ // The user location callout view initially points to the user location
+ // annotation’s implicit (visual) frame, which is offset from the
+ // annotation’s explicit frame. Now the callout view needs to rendezvous
+ // with the explicit frame. Then,
+ // -updateUserLocationAnnotationViewAnimatedWithDuration: will take over the
+ // next time an updated location arrives.
+ [UIView animateWithDuration:_userLocationAnimationCompletionDate.timeIntervalSinceNow
+ delay:0
+ options:(UIViewAnimationOptionCurveLinear |
+ UIViewAnimationOptionAllowUserInteraction |
+ UIViewAnimationOptionBeginFromCurrentState)
+ animations:^
+ {
+ calloutView.frame = CGRectOffset(calloutView.frame,
+ _initialImplicitCalloutViewOffset.x,
+ _initialImplicitCalloutViewOffset.y);
+ _initialImplicitCalloutViewOffset = CGPointZero;
+ }
+ completion:NULL];
+}
+
- (void)showAnnotations:(NS_ARRAY_OF(id <MGLAnnotation>) *)annotations animated:(BOOL)animated
{
CGFloat maximumPadding = 100;
@@ -3006,11 +3634,53 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)annotationImageNeedsRedisplay:(MGLAnnotationImage *)annotationImage
{
- // remove sprite
- NSString *symbolName = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
- _mbglMap->removeAnnotationIcon(symbolName.UTF8String);
- [self installAnnotationImage:annotationImage];
- _mbglMap->update(mbgl::Update::Annotations);
+ NSString *reuseIdentifier = annotationImage.reuseIdentifier;
+ NSString *iconIdentifier = annotationImage.styleIconIdentifier;
+ NSString *fallbackReuseIdentifier = MGLDefaultStyleMarkerSymbolName;
+ NSString *fallbackIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:fallbackReuseIdentifier];
+
+ // Remove the old icon from the style.
+ if ( ! [iconIdentifier isEqualToString:fallbackIconIdentifier]) {
+ _mbglMap->removeAnnotationIcon(iconIdentifier.UTF8String);
+ }
+
+ if (annotationImage.image)
+ {
+ // Add the new icon to the style.
+ NSString *updatedIconIdentifier = [MGLAnnotationSpritePrefix stringByAppendingString:annotationImage.reuseIdentifier];
+ annotationImage.styleIconIdentifier = updatedIconIdentifier;
+ [self installAnnotationImage:annotationImage];
+
+ if ([iconIdentifier isEqualToString:fallbackIconIdentifier])
+ {
+ // Update any annotations associated with the annotation image.
+ [self applyIconIdentifier:updatedIconIdentifier toAnnotationsWithImageReuseIdentifier:reuseIdentifier];
+ }
+ }
+ else
+ {
+ // Add the default icon to the style if necessary.
+ annotationImage.styleIconIdentifier = fallbackIconIdentifier;
+ if ( ! [self dequeueReusableAnnotationImageWithIdentifier:MGLDefaultStyleMarkerSymbolName])
+ {
+ [self installAnnotationImage:self.defaultAnnotationImage];
+ }
+
+ // Update any annotations associated with the annotation image.
+ [self applyIconIdentifier:fallbackIconIdentifier toAnnotationsWithImageReuseIdentifier:reuseIdentifier];
+ }
+}
+
+- (void)applyIconIdentifier:(NSString *)iconIdentifier toAnnotationsWithImageReuseIdentifier:(NSString *)reuseIdentifier
+{
+ for (auto &pair : _annotationContextsByAnnotationTag)
+ {
+ if ([pair.second.imageReuseIdentifier isEqualToString:reuseIdentifier])
+ {
+ const mbgl::Point<double> point = MGLPointFromLocationCoordinate2D(pair.second.annotation.coordinate);
+ _mbglMap->updateAnnotation(pair.first, mbgl::SymbolAnnotation { point, iconIdentifier.UTF8String ?: "" });
+ }
+ }
}
#pragma mark - User Location -
@@ -3149,7 +3819,9 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
MGLUserTrackingMode oldMode = _userTrackingMode;
+ [self willChangeValueForKey:@"userTrackingMode"];
_userTrackingMode = mode;
+ [self didChangeValueForKey:@"userTrackingMode"];
switch (_userTrackingMode)
{
@@ -3173,9 +3845,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
[self.locationManager stopUpdatingHeading];
- if (self.userLocationAnnotationView)
+ CLLocation *location = self.userLocation.location;
+ if (location && self.userLocationAnnotationView)
{
- [self locationManager:self.locationManager didUpdateLocations:@[self.userLocation.location] animated:animated];
+ [self locationManager:self.locationManager didUpdateLocations:@[location] animated:animated];
}
break;
@@ -3223,7 +3896,11 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
_userLocationVerticalAlignment = alignment;
if (self.userTrackingMode != MGLUserTrackingModeNone)
{
- [self locationManager:self.locationManager didUpdateLocations:@[self.userLocation.location] animated:animated];
+ CLLocation *location = self.userLocation.location;
+ if (location)
+ {
+ [self locationManager:self.locationManager didUpdateLocations:@[location] animated:animated];
+ }
}
}
@@ -3280,7 +3957,19 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
self.userLocationAnnotationView.haloLayer.hidden = ! CLLocationCoordinate2DIsValid(self.userLocation.coordinate) ||
newLocation.horizontalAccuracy > 10;
- [self updateUserLocationAnnotationView];
+ NSTimeInterval duration = MGLAnimationDuration;
+ if (oldLocation && ! CGPointEqualToPoint(self.userLocationAnnotationView.center, CGPointZero))
+ {
+ duration = MIN([newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp], MGLUserLocationAnimationDuration);
+ }
+ [self updateUserLocationAnnotationViewAnimatedWithDuration:duration];
+
+ if (self.userTrackingMode == MGLUserTrackingModeNone &&
+ self.userLocationAnnotationView.accessibilityElementIsFocused &&
+ [UIApplication sharedApplication].applicationState == UIApplicationStateActive)
+ {
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self.userLocationAnnotationView);
+ }
}
- (void)didUpdateLocationWithUserTrackingAnimated:(BOOL)animated
@@ -3541,6 +4230,57 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
}
+#pragma mark Data
+
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesAtPoint:(CGPoint)point
+{
+ return [self visibleFeaturesAtPoint:point inStyleLayersWithIdentifiers:nil];
+}
+
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesAtPoint:(CGPoint)point inStyleLayersWithIdentifiers:(NS_SET_OF(NSString *) *)styleLayerIdentifiers
+{
+ mbgl::ScreenCoordinate screenCoordinate = { point.x, point.y };
+
+ mbgl::optional<std::vector<std::string>> optionalLayerIDs;
+ if (styleLayerIdentifiers)
+ {
+ __block std::vector<std::string> layerIDs;
+ layerIDs.reserve(styleLayerIdentifiers.count);
+ [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop)
+ {
+ layerIDs.push_back(identifier.UTF8String);
+ }];
+ optionalLayerIDs = layerIDs;
+ }
+
+ std::vector<mbgl::Feature> features = _mbglMap->queryRenderedFeatures(screenCoordinate, optionalLayerIDs);
+ return MGLFeaturesFromMBGLFeatures(features);
+}
+
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesInRect:(CGRect)rect {
+ return [self visibleFeaturesInRect:rect inStyleLayersWithIdentifiers:nil];
+}
+
+- (NS_ARRAY_OF(id <MGLFeature>) *)visibleFeaturesInRect:(CGRect)rect inStyleLayersWithIdentifiers:(NS_SET_OF(NSString *) *)styleLayerIdentifiers {
+ mbgl::ScreenBox screenBox = {
+ { CGRectGetMinX(rect), CGRectGetMinY(rect) },
+ { CGRectGetMaxX(rect), CGRectGetMaxY(rect) },
+ };
+
+ mbgl::optional<std::vector<std::string>> optionalLayerIDs;
+ if (styleLayerIdentifiers) {
+ __block std::vector<std::string> layerIDs;
+ layerIDs.reserve(styleLayerIdentifiers.count);
+ [styleLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
+ layerIDs.push_back(identifier.UTF8String);
+ }];
+ optionalLayerIDs = layerIDs;
+ }
+
+ std::vector<mbgl::Feature> features = _mbglMap->queryRenderedFeatures(screenBox, optionalLayerIDs);
+ return MGLFeaturesFromMBGLFeatures(features);
+}
+
#pragma mark - Utility -
- (void)animateWithDelay:(NSTimeInterval)delay animations:(void (^)(void))animations
@@ -3652,6 +4392,10 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
if ( ! [self isSuppressingChangeDelimiters] && [self.delegate respondsToSelector:@selector(mapView:regionDidChangeAnimated:)])
{
+ if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
+ {
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
+ }
BOOL animated = change == mbgl::MapChangeRegionDidChangeAnimated;
[self.delegate mapView:self regionDidChangeAnimated:animated];
}
@@ -3714,6 +4458,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
[self.delegate mapViewDidFinishRenderingFrame:self fullyRendered:(change == mbgl::MapChangeDidFinishRenderingFrameFullyRendered)];
}
+ [self updateAnnotationViews];
break;
}
}
@@ -3721,14 +4466,81 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)updateUserLocationAnnotationView
{
+ [self updateUserLocationAnnotationViewAnimatedWithDuration:0];
+}
+
+- (void)updateAnnotationViews
+{
+ BOOL delegateImplementsViewForAnnotation = [self.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)];
+
+ if (!delegateImplementsViewForAnnotation)
+ {
+ return;
+ }
+
+ for (auto &pair : _annotationContextsByAnnotationTag)
+ {
+ CGRect viewPort = CGRectInset(self.bounds, -_largestAnnotationViewSize.width - MGLAnnotationUpdateViewportOutset.width, -_largestAnnotationViewSize.height - MGLAnnotationUpdateViewportOutset.width);
+
+ MGLAnnotationContext &annotationContext = pair.second;
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+
+ if (!annotationView)
+ {
+ MGLAnnotationView *annotationView = [self annotationViewForAnnotation:annotationContext.annotation];
+ if (annotationView)
+ {
+ // If the annotation view has no superview it means it was never used before so add it
+ if (!annotationView.superview)
+ {
+ [self.glView addSubview:annotationView];
+ }
+
+ CGPoint center = [self convertCoordinate:annotationContext.annotation.coordinate toPointToView:self];
+ [annotationView setCenter:center pitch:self.camera.pitch];
+
+ annotationContext.annotationView = annotationView;
+ }
+ }
+
+ bool annotationViewIsVisible = CGRectContainsRect(viewPort, annotationView.frame);
+ if (!annotationViewIsVisible)
+ {
+ [self enqueueAnnotationViewForAnnotationContext:annotationContext];
+ }
+ else
+ {
+ CGPoint center = [self convertCoordinate:annotationContext.annotation.coordinate toPointToView:self];
+ [annotationView setCenter:center pitch:self.camera.pitch];
+ }
+ }
+}
+
+- (void)enqueueAnnotationViewForAnnotationContext:(MGLAnnotationContext &)annotationContext
+{
+ MGLAnnotationView *annotationView = annotationContext.annotationView;
+
+ if (!annotationView) return;
+
+ if (annotationContext.viewReuseIdentifier)
+ {
+ NSMutableArray *annotationViewReuseQueue = [self annotationViewReuseQueueForIdentifier:annotationContext.viewReuseIdentifier];
+ if (![annotationViewReuseQueue containsObject:annotationView])
+ {
+ [annotationViewReuseQueue addObject:annotationView];
+ annotationContext.annotationView = nil;
+ }
+ }
+}
+
+- (void)updateUserLocationAnnotationViewAnimatedWithDuration:(NSTimeInterval)duration
+{
MGLUserLocationAnnotationView *annotationView = self.userLocationAnnotationView;
if ( ! CLLocationCoordinate2DIsValid(self.userLocation.coordinate)) {
annotationView.hidden = YES;
return;
}
- if ( ! annotationView.superview) [self.glView addSubview:annotationView];
-
CGPoint userPoint;
if (self.userTrackingMode != MGLUserTrackingModeNone
&& self.userTrackingState == MGLUserTrackingStateChanged)
@@ -3739,11 +4551,36 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
{
userPoint = [self convertCoordinate:self.userLocation.coordinate toPointToView:self];
}
+
+ if ( ! annotationView.superview)
+ {
+ [self.glView addSubview:annotationView];
+ // Prevents the view from sliding in from the origin.
+ annotationView.center = userPoint;
+ }
if (CGRectContainsPoint(CGRectInset(self.bounds, -MGLAnnotationUpdateViewportOutset.width,
-MGLAnnotationUpdateViewportOutset.height), userPoint))
{
- annotationView.center = userPoint;
+ // Smoothly move the user location annotation view and callout view to
+ // the new location.
+ [UIView animateWithDuration:duration
+ delay:0
+ options:(UIViewAnimationOptionCurveLinear |
+ UIViewAnimationOptionAllowUserInteraction |
+ UIViewAnimationOptionBeginFromCurrentState)
+ animations:^{
+ if (self.selectedAnnotation == self.userLocation)
+ {
+ UIView <MGLCalloutView> *calloutView = self.calloutViewForSelectedAnnotation;
+ calloutView.frame = CGRectOffset(calloutView.frame,
+ userPoint.x - annotationView.center.x,
+ userPoint.y - annotationView.center.y);
+ }
+ annotationView.center = userPoint;
+ } completion:NULL];
+ _userLocationAnimationCompletionDate = [NSDate dateWithTimeIntervalSinceNow:duration];
+
annotationView.hidden = NO;
[annotationView setupLayers];
@@ -3802,11 +4639,14 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
- (void)updateCompass
{
- CLLocationDirection degrees = mbgl::util::wrap(-self.direction, 0., 360.);
-
- self.compassView.transform = CGAffineTransformMakeRotation(MGLRadiansFromDegrees(degrees));
+ CLLocationDirection direction = self.direction;
+ CLLocationDirection plateDirection = mbgl::util::wrap(-direction, 0., 360.);
+ self.compassView.transform = CGAffineTransformMakeRotation(MGLRadiansFromDegrees(plateDirection));
+
+ self.compassView.isAccessibilityElement = direction > 0;
+ self.compassView.accessibilityValue = [_accessibilityCompassFormatter stringFromDirection:direction];
- if (_mbglMap->getBearing() && self.compassView.alpha < 1)
+ if (direction > 0 && self.compassView.alpha < 1)
{
[UIView animateWithDuration:MGLAnimationDuration
delay:0
@@ -3817,7 +4657,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
}
completion:nil];
}
- else if (_mbglMap->getBearing() == 0 && self.compassView.alpha > 0)
+ else if (direction == 0 && self.compassView.alpha > 0)
{
[UIView animateWithDuration:MGLAnimationDuration
delay:0
@@ -3868,7 +4708,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// Headline
UILabel *headlineLabel = [[UILabel alloc] init];
- headlineLabel.text = @"MGLMapView";
+ headlineLabel.text = NSStringFromClass([self class]);
headlineLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
headlineLabel.textAlignment = NSTextAlignmentCenter;
headlineLabel.numberOfLines = 1;
@@ -3879,8 +4719,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// Explanation
UILabel *explanationLabel = [[UILabel alloc] init];
- explanationLabel.text = (@"To display a Mapbox-hosted map here, set MGLMapboxAccessToken to your access token in Info.plist\n\n"
- @"For detailed instructions, see:");
+ explanationLabel.text = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"DESIGNABLE", nil, nil, @"To display a Mapbox-hosted map here, set %@ to your access token in %@\n\nFor detailed instructions, see:", @"Instructions in Interface Builder designable; {key}, {plist file name}"), @"MGLMapboxAccessToken", @"Info.plist"];
explanationLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
explanationLabel.numberOfLines = 0;
explanationLabel.translatesAutoresizingMaskIntoConstraints = NO;
@@ -3890,7 +4729,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
// Link
UIButton *linkButton = [UIButton buttonWithType:UIButtonTypeSystem];
- [linkButton setTitle:MGLMapboxSetupDocumentationURLDisplayString forState:UIControlStateNormal];
+ [linkButton setTitle:NSLocalizedStringWithDefaultValue(@"FIRST_STEPS_URL", nil, nil, @"mapbox.com/help/first-steps-ios-sdk", @"Setup documentation URL display string; keep as short as possible") forState:UIControlStateNormal];
linkButton.translatesAutoresizingMaskIntoConstraints = NO;
linkButton.titleLabel.numberOfLines = 0;
[linkButton setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
@@ -3955,14 +4794,21 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
views:views]];
}
+- (NS_MUTABLE_ARRAY_OF(MGLAnnotationView *) *)annotationViewReuseQueueForIdentifier:(NSString *)identifier {
+ if (!_annotationViewReuseQueueByIdentifier[identifier])
+ {
+ _annotationViewReuseQueueByIdentifier[identifier] = [NSMutableArray array];
+ }
+
+ return _annotationViewReuseQueueByIdentifier[identifier];
+}
+
class MBGLView : public mbgl::View
{
- public:
- MBGLView(MGLMapView* nativeView_, const float scaleFactor_)
- : nativeView(nativeView_), scaleFactor(scaleFactor_) {
- }
- virtual ~MBGLView() {}
-
+public:
+ MBGLView(MGLMapView* nativeView_, const float scaleFactor_)
+ : nativeView(nativeView_), scaleFactor(scaleFactor_) {
+ }
float getPixelRatio() const override {
return scaleFactor;
@@ -3970,7 +4816,7 @@ class MBGLView : public mbgl::View
std::array<uint16_t, 2> getSize() const override {
return {{ static_cast<uint16_t>([nativeView bounds].size.width),
- static_cast<uint16_t>([nativeView bounds].size.height) }};
+ static_cast<uint16_t>([nativeView bounds].size.height) }};
}
std::array<uint16_t, 2> getFramebufferSize() const override {
@@ -3978,15 +4824,14 @@ class MBGLView : public mbgl::View
static_cast<uint16_t>([[nativeView glView] drawableHeight]) }};
}
- void notify() override
+ void notifyMapChange(mbgl::MapChange change) override
{
- // no-op
+ [nativeView notifyMapChange:change];
}
- void notifyMapChange(mbgl::MapChange change) override
+ void invalidate() override
{
- assert([[NSThread currentThread] isMainThread]);
- [nativeView notifyMapChange:change];
+ [nativeView setNeedsGLDisplay];
}
void activate() override
@@ -3999,26 +4844,9 @@ class MBGLView : public mbgl::View
[EAGLContext setCurrentContext:nil];
}
- void invalidate() override
- {
- [nativeView performSelectorOnMainThread:@selector(setNeedsGLDisplay)
- withObject:nil
- waitUntilDone:NO];
- }
-
- void beforeRender() override
- {
- // no-op
- }
-
- void afterRender() override
- {
- // no-op
- }
-
- private:
- __weak MGLMapView *nativeView = nullptr;
- const float scaleFactor;
+private:
+ __weak MGLMapView *nativeView = nullptr;
+ const float scaleFactor;
};
@end
@@ -4188,7 +5016,7 @@ void MGLPrepareCustomStyleLayer(void *context)
}
}
-void MGLDrawCustomStyleLayer(void *context, const mbgl::CustomLayerRenderParameters &params)
+void MGLDrawCustomStyleLayer(void *context, const mbgl::style::CustomLayerRenderParameters &params)
{
CGSize size = CGSizeMake(params.width, params.height);
CLLocationCoordinate2D centerCoordinate = CLLocationCoordinate2DMake(params.latitude, params.longitude);
@@ -4220,14 +5048,14 @@ void MGLFinishCustomStyleLayer(void *context)
{
NSAssert(identifier, @"Style layer needs an identifier");
MGLCustomStyleLayerHandlers *context = new MGLCustomStyleLayerHandlers(preparation, drawing, completion);
- _mbglMap->addCustomLayer(identifier.UTF8String, MGLPrepareCustomStyleLayer,
- MGLDrawCustomStyleLayer, MGLFinishCustomStyleLayer,
- context, otherIdentifier.UTF8String);
+ _mbglMap->addLayer(std::make_unique<mbgl::style::CustomLayer>(identifier.UTF8String, MGLPrepareCustomStyleLayer,
+ MGLDrawCustomStyleLayer, MGLFinishCustomStyleLayer, context),
+ otherIdentifier ? mbgl::optional<std::string>(otherIdentifier.UTF8String) : mbgl::optional<std::string>());
}
- (void)removeCustomStyleLayerWithIdentifier:(NSString *)identifier
{
- _mbglMap->removeCustomLayer(identifier.UTF8String);
+ _mbglMap->removeLayer(identifier.UTF8String);
}
- (void)setCustomStyleLayersNeedDisplay
diff --git a/platform/ios/src/MGLMapViewDelegate.h b/platform/ios/src/MGLMapViewDelegate.h
new file mode 100644
index 0000000000..39eb43d4ca
--- /dev/null
+++ b/platform/ios/src/MGLMapViewDelegate.h
@@ -0,0 +1,284 @@
+#import <UIKit/UIKit.h>
+
+#import "MGLTypes.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class MGLMapView;
+
+/** The MGLMapViewDelegate protocol defines a set of optional methods that you can use to receive map-related update messages. Because many map operations require the `MGLMapView` class to load data asynchronously, the map view calls these methods to notify your application when specific operations complete. The map view also uses these methods to request annotation marker symbology and to manage interactions with those markers. */
+@protocol MGLMapViewDelegate <NSObject>
+
+@optional
+
+#pragma mark Responding to Map Position Changes
+
+/**
+ Tells the delegate that the region displayed by the map view is about to change.
+
+ This method is called whenever the currently displayed map region will start changing.
+
+ @param mapView The map view whose visible region will change.
+ @param animated Whether the change will cause an animated effect on the map.
+ */
+- (void)mapView:(MGLMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
+
+/**
+ Tells the delegate that the region displayed by the map view is changing.
+
+ This method is called whenever the currently displayed map region changes. During movement, this method may be called many times to report updates to the map position. Therefore, your implementation of this method should be as lightweight as possible to avoid affecting performance.
+
+ @param mapView The map view whose visible region is changing.
+ */
+- (void)mapViewRegionIsChanging:(MGLMapView *)mapView;
+
+/**
+ Tells the delegate that the region displayed by the map view just changed.
+
+ This method is called whenever the currently displayed map region has finished changing.
+
+ @param mapView The map view whose visible region changed.
+ @param animated Whether the change caused an animated effect on the map.
+ */
+- (void)mapView:(MGLMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
+
+#pragma mark Loading the Map
+
+/**
+ Tells the delegate that the map view will begin to load.
+
+ This method is called whenever the map view starts loading, including when a new style has been set and the map must reload.
+
+ @param mapView The map view that is starting to load.
+ */
+- (void)mapViewWillStartLoadingMap:(MGLMapView *)mapView;
+
+/**
+ Tells the delegate that the map view has finished loading.
+
+ This method is called whenever the map view finishes loading, either after the initial load or after a style change has forced a reload.
+
+ @param mapView The map view that has finished loading.
+ */
+- (void)mapViewDidFinishLoadingMap:(MGLMapView *)mapView;
+
+// TODO
+- (void)mapViewDidFailLoadingMap:(MGLMapView *)mapView withError:(NSError *)error;
+
+// TODO
+- (void)mapViewWillStartRenderingMap:(MGLMapView *)mapView;
+
+// TODO
+- (void)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
+
+// TODO
+- (void)mapViewWillStartRenderingFrame:(MGLMapView *)mapView;
+
+// TODO
+- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
+
+#pragma mark Tracking User Location
+
+/**
+ Tells the delegate that the map view will begin tracking the user's location.
+
+ This method is called when the value of the `showsUserLocation` property changes to `YES`.
+
+ @param mapView The map view that is tracking the user's location.
+ */
+- (void)mapViewWillStartLocatingUser:(MGLMapView *)mapView;
+
+/**
+ Tells the delegate that the map view has stopped tracking the user's location.
+
+ This method is called when the value of the `showsUserLocation` property changes to `NO`.
+
+ @param mapView The map view that is tracking the user's location.
+ */
+- (void)mapViewDidStopLocatingUser:(MGLMapView *)mapView;
+
+/**
+ Tells the delegate that the location of the user was updated.
+
+ While the `showsUserLocation` property is set to `YES`, this method is called whenever a new location update is received by the map view. This method is also called if the map view's user tracking mode is set to `MGLUserTrackingModeFollowWithHeading` and the heading changes, or if it is set to `MGLUserTrackingModeFollowWithCourse` and the course changes.
+
+ This method is not called if the application is currently running in the background. If you want to receive location updates while running in the background, you must use the Core Location framework.
+
+ @param mapView The map view that is tracking the user's location.
+ @param userLocation The location object representing the user's latest location. This property may be `nil`.
+ */
+- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(nullable MGLUserLocation *)userLocation;
+
+/**
+ Tells the delegate that an attempt to locate the user's position failed.
+
+ @param mapView The map view that is tracking the user's location.
+ @param error An error object containing the reason why location tracking failed.
+ */
+- (void)mapView:(MGLMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
+
+/**
+ Tells the delegate that the map view's user tracking mode has changed.
+
+ This method is called after the map view asynchronously changes to reflect the new user tracking mode, for example by beginning to zoom or rotate.
+
+ @param mapView The map view that changed its tracking mode.
+ @param mode The new tracking mode.
+ @param animated Whether the change caused an animated effect on the map.
+ */
+- (void)mapView:(MGLMapView *)mapView didChangeUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated;
+
+#pragma mark Managing the Display of Annotations
+
+/**
+ Returns a view object to use for the marker for the specified point annotation object.
+
+ @param mapView The map view that requested the annotation view.
+ @param annotation The object representing the annotation that is about to be displayed.
+ @return The view object to display for the specified annotation or `nil` if you want to display the default marker image.
+ */
+- (nullable MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id <MGLAnnotation>)annotation;
+
+/**
+ Returns an image object to use for the marker for the specified point annotation object.
+
+ @param mapView The map view that requested the annotation image.
+ @param annotation The object representing the annotation that is about to be displayed.
+ @return The image object to display for the specified annotation or `nil` if you want to display the default marker image.
+ */
+- (nullable MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation;
+
+/**
+ Returns the alpha value to use when rendering a shape annotation. Defaults to `1.0`.
+
+ @param mapView The map view rendering the shape annotation.
+ @param annotation The annotation being rendered.
+ @return An alpha value between `0` and `1.0`.
+ */
+- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation;
+
+/**
+ Returns the stroke color to use when rendering a shape annotation. Defaults to the map view’s tint color.
+
+ @param mapView The map view rendering the shape annotation.
+ @param annotation The annotation being rendered.
+ @return A color to use for the shape outline.
+ */
+- (UIColor *)mapView:(MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation;
+
+/**
+ Returns the fill color to use when rendering a polygon annotation. Defaults to the map view’s tint color.
+
+ @param mapView The map view rendering the polygon annotation.
+ @param annotation The annotation being rendered.
+ @return A color to use for the polygon interior.
+ */
+- (UIColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
+
+/**
+ Returns the line width to use when rendering a polyline annotation. Defaults to `3.0`.
+
+ @param mapView The map view rendering the polygon annotation.
+ @param annotation The annotation being rendered.
+ @return A line width for the polyline.
+ */
+- (CGFloat)mapView:(MGLMapView *)mapView lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
+
+/**
+ Returns a Boolean value indicating whether the annotation is able to display extra information in a callout bubble.
+
+ If the value returned is `YES`, a standard callout bubble is shown when the user taps a selected annotation. The callout uses the title and subtitle text from the associated annotation object. If there is no title text, though, the annotation will not show a callout. The callout also displays any custom callout views returned by the delegate for the left and right callout accessory views.
+
+ If the value returned is `NO`, the value of the title and subtitle strings are ignored.
+
+ @param mapView The map view that requested the annotation callout ability.
+ @param annotation The object representing the annotation.
+ @return A Boolean indicating whether the annotation should show a callout.
+ */
+- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation;
+
+/**
+ Returns a callout view to display for the specified annotation.
+
+ If this method is present in the delegate, it must return a new instance of a view dedicated to display the callout bubble. It will be configured by the map view. If this method is not present, or if it returns `nil`, a standard, two-line, bubble-like callout view is displayed by default.
+
+ @param mapView The map view that requested the callout view.
+ @param annotation The object representing the annotation.
+ @return A view conforming to the `MGLCalloutView` protocol, or `nil` to use the default callout view.
+ */
+- (nullable UIView <MGLCalloutView> *)mapView:(MGLMapView *)mapView calloutViewForAnnotation:(id <MGLAnnotation>)annotation;
+
+/**
+ Returns the view to display on the left side of the standard callout bubble.
+
+ The default value is treated as if `nil`. The left callout view is typically used to display information about the annotation or to link to custom information provided by your application.
+
+ If the view you specify is also a descendant of the `UIControl` class, you can use the map view's delegate to receive notifications when your control is tapped. If it does not descend from `UIControl`, your view is responsible for handling any touch events within its bounds.
+
+ @param mapView The map view presenting the annotation callout.
+ @param annotation The object representing the annotation with the callout.
+ @return The accessory view to display.
+ */
+- (nullable UIView *)mapView:(MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
+
+/**
+ Returns the view to display on the right side of the standard callout bubble.
+
+ The default value is treated is if `nil`. The right callout view is typically used to link to more detailed information about the annotation. A common view to specify for this property is `UIButton` object whose type is set to `UIButtonTypeDetailDisclosure`.
+
+ If the view you specify is also a descendant of the `UIControl` class, you can use the map view's delegate to receive notifications when your control is tapped. If it does not descend from `UIControl`, your view is responsible for handling any touch events within its bounds.
+
+ @param mapView The map view presenting the annotation callout.
+ @param annotation The object representing the annotation with the callout.
+ @return The accessory view to display.
+ */
+- (nullable UIView *)mapView:(MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
+
+#pragma mark Managing Annotations
+
+/**
+ Tells the delegate that the user tapped one of the annotation's accessory buttons.
+
+ Accessory views contain custom content and are positioned on either side of the annotation title text. If a view you specify is a descendant of the `UIControl` class, the map view calls this method as a convenience whenever the user taps your view. You can use this method to respond to taps and perform any actions associated with that control. For example, if your control displayed additional information about the annotation, you could use this method to present a modal panel with that information.
+
+ If your custom accessory views are not descendants of the `UIControl` class, the map view does not call this method.
+
+ @param mapView The map view containing the specified annotation.
+ @param annotation The annotation whose button was tapped.
+ @param control The control that was tapped.
+ */
+- (void)mapView:(MGLMapView *)mapView annotation:(id <MGLAnnotation>)annotation calloutAccessoryControlTapped:(UIControl *)control;
+
+/**
+ Tells the delegate that the user tapped on an annotation's callout view.
+
+ @param mapView The map view containing the specified annotation.
+ @param annotation The annotation whose callout was tapped.
+ */
+- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation;
+
+#pragma mark Selecting Annotations
+
+/**
+ Tells the delegate that one of its annotations was selected.
+
+ You can use this method to track changes in the selection state of annotations.
+
+ @param mapView The map view containing the annotation.
+ @param annotation The annotation that was selected.
+ */
+- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation;
+
+/**
+ Tells the delegate that one of its annotations was deselected.
+
+ You can use this method to track changes in the selection state of annotations.
+
+ @param mapView The map view containing the annotation.
+ @param annotation The annotation that was deselected.
+ */
+- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/platform/ios/src/MGLMapView_Internal.h b/platform/ios/src/MGLMapView_Internal.h
new file mode 100644
index 0000000000..6225e11749
--- /dev/null
+++ b/platform/ios/src/MGLMapView_Internal.h
@@ -0,0 +1,17 @@
+#import <Mapbox/Mapbox.h>
+
+/// Minimum size of an annotation’s accessibility element.
+extern const CGSize MGLAnnotationAccessibilityElementMinimumSize;
+
+@interface MGLMapView (Internal)
+
+/** Triggers another render pass even when it is not necessary. */
+- (void)setNeedsGLDisplay;
+
+/** Returns whether the map view is currently loading or processing any assets required to render the map */
+- (BOOL)isFullyLoaded;
+
+/** Empties the in-memory tile cache. */
+- (void)didReceiveMemoryWarning;
+
+@end
diff --git a/platform/ios/src/MGLMapboxEvents.m b/platform/ios/src/MGLMapboxEvents.m
index 2dc7fee280..5ddf4e2b57 100644
--- a/platform/ios/src/MGLMapboxEvents.m
+++ b/platform/ios/src/MGLMapboxEvents.m
@@ -123,7 +123,7 @@ const NSTimeInterval MGLFlushInterval = 180;
@property (nonatomic) MGLLocationManager *locationManager;
@property (nonatomic) NSTimer *timer;
@property (nonatomic) NSDate *instanceIDRotationDate;
-@property (nonatomic) NSDate *turnstileSendDate;
+@property (nonatomic) NSDate *nextTurnstileSendDate;
@end
@@ -136,7 +136,7 @@ const NSTimeInterval MGLFlushInterval = 180;
NSBundle *bundle = [NSBundle mainBundle];
NSNumber *accountTypeNumber = [bundle objectForInfoDictionaryKey:@"MGLMapboxAccountType"];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{
- @"MGLMapboxAccountType": accountTypeNumber ? accountTypeNumber : @0,
+ @"MGLMapboxAccountType": accountTypeNumber ?: @0,
@"MGLMapboxMetricsEnabled": @YES,
@"MGLMapboxMetricsDebugLoggingEnabled": @NO,
}];
@@ -144,8 +144,12 @@ const NSTimeInterval MGLFlushInterval = 180;
}
+ (BOOL)isEnabled {
+#if TARGET_OS_SIMULATOR
+ return NO;
+#else
return ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"] &&
[[NSUserDefaults standardUserDefaults] integerForKey:@"MGLMapboxAccountType"] == 0);
+#endif
}
- (BOOL)debugLoggingEnabled {
@@ -311,7 +315,7 @@ const NSTimeInterval MGLFlushInterval = 180;
}
- (void)pushTurnstileEvent {
- if (self.turnstileSendDate && [[NSDate date] timeIntervalSinceDate:self.turnstileSendDate] < 0) {
+ if (self.nextTurnstileSendDate && [[NSDate date] timeIntervalSinceDate:self.nextTurnstileSendDate] < 0) {
return;
}
@@ -338,11 +342,25 @@ const NSTimeInterval MGLFlushInterval = 180;
return;
}
[strongSelf writeEventToLocalDebugLog:turnstileEventAttributes];
- NSTimeInterval twentyFourHourTimeInterval = 24 * 3600;
- strongSelf.turnstileSendDate = [[NSDate date] dateByAddingTimeInterval:twentyFourHourTimeInterval];
+ [strongSelf updateNextTurnstileSendDate];
}];
}
+- (void)updateNextTurnstileSendDate {
+ // Find the time a day from now (sometime tomorrow)
+ NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
+ NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
+ dayComponent.day = 1;
+ NSDate *sometimeTomorrow = [calendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];
+
+ // Find the start of tomorrow and use that as the next turnstile send date. The effect of this is that
+ // turnstile events can be sent as much as once per calendar day and always at the start of a session
+ // when a map load happens.
+ NSDate *startOfTomorrow = nil;
+ [calendar rangeOfUnit:NSCalendarUnitDay startDate:&startOfTomorrow interval:nil forDate:sometimeTomorrow];
+ self.nextTurnstileSendDate = startOfTomorrow;
+}
+
+ (void)pushEvent:(NSString *)event withAttributes:(MGLMapboxEventAttributes *)attributeDictionary {
[[MGLMapboxEvents sharedManager] pushEvent:event withAttributes:attributeDictionary];
}
@@ -356,7 +374,7 @@ const NSTimeInterval MGLFlushInterval = 180;
[self pushTurnstileEvent];
}
- if ([self isPaused]) {
+ if (self.paused) {
return;
}
@@ -446,7 +464,7 @@ const NSTimeInterval MGLFlushInterval = 180;
// Called implicitly from public use of +flush.
//
- (void)postEvents:(NS_ARRAY_OF(MGLMapboxEventAttributes *) *)events {
- if ([self isPaused]) {
+ if (self.paused) {
return;
}
diff --git a/platform/ios/include/MGLUserLocation.h b/platform/ios/src/MGLUserLocation.h
index 6160413510..6160413510 100644
--- a/platform/ios/include/MGLUserLocation.h
+++ b/platform/ios/src/MGLUserLocation.h
diff --git a/platform/ios/src/MGLUserLocation.m b/platform/ios/src/MGLUserLocation.m
index 0ee90a3c2c..a568ec8be1 100644
--- a/platform/ios/src/MGLUserLocation.m
+++ b/platform/ios/src/MGLUserLocation.m
@@ -1,6 +1,7 @@
#import "MGLUserLocation_Private.h"
#import "MGLMapView.h"
+#import "NSBundle+MGLAdditions.h"
NS_ASSUME_NONNULL_BEGIN
@@ -68,7 +69,7 @@ NS_ASSUME_NONNULL_END
- (NSString *)title
{
- return (_title ? _title : @"You Are Here");
+ return _title ?: NSLocalizedStringWithDefaultValue(@"USER_DOT_TITLE", nil, nil, @"You Are Here", @"Default user location annotation title");
}
- (NSString *)description
diff --git a/platform/ios/src/MGLUserLocationAnnotationView.m b/platform/ios/src/MGLUserLocationAnnotationView.m
index a7ca352bc0..c514026e42 100644
--- a/platform/ios/src/MGLUserLocationAnnotationView.m
+++ b/platform/ios/src/MGLUserLocationAnnotationView.m
@@ -4,6 +4,8 @@
#import "MGLUserLocation_Private.h"
#import "MGLAnnotation.h"
#import "MGLMapView.h"
+#import "MGLCoordinateFormatter.h"
+#import "NSBundle+MGLAdditions.h"
const CGFloat MGLUserLocationAnnotationDotSize = 22.0;
const CGFloat MGLUserLocationAnnotationHaloSize = 115.0;
@@ -36,6 +38,8 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
CLLocationAccuracy _oldHorizontalAccuracy;
double _oldZoom;
double _oldPitch;
+
+ MGLCoordinateFormatter *_accessibilityCoordinateFormatter;
}
- (instancetype)initWithFrame:(CGRect)frame
@@ -53,7 +57,10 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
self.annotation = [[MGLUserLocation alloc] initWithMapView:mapView];
_mapView = mapView;
[self setupLayers];
- self.accessibilityLabel = @"User location";
+ self.accessibilityTraits = UIAccessibilityTraitButton | UIAccessibilityTraitAdjustable | UIAccessibilityTraitUpdatesFrequently;
+
+ _accessibilityCoordinateFormatter = [[MGLCoordinateFormatter alloc] init];
+ _accessibilityCoordinateFormatter.unitStyle = NSFormattingUnitStyleLong;
}
return self;
}
@@ -64,6 +71,62 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
return [self initInMapView:mapView];
}
+- (BOOL)isAccessibilityElement
+{
+ return !self.hidden;
+}
+
+- (NSString *)accessibilityLabel
+{
+ return self.annotation.title;
+}
+
+- (NSString *)accessibilityValue
+{
+ if (self.annotation.subtitle)
+ {
+ return self.annotation.subtitle;
+ }
+
+ // Each arcminute of longitude is at most about 1 nmi, too small for low zoom levels.
+ // Each arcsecond of longitude is at most about 30 m, too small for all but the very highest of zoom levels.
+ double zoomLevel = self.mapView.zoomLevel;
+ _accessibilityCoordinateFormatter.allowsMinutes = zoomLevel > 8;
+ _accessibilityCoordinateFormatter.allowsSeconds = zoomLevel > 20;
+
+ return [_accessibilityCoordinateFormatter stringFromCoordinate:self.mapView.centerCoordinate];
+}
+
+- (CGRect)accessibilityFrame
+{
+ return CGRectInset(self.frame, -15, -15);
+}
+
+- (UIBezierPath *)accessibilityPath
+{
+ return [UIBezierPath bezierPathWithOvalInRect:self.frame];
+}
+
+- (void)accessibilityIncrement
+{
+ [self.mapView accessibilityIncrement];
+}
+
+- (void)accessibilityDecrement
+{
+ [self.mapView accessibilityDecrement];
+}
+
+- (void)setHidden:(BOOL)hidden
+{
+ BOOL oldValue = super.hidden;
+ [super setHidden:hidden];
+ if (oldValue != hidden)
+ {
+ UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil);
+ }
+}
+
- (void)setTintColor:(UIColor *)tintColor
{
if (_puckModeActivated)
@@ -128,6 +191,22 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
}
}
+- (void)updateFrameWithSize:(CGFloat)size
+{
+ CGSize newSize = CGSizeMake(size, size);
+ if (CGSizeEqualToSize(self.frame.size, newSize))
+ {
+ return;
+ }
+
+ // Update frame size, keeping the existing center point.
+ CGPoint oldCenter = self.center;
+ CGRect newFrame = self.frame;
+ newFrame.size = newSize;
+ [self setFrame:newFrame];
+ [self setCenter:oldCenter];
+}
+
- (void)drawPuck
{
if ( ! _puckModeActivated)
@@ -140,6 +219,8 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
_haloLayer = nil;
_dotBorderLayer = nil;
_dotLayer = nil;
+
+ [self updateFrameWithSize:MGLUserLocationAnnotationPuckSize];
}
// background dot (white with black shadow)
@@ -215,6 +296,8 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
_puckDot = nil;
_puckArrow = nil;
+
+ [self updateFrameWithSize:MGLUserLocationAnnotationDotSize];
}
BOOL showHeadingIndicator = _mapView.userTrackingMode == MGLUserTrackingModeFollowWithHeading;
@@ -471,7 +554,7 @@ const CGFloat MGLUserLocationAnnotationArrowSize = MGLUserLocationAnnotationPuck
CGContextDrawRadialGradient(context, gradient,
centerPoint, 0.0,
centerPoint, haloRadius,
- nil);
+ kNilOptions);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
diff --git a/platform/ios/framework/Mapbox.h b/platform/ios/src/Mapbox.h
index 7b233ecac5..bc22a5f955 100644
--- a/platform/ios/framework/Mapbox.h
+++ b/platform/ios/src/Mapbox.h
@@ -6,15 +6,21 @@ FOUNDATION_EXPORT double MapboxVersionNumber;
/// Project version string for Mapbox.
FOUNDATION_EXPORT const unsigned char MapboxVersionString[];
+#import "MGLAnnotationView.h"
#import "MGLAccountManager.h"
#import "MGLAnnotation.h"
#import "MGLAnnotationImage.h"
#import "MGLCalloutView.h"
-#import "MGLMapCamera.h"
+#import "MGLClockDirectionFormatter.h"
+#import "MGLCompassDirectionFormatter.h"
+#import "MGLCoordinateFormatter.h"
+#import "MGLFeature.h"
#import "MGLGeometry.h"
+#import "MGLMapCamera.h"
#import "MGLMapView.h"
#import "MGLMapView+IBAdditions.h"
#import "MGLMapView+MGLCustomStyleLayerAdditions.h"
+#import "MGLMapViewDelegate.h"
#import "MGLMultiPoint.h"
#import "MGLOfflinePack.h"
#import "MGLOfflineRegion.h"
@@ -24,7 +30,9 @@ FOUNDATION_EXPORT const unsigned char MapboxVersionString[];
#import "MGLPolygon.h"
#import "MGLPolyline.h"
#import "MGLShape.h"
+#import "MGLShapeCollection.h"
#import "MGLStyle.h"
#import "MGLTilePyramidOfflineRegion.h"
#import "MGLTypes.h"
#import "MGLUserLocation.h"
+#import "NSValue+MGLAdditions.h"
diff --git a/platform/ios/test/Images.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/test/Images.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index 5008911f9e..0000000000
--- a/platform/ios/test/Images.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "57x57",
- "scale" : "1x"
- },
- {
- "idiom" : "iphone",
- "size" : "57x57",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "60x60",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "50x50",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "50x50",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "72x72",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "72x72",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "76x76",
- "scale" : "2x"
- },
- {
- "idiom" : "car",
- "size" : "120x120",
- "scale" : "1x"
- },
- {
- "size" : "24x24",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "38mm"
- },
- {
- "size" : "27.5x27.5",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "notificationCenter",
- "subtype" : "42mm"
- },
- {
- "size" : "29x29",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "watch",
- "role" : "companionSettings",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "appLauncher",
- "subtype" : "38mm"
- },
- {
- "size" : "44x44",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "longLook",
- "subtype" : "42mm"
- },
- {
- "size" : "86x86",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "38mm"
- },
- {
- "size" : "98x98",
- "idiom" : "watch",
- "scale" : "2x",
- "role" : "quickLook",
- "subtype" : "42mm"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-} \ No newline at end of file
diff --git a/platform/ios/test/Info.plist b/platform/ios/test/Info.plist
new file mode 100644
index 0000000000..ba72822e87
--- /dev/null
+++ b/platform/ios/test/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+</dict>
+</plist>
diff --git a/platform/ios/test/KIF b/platform/ios/test/KIF
deleted file mode 160000
-Subproject 0e56388a71b0fce94e0df58fa33f81287fa27a7
diff --git a/platform/ios/test/.gitignore b/platform/ios/uitest/.gitignore
index 516812b72d..516812b72d 100644
--- a/platform/ios/test/.gitignore
+++ b/platform/ios/uitest/.gitignore
diff --git a/platform/ios/test/App-Info.plist b/platform/ios/uitest/App-Info.plist
index 8753067af1..ab5ac7ec8c 100644
--- a/platform/ios/test/App-Info.plist
+++ b/platform/ios/uitest/App-Info.plist
@@ -28,8 +28,6 @@
<string>pk.eyJ1IjoianVzdGluIiwiYSI6Ik9RX3RRQzAifQ.dmOg_BAp1ywuDZMM7YsXRg</string>
<key>MGLMapboxMetricsEnabledSettingShownInApp</key>
<true/>
- <key>MGLMetricsTestServerURL</key>
- <string>https://cloudfront-staging.tilestream.net</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Strictly for testing purposes, promise!</string>
<key>UILaunchStoryboardName</key>
diff --git a/platform/ios/test/Bundle-Info.plist b/platform/ios/uitest/Bundle-Info.plist
index 169b6f710e..169b6f710e 100644
--- a/platform/ios/test/Bundle-Info.plist
+++ b/platform/ios/uitest/Bundle-Info.plist
diff --git a/platform/ios/uitest/Images.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/uitest/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..eeea76c2db
--- /dev/null
+++ b/platform/ios/uitest/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,73 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Contents.json b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Contents.json
index 628027f247..628027f247 100644
--- a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Contents.json
+++ b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Contents.json
diff --git a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png
index 208eea205a..208eea205a 100644
--- a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png
+++ b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png
Binary files differ
diff --git a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default@2x.png b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default@2x.png
index 4438336215..4438336215 100644
--- a/platform/ios/test/Images.xcassets/LaunchImage.launchimage/Default@2x.png
+++ b/platform/ios/uitest/Images.xcassets/LaunchImage.launchimage/Default@2x.png
Binary files differ
diff --git a/platform/ios/uitest/KIF b/platform/ios/uitest/KIF
new file mode 160000
+Subproject 973a4cb653b54c3e8b2c0681f4097568ff0ac34
diff --git a/platform/ios/test/KIFTestActor+MapboxGL.h b/platform/ios/uitest/KIFTestActor+MapboxGL.h
index d16e348486..d16e348486 100644
--- a/platform/ios/test/KIFTestActor+MapboxGL.h
+++ b/platform/ios/uitest/KIFTestActor+MapboxGL.h
diff --git a/platform/ios/test/KIFTestActor+MapboxGL.m b/platform/ios/uitest/KIFTestActor+MapboxGL.m
index 6c5e53f40d..6c5e53f40d 100644
--- a/platform/ios/test/KIFTestActor+MapboxGL.m
+++ b/platform/ios/uitest/KIFTestActor+MapboxGL.m
diff --git a/platform/ios/test/LaunchScreen.xib b/platform/ios/uitest/LaunchScreen.xib
index 238fb51b50..238fb51b50 100644
--- a/platform/ios/test/LaunchScreen.xib
+++ b/platform/ios/uitest/LaunchScreen.xib
diff --git a/platform/ios/test/MGLTAppDelegate.h b/platform/ios/uitest/MGLTAppDelegate.h
index c0025582ee..c0025582ee 100644
--- a/platform/ios/test/MGLTAppDelegate.h
+++ b/platform/ios/uitest/MGLTAppDelegate.h
diff --git a/platform/ios/test/MGLTAppDelegate.m b/platform/ios/uitest/MGLTAppDelegate.m
index b79c2f4abb..b79c2f4abb 100644
--- a/platform/ios/test/MGLTAppDelegate.m
+++ b/platform/ios/uitest/MGLTAppDelegate.m
diff --git a/platform/ios/test/MGLTViewController.h b/platform/ios/uitest/MGLTViewController.h
index 349c216008..349c216008 100644
--- a/platform/ios/test/MGLTViewController.h
+++ b/platform/ios/uitest/MGLTViewController.h
diff --git a/platform/ios/test/MGLTViewController.m b/platform/ios/uitest/MGLTViewController.m
index 451dea9292..451dea9292 100644
--- a/platform/ios/test/MGLTViewController.m
+++ b/platform/ios/uitest/MGLTViewController.m
diff --git a/platform/ios/test/MapViewTests.m b/platform/ios/uitest/MapViewTests.m
index c8fe862e0a..41ea5446ef 100644
--- a/platform/ios/test/MapViewTests.m
+++ b/platform/ios/uitest/MapViewTests.m
@@ -7,7 +7,6 @@
#import "MGLTViewController.h"
#import <CoreLocation/CoreLocation.h>
-#import <KIF/UIAutomationHelper.h>
@interface MapViewTests : KIFTestCase <MGLMapViewDelegate>
@@ -50,7 +49,7 @@
- (void)approveLocationIfNeeded {
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
- [UIAutomationHelper acknowledgeSystemAlert];
+ [tester acknowledgeSystemAlert];
[tester waitForTimeInterval:1];
}
XCTAssertTrue([CLLocationManager locationServicesEnabled]);
@@ -375,9 +374,9 @@
- (void)testBottomLayoutGuide {
CGRect logoBugFrame, toolbarFrame, attributionButtonFrame;
- UIView *logoBug = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Mapbox logo"];
+ UIView *logoBug = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Mapbox"];
UIToolbar *toolbar = tester.viewController.navigationController.toolbar;
- UIView *attributionButton = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Attribution info"];
+ UIView *attributionButton = (UIView *)[tester waitForViewWithAccessibilityLabel:@"About this map"];
tester.viewController.navigationController.toolbarHidden = NO;
@@ -406,8 +405,8 @@
[tester.viewController insetMapView];
[tester waitForAnimationsToFinish];
- UIView *logoBug = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Mapbox logo"];
- UIView *attributionButton = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Attribution info"];
+ UIView *logoBug = (UIView *)[tester waitForViewWithAccessibilityLabel:@"Mapbox"];
+ UIView *attributionButton = (UIView *)[tester waitForViewWithAccessibilityLabel:@"About this map"];
CGRect mapViewFrame = [tester.mapView.superview convertRect:tester.mapView.frame toView:nil];
diff --git a/platform/ios/test/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h b/platform/ios/uitest/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h
index c20a9c2b20..c20a9c2b20 100644
--- a/platform/ios/test/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h
+++ b/platform/ios/uitest/OCMock/OCMock/NSNotificationCenter+OCMAdditions.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMArg.h b/platform/ios/uitest/OCMock/OCMock/OCMArg.h
index d53437cb7d..d53437cb7d 100644
--- a/platform/ios/test/OCMock/OCMock/OCMArg.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMArg.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMConstraint.h b/platform/ios/uitest/OCMock/OCMock/OCMConstraint.h
index 777966ab7d..777966ab7d 100644
--- a/platform/ios/test/OCMock/OCMock/OCMConstraint.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMConstraint.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMLocation.h b/platform/ios/uitest/OCMock/OCMock/OCMLocation.h
index e510db7aaf..e510db7aaf 100644
--- a/platform/ios/test/OCMock/OCMock/OCMLocation.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMLocation.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMMacroState.h b/platform/ios/uitest/OCMock/OCMock/OCMMacroState.h
index 4b2d635086..4b2d635086 100644
--- a/platform/ios/test/OCMock/OCMock/OCMMacroState.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMMacroState.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMRecorder.h b/platform/ios/uitest/OCMock/OCMock/OCMRecorder.h
index f56d2ca4c0..f56d2ca4c0 100644
--- a/platform/ios/test/OCMock/OCMock/OCMRecorder.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMRecorder.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMStubRecorder.h b/platform/ios/uitest/OCMock/OCMock/OCMStubRecorder.h
index 890c9ef3bc..890c9ef3bc 100644
--- a/platform/ios/test/OCMock/OCMock/OCMStubRecorder.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMStubRecorder.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMock.h b/platform/ios/uitest/OCMock/OCMock/OCMock.h
index f0083b3507..f0083b3507 100644
--- a/platform/ios/test/OCMock/OCMock/OCMock.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMock.h
diff --git a/platform/ios/test/OCMock/OCMock/OCMockObject.h b/platform/ios/uitest/OCMock/OCMock/OCMockObject.h
index 63f2bae2be..63f2bae2be 100644
--- a/platform/ios/test/OCMock/OCMock/OCMockObject.h
+++ b/platform/ios/uitest/OCMock/OCMock/OCMockObject.h
diff --git a/platform/ios/test/OCMock/libOCMock.a b/platform/ios/uitest/OCMock/libOCMock.a
index 9bb38e21a3..9bb38e21a3 100644
--- a/platform/ios/test/OCMock/libOCMock.a
+++ b/platform/ios/uitest/OCMock/libOCMock.a
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/.gitignore b/platform/ios/uitest/OHHTTPStubs/.gitignore
index a27dff4c47..a27dff4c47 100644
--- a/platform/ios/test/OHHTTPStubs/.gitignore
+++ b/platform/ios/uitest/OHHTTPStubs/.gitignore
diff --git a/platform/ios/test/OHHTTPStubs/.travis.yml b/platform/ios/uitest/OHHTTPStubs/.travis.yml
index 45bfb794fd..45bfb794fd 100644
--- a/platform/ios/test/OHHTTPStubs/.travis.yml
+++ b/platform/ios/uitest/OHHTTPStubs/.travis.yml
diff --git a/platform/ios/test/OHHTTPStubs/CHANGELOG.md b/platform/ios/uitest/OHHTTPStubs/CHANGELOG.md
index 34f2e98990..34f2e98990 100644
--- a/platform/ios/test/OHHTTPStubs/CHANGELOG.md
+++ b/platform/ios/uitest/OHHTTPStubs/CHANGELOG.md
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.h
index bf1a8f5fce..bf1a8f5fce 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.m
index 327a4d2d20..327a4d2d20 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.xib b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.xib
index bab95b860c..bab95b860c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.xib
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/MainViewController.xib
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj
index d79722eabb..d79722eabb 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 68ace104de..68ace104de 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme
index 41f5f1bbc6..41f5f1bbc6 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Demo.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
index e23833bf24..e23833bf24 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
index cfc0e73f1c..cfc0e73f1c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile
index 30504595e8..30504595e8 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile.lock b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile.lock
index 0d7e09fc56..0d7e09fc56 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Podfile.lock
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Podfile.lock
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
index 7a6d07a0a9..7a6d07a0a9 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
index e466a30930..e466a30930 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
index 55a0a6a468..55a0a6a468 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
index f976df50d7..f976df50d7 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
index 773f3f322e..773f3f322e 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
index 81aae9624d..81aae9624d 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h
index 7a6d07a0a9..7a6d07a0a9 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/Compatibility.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
index e466a30930..e466a30930 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
index 55a0a6a468..55a0a6a468 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
index f976df50d7..f976df50d7 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
index 773f3f322e..773f3f322e 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
index 81aae9624d..81aae9624d 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json
index a1bed26164..a1bed26164 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Local Podspecs/OHHTTPStubs.podspec.json
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock
index 0d7e09fc56..0d7e09fc56 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Manifest.lock
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj
index cf0b52702f..cf0b52702f 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
index 39df59c3c9..39df59c3c9 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
index b9b8578c7f..b9b8578c7f 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
index 4deafde22c..4deafde22c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
index aa992a4adb..aa992a4adb 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
index a14c030722..a14c030722 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
index 8fb40d2e94..8fb40d2e94 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
index 6e93a65cc8..6e93a65cc8 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
index 95cf11d9fb..95cf11d9fb 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
index de1d241adc..de1d241adc 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
index 79d3603ad7..79d3603ad7 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
index 756aa4392a..756aa4392a 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m
index ade64bd1a9..ade64bd1a9 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h
index 5918510c4e..5918510c4e 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-environment.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh
index ea685a22b1..ea685a22b1 100755
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig
index 722a231f1e..722a231f1e 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig
index 722a231f1e..722a231f1e 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Pods/Target Support Files/Pods/Pods.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg
index c42a21cd74..c42a21cd74 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.jpg
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt
index e662f91b23..e662f91b23 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Stubs/stub.txt
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png
index 0891b7aabf..0891b7aabf 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/Default-568h@2x.png
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist
index 25bfd55966..25bfd55966 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch
index 20ef719789..20ef719789 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/OHHTTPStubsDemo-Prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m
index 478bfb3959..478bfb3959 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/ObjC/Supporting Files/main.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/AppDelegate.swift b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/AppDelegate.swift
index 58f489a7d7..58f489a7d7 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/AppDelegate.swift
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/AppDelegate.swift
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Main.storyboard b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Main.storyboard
index 438521ca5c..438521ca5c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Main.storyboard
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Main.storyboard
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/MainViewController.swift b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/MainViewController.swift
index 9133e20d46..9133e20d46 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/MainViewController.swift
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/MainViewController.swift
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj
index 48a07864e3..48a07864e3 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 919434a625..919434a625 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
index 870383aff8..870383aff8 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcodeproj/xcshareddata/xcschemes/OHHTTPStubsDemo.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
index cfc0e73f1c..cfc0e73f1c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/OHHTTPStubsDemo.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile
index 17dfc0103f..17dfc0103f 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile.lock b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile.lock
index 834a7de58b..834a7de58b 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Podfile.lock
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Podfile.lock
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
index 7a6d07a0a9..7a6d07a0a9 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/Compatibility.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
index e466a30930..e466a30930 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubs.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
index 55a0a6a468..55a0a6a468 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
index f976df50d7..f976df50d7 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
index 773f3f322e..773f3f322e 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHHTTPStubsResponse.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
index 81aae9624d..81aae9624d 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Private/OHHTTPStubs/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
index e466a30930..e466a30930 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubs.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
index 55a0a6a468..55a0a6a468 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
index 247257b1d8..247257b1d8 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
index 773f3f322e..773f3f322e 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHHTTPStubsResponse.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
index 6a6273c69c..6a6273c69c 120000
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Headers/Public/OHHTTPStubs/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json
index a1bed26164..a1bed26164 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Local Podspecs/OHHTTPStubs.podspec.json
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock
index 834a7de58b..834a7de58b 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Manifest.lock
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj
index c30d5eaa4d..c30d5eaa4d 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
index 699b998d1c..699b998d1c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Pods.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist
index cea441462f..cea441462f 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
index cf3a26e1ef..cf3a26e1ef 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
index 4deafde22c..4deafde22c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
index aa992a4adb..aa992a4adb 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h
index d95666a8a9..d95666a8a9 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs-umbrella.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap
index 268a7c33d4..268a7c33d4 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.modulemap
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
index a14c030722..a14c030722 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/OHHTTPStubs/OHHTTPStubs.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist
index c10e7eab4f..c10e7eab4f 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
index 56b72965aa..56b72965aa 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
index 6e93a65cc8..6e93a65cc8 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
index 95cf11d9fb..95cf11d9fb 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h
index 28cfb1c4c0..28cfb1c4c0 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs-umbrella.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap
index efe706e390..efe706e390 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.modulemap
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
index de1d241adc..de1d241adc 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods-OHHTTPStubs/Pods-OHHTTPStubs.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist
index 6974542586..6974542586 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
index 79d3603ad7..79d3603ad7 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
index 756aa4392a..756aa4392a 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m
index ade64bd1a9..ade64bd1a9 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h
index 5918510c4e..5918510c4e 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-environment.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh
index 91e9c70b4d..91e9c70b4d 100755
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-frameworks.sh
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh
index ea685a22b1..ea685a22b1 100755
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h
index 21dcfd2c21..21dcfd2c21 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods-umbrella.h
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig
index a5a034c3e4..a5a034c3e4 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap
index 8413413077..8413413077 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.modulemap
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig
index a5a034c3e4..a5a034c3e4 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Pods/Target Support Files/Pods/Pods.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg
index c42a21cd74..c42a21cd74 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.jpg
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.txt b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.txt
index e662f91b23..e662f91b23 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Stubs/stub.txt
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Stubs/stub.txt
diff --git a/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png
new file mode 100644
index 0000000000..0891b7aabf
--- /dev/null
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Default-568h@2x.png
Binary files differ
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json
index 36d2c80d88..36d2c80d88 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist
index 0ca4d80efa..0ca4d80efa 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib
index a9be7a994c..a9be7a994c 100644
--- a/platform/ios/test/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib
+++ b/platform/ios/uitest/OHHTTPStubs/Examples/Swift/Supporting Files/LaunchScreen.xib
diff --git a/platform/ios/test/OHHTTPStubs/LICENSE b/platform/ios/uitest/OHHTTPStubs/LICENSE
index a83928dd2e..a83928dd2e 100644
--- a/platform/ios/test/OHHTTPStubs/LICENSE
+++ b/platform/ios/uitest/OHHTTPStubs/LICENSE
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs.podspec b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs.podspec
index 7ddbe58e23..7ddbe58e23 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs.podspec
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs.podspec
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj
index 7b1a4fa4db..7b1a4fa4db 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 25fccc6ba4..25fccc6ba4 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme
index f5a14781a1..f5a14781a1 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs Mac Framework.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme
index d82274e7af..d82274e7af 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS Framework.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme
index 998a5b942f..998a5b942f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcodeproj/xcshareddata/xcschemes/OHHTTPStubs iOS StaticLib.xcscheme
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata
index 06ceb62b61..06ceb62b61 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
index 08de0be8d3..08de0be8d3 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/OHHTTPStubs.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile
index c20f4c541f..c20f4c541f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile.lock b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile.lock
index 5896b3b3b0..5896b3b3b0 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Podfile.lock
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Podfile.lock
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h
index dfa82f6691..dfa82f6691 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m
index 1de5812ca1..1de5812ca1 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h
index 9f390294e2..9f390294e2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m
index 4ae7275480..4ae7275480 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h
index 8fed5a6891..8fed5a6891 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m
index 6413297d72..6413297d72 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h
index 5e610d887f..5e610d887f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m
index 1da148282d..1da148282d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h
index 68273da58e..68273da58e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h
index a880d75191..a880d75191 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m
index 1f97f914f3..1f97f914f3 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h
index 85435564c3..85435564c3 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m
index cfe609a2de..cfe609a2de 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h
index aed4549815..aed4549815 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m
index a56e8542e1..a56e8542e1 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h
index 030e8faed7..030e8faed7 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m
index 083d30c266..083d30c266 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h
index f475773d02..f475773d02 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m
index d53e6ec2db..d53e6ec2db 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE
index 0616192d00..0616192d00 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/LICENSE
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md
index 13e080c096..13e080c096 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/README.md
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h
index 312d680e0d..312d680e0d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m
index c2d855a59c..c2d855a59c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h
index 1c1f8dd6f8..1c1f8dd6f8 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m
index 6627dbb1b8..6627dbb1b8 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h
index b94f1cb8e0..b94f1cb8e0 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m
index b7e2a26cb2..b7e2a26cb2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h
index e6ed6de04c..e6ed6de04c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m
index a225290a25..a225290a25 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h
index 5d523636e8..5d523636e8 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m
index c06aa9ca4c..c06aa9ca4c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h
index 94082f6cb5..94082f6cb5 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h
index 3f1bc086f5..3f1bc086f5 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m
index 927f56d843..927f56d843 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h
index 37ce772de0..37ce772de0 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m
index e266451fe5..e266451fe5 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h
index 202e8f4ea2..202e8f4ea2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m
index 525d02aead..525d02aead 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h
index ac762c8238..ac762c8238 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h
index 9dcc623c63..9dcc623c63 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h
index 56feb9fb85..56feb9fb85 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h
index 67519d9848..67519d9848 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h
index 68fc7744f2..68fc7744f2 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h
index a5a38da7dc..a5a38da7dc 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h
index fd1322db9c..fd1322db9c 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h
index d9b35fb754..d9b35fb754 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h
index ca8209b81f..ca8209b81f 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h
index e36a765d82..e36a765d82 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h
index 835101de7b..835101de7b 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h
index c534ebfb02..c534ebfb02 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h
index f992813385..f992813385 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h
index 8f2e221939..8f2e221939 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h
index a95d67380f..a95d67380f 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h
index 95017cce57..95017cce57 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h
index 730b167dcd..730b167dcd 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h
index 8efd826209..8efd826209 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h
index c8df6ef17b..c8df6ef17b 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h
index ac762c8238..ac762c8238 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h
index 9dcc623c63..9dcc623c63 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h
index 56feb9fb85..56feb9fb85 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h
index 67519d9848..67519d9848 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h
index 68fc7744f2..68fc7744f2 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h
index a5a38da7dc..a5a38da7dc 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h
index fd1322db9c..fd1322db9c 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h
index d9b35fb754..d9b35fb754 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h
index ca8209b81f..ca8209b81f 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h
index e36a765d82..e36a765d82 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h
index 835101de7b..835101de7b 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h
index c534ebfb02..c534ebfb02 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h
index f992813385..f992813385 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h
index 8f2e221939..8f2e221939 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h
index a95d67380f..a95d67380f 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h
index 95017cce57..95017cce57 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h
index 730b167dcd..730b167dcd 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h
index 8efd826209..8efd826209 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h
index c8df6ef17b..c8df6ef17b 120000
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock
index 5896b3b3b0..5896b3b3b0 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Manifest.lock
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj
index 7c52607f05..7c52607f05 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig
index 3487d75ca9..3487d75ca9 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m
index 2de591a2e2..2de591a2e2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch
index b9c163b498..b9c163b498 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig
index 1fb0c387d4..1fb0c387d4 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests-AFNetworking/Pods-OHHTTPStubs Mac Tests-AFNetworking.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown
index 59a175087d..59a175087d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist
index 899e8ae43e..899e8ae43e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m
index f124d0bf53..f124d0bf53 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h
index 42c1cb9116..42c1cb9116 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-environment.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh
index ea685a22b1..ea685a22b1 100755
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig
index 6514eaa721..6514eaa721 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig
index 6514eaa721..6514eaa721 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs Mac Tests/Pods-OHHTTPStubs Mac Tests.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig
index 8eb1a3989e..8eb1a3989e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m
index 8fb666b3d8..8fb666b3d8 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch
index aa992a4adb..aa992a4adb 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig
index 7f67782003..7f67782003 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking/Pods-OHHTTPStubs iOS Fmk Tests-AFNetworking.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown
index 59a175087d..59a175087d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist
index 899e8ae43e..899e8ae43e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m
index dbb179ac46..dbb179ac46 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh
index ea685a22b1..ea685a22b1 100755
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig
index 72ec462315..72ec462315 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig
index 72ec462315..72ec462315 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Fmk Tests/Pods-OHHTTPStubs iOS Fmk Tests.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig
index 927eecdfe5..927eecdfe5 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m
index 174408f7fa..174408f7fa 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch
index aa992a4adb..aa992a4adb 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig
index 758125c1eb..758125c1eb 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking/Pods-OHHTTPStubs iOS Lib Tests-AFNetworking.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown
index 59a175087d..59a175087d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist
index 899e8ae43e..899e8ae43e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m
index 391f5bc28d..391f5bc28d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh
index ea685a22b1..ea685a22b1 100755
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig
index 19fb024a98..19fb024a98 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig
index 19fb024a98..19fb024a98 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Lib Tests/Pods-OHHTTPStubs iOS Lib Tests.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig
index 6f43611720..6f43611720 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-Private.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m
index 8aa49d1389..8aa49d1389 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch
index 80fbb8dc3c..80fbb8dc3c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking-prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig
index b8aeea85b3..b8aeea85b3 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests-AFNetworking/Pods-OHHTTPStubs iOS Tests-AFNetworking.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown
index 59a175087d..59a175087d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.markdown
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist
index 899e8ae43e..899e8ae43e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-acknowledgements.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m
index 0fb6509a93..0fb6509a93 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-dummy.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h
index e1a5d47d3b..e1a5d47d3b 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-environment.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh
index 43f08523e1..43f08523e1 100755
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests-resources.sh
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig
index 89450f5b6a..89450f5b6a 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.debug.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig
index 89450f5b6a..89450f5b6a 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Pods/Target Support Files/Pods-OHHTTPStubs iOS Tests/Pods-OHHTTPStubs iOS Tests.release.xcconfig
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h
index b41ddda60f..b41ddda60f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h
index 2776a4f3b7..2776a4f3b7 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m
index 06d7363f23..06d7363f23 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/HTTPMessage/OHHTTPStubsResponse+HTTPMessage.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h
index 3069ff32ec..3069ff32ec 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m
index d88fee9bdd..d88fee9bdd 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/JSON/OHHTTPStubsResponse+JSON.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h
index 77fe65e892..77fe65e892 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m
index 4de8996ae0..4de8996ae0 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Mocktail/OHHTTPStubs+Mocktail.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m
index b0e14a093c..b0e14a093c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/NSURLSession/OHHTTPStubs+NSURLSessionConfiguration.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m
index 1184dcad1f..1184dcad1f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs+NSURLSessionConfiguration.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
index f4c2a07a98..f4c2a07a98 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m
index 4fa31f907b..4fa31f907b 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubs.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h
index 0ac0f6e124..0ac0f6e124 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m
index 03d0e7a6db..03d0e7a6db 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+HTTPMessage.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h
index fc8719df0d..fc8719df0d 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m
index aebcb99080..aebcb99080 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h
index 27f487f9fa..27f487f9fa 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m
index db8d7efa79..db8d7efa79 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h
index aa250547b8..aa250547b8 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m
index cac24a636a..cac24a636a 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h
index b3c301acdd..b3c301acdd 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.h
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m
index 18b769e45a..18b769e45a 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers/OHPathHelpers.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift
index 5229dcb808..5229dcb808 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Sources/Swift/OHHTTPStubsSwift.swift
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist
index bcee41c04a..bcee41c04a 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs Mac-Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist
index d3de8eefb6..d3de8eefb6 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/Supporting Files/OHHTTPStubs iOS-Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json
index e69de29bb2..e69de29bb2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/empty.bundle/nothingtoseehere.json
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json
index e69de29bb2..e69de29bb2 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Fixtures/emptyfile.json
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail
index 596a2ecdb4..596a2ecdb4 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/cards.tail
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail
index 1755e71d57..1755e71d57 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/login.tail
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail
index a21bc088c6..a21bc088c6 100755
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/MocktailFolder/logos_ebay.tail
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m
index 98086feeb1..98086feeb1 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/OHPathHelpersTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m
index a4ee670a6e..a4ee670a6e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/AFNetworkingTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m
index db7725703c..db7725703c 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/MocktailTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m
index 1321854169..1321854169 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionDelegateTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m
index 1fe6c91e87..1fe6c91e87 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLConnectionTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m
index 2e829ca432..2e829ca432 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NSURLSessionTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m
index ec263d543f..ec263d543f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/NilValuesTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift
index 3d2f1c3577..3d2f1c3577 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/SwiftHelpersTests.swift
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m
index b2e820f80f..b2e820f80f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/TimingTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m
index 0e34aea54f..0e34aea54f 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/Test Suites/WithContentsOfURLTests.m
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist
index 169b6f710e..169b6f710e 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Info.plist
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch
index a0a31a66c6..a0a31a66c6 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/UnitTests-Prefix.pch
diff --git a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail
index 283ca0271b..283ca0271b 100644
--- a/platform/ios/test/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail
+++ b/platform/ios/uitest/OHHTTPStubs/OHHTTPStubs/UnitTests/login.tail
diff --git a/platform/ios/test/OHHTTPStubs/README.md b/platform/ios/uitest/OHHTTPStubs/README.md
index 2c9c831393..2c9c831393 100644
--- a/platform/ios/test/OHHTTPStubs/README.md
+++ b/platform/ios/uitest/OHHTTPStubs/README.md
diff --git a/platform/ios/test/OHHTTPStubs/Rakefile b/platform/ios/uitest/OHHTTPStubs/Rakefile
index a7c7397fba..a7c7397fba 100644
--- a/platform/ios/test/OHHTTPStubs/Rakefile
+++ b/platform/ios/uitest/OHHTTPStubs/Rakefile
diff --git a/platform/ios/test/ios-tests.xcodeproj/project.pbxproj b/platform/ios/uitest/ios-tests.xcodeproj/project.pbxproj
index 09cc7f3c31..0d6f89234d 100644
--- a/platform/ios/test/ios-tests.xcodeproj/project.pbxproj
+++ b/platform/ios/uitest/ios-tests.xcodeproj/project.pbxproj
@@ -11,6 +11,7 @@
96567A311B0E8BB900D78776 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 96567A301B0E8BB900D78776 /* Images.xcassets */; };
DA482C801C12582600772FE3 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA482C7F1C12582600772FE3 /* Mapbox.framework */; };
DA482C811C12582600772FE3 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA482C7F1C12582600772FE3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ DA9C551D1CD9DFCD000A15C6 /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA9C551B1CD9DFA7000A15C6 /* libKIF.a */; };
DD043363196DBBD500E6F39D /* MGLTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DD04335F196DBBD500E6F39D /* MGLTAppDelegate.m */; };
DD043364196DBBD500E6F39D /* MGLTViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DD043360196DBBD500E6F39D /* MGLTViewController.m */; };
DD043366196DBBE000E6F39D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DD043365196DBBE000E6F39D /* main.m */; };
@@ -24,38 +25,9 @@
DD0E6F9D1B01B68E00DC035A /* OHPathHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = DD0E6F971B01B68E00DC035A /* OHPathHelpers.m */; };
DDBD016C196DC4740033959E /* MapViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DDBD0168196DC4740033959E /* MapViewTests.m */; };
DDBD016D196DC4740033959E /* KIFTestActor+MapboxGL.m in Sources */ = {isa = PBXBuildFile; fileRef = DDBD016A196DC4740033959E /* KIFTestActor+MapboxGL.m */; };
- DDBD016E196DC4A10033959E /* libKIF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DDBD0144196DC3AE0033959E /* libKIF.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- DA3BDF011BA2326400553BD2 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DDBD013A196DC3AE0033959E /* KIF.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = 9CC9673B1AD4B1B600576D13;
- remoteInfo = KIFFramework;
- };
- DDBD0143196DC3AE0033959E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DDBD013A196DC3AE0033959E /* KIF.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = EABD46AA1857A0C700A5F081;
- remoteInfo = KIF;
- };
- DDBD0147196DC3AE0033959E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DDBD013A196DC3AE0033959E /* KIF.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = EB60ECC1177F8C83005A041A;
- remoteInfo = "Test Host";
- };
- DDBD0149196DC3AE0033959E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = DDBD013A196DC3AE0033959E /* KIF.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = EABD46CD1857A0F300A5F081;
- remoteInfo = "KIF Tests";
- };
DDBD0160196DC3D70033959E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DD04331B196DB9BC00E6F39D /* Project object */;
@@ -82,8 +54,8 @@
/* Begin PBXFileReference section */
96567A221B0E84CD00D78776 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = SOURCE_ROOT; };
96567A301B0E8BB900D78776 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = SOURCE_ROOT; };
- DA482C7F1C12582600772FE3 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Mapbox.framework; path = ../../../build/ios/pkg/dynamic/Mapbox.framework; sourceTree = "<group>"; };
- DACAD7111B08719F009119DC /* MGLMapboxEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MGLMapboxEvents.h; path = ../../platform/ios/MGLMapboxEvents.h; sourceTree = SOURCE_ROOT; };
+ DA482C7F1C12582600772FE3 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA9C551B1CD9DFA7000A15C6 /* libKIF.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libKIF.a; path = "../../../build/ios/Build/Products/Debug-iphonesimulator/libKIF.a"; sourceTree = "<group>"; };
DADD9EB51BD16D8B00DA9161 /* Compatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Compatibility.h; path = OHHTTPStubs/OHHTTPStubs/Sources/Compatibility.h; sourceTree = SOURCE_ROOT; };
DD043323196DB9BC00E6F39D /* Mapbox GL Tests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL Tests.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DD04335F196DBBD500E6F39D /* MGLTAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLTAppDelegate.m; sourceTree = SOURCE_ROOT; };
@@ -114,7 +86,6 @@
DD0E6F951B01B68E00DC035A /* OHHTTPStubsResponse+JSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "OHHTTPStubsResponse+JSON.m"; path = "OHHTTPStubs/OHHTTPStubs/Sources/OHHTTPStubsResponse+JSON.m"; sourceTree = SOURCE_ROOT; };
DD0E6F961B01B68E00DC035A /* OHPathHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OHPathHelpers.h; path = OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.h; sourceTree = SOURCE_ROOT; };
DD0E6F971B01B68E00DC035A /* OHPathHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OHPathHelpers.m; path = OHHTTPStubs/OHHTTPStubs/Sources/OHPathHelpers.m; sourceTree = SOURCE_ROOT; };
- DDBD013A196DC3AE0033959E /* KIF.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = KIF.xcodeproj; path = KIF/KIF.xcodeproj; sourceTree = SOURCE_ROOT; };
DDBD0152196DC3D70033959E /* Test Bundle.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Test Bundle.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
DDBD0165196DC4560033959E /* Bundle-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Bundle-Info.plist"; sourceTree = SOURCE_ROOT; };
DDBD0168196DC4740033959E /* MapViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewTests.m; sourceTree = SOURCE_ROOT; };
@@ -136,7 +107,7 @@
buildActionMask = 2147483647;
files = (
DD0580E81ACB628200B112C9 /* IOKit.framework in Frameworks */,
- DDBD016E196DC4A10033959E /* libKIF.a in Frameworks */,
+ DA9C551D1CD9DFCD000A15C6 /* libKIF.a in Frameworks */,
DD0E6F841B0190E200DC035A /* libOCMock.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -147,7 +118,6 @@
DD04331A196DB9BC00E6F39D = {
isa = PBXGroup;
children = (
- DA482C7F1C12582600772FE3 /* Mapbox.framework */,
DD04332C196DB9BC00E6F39D /* App */,
DDBD0139196DC38D0033959E /* Tests */,
DD043325196DB9BC00E6F39D /* Frameworks */,
@@ -167,6 +137,8 @@
DD043325196DB9BC00E6F39D /* Frameworks */ = {
isa = PBXGroup;
children = (
+ DA9C551B1CD9DFA7000A15C6 /* libKIF.a */,
+ DA482C7F1C12582600772FE3 /* Mapbox.framework */,
DD0580E71ACB628200B112C9 /* IOKit.framework */,
);
name = Frameworks;
@@ -179,7 +151,6 @@
DD04335F196DBBD500E6F39D /* MGLTAppDelegate.m */,
DD043361196DBBD500E6F39D /* MGLTViewController.h */,
DD043360196DBBD500E6F39D /* MGLTViewController.m */,
- DDAE739B1ACB557500E1A793 /* GL Library */,
DD04332D196DB9BC00E6F39D /* Supporting Files */,
);
name = App;
@@ -242,14 +213,6 @@
name = OHHTTPStubs;
sourceTree = "<group>";
};
- DDAE739B1ACB557500E1A793 /* GL Library */ = {
- isa = PBXGroup;
- children = (
- DACAD7111B08719F009119DC /* MGLMapboxEvents.h */,
- );
- name = "GL Library";
- sourceTree = "<group>";
- };
DDBD0139196DC38D0033959E /* Tests */ = {
isa = PBXGroup;
children = (
@@ -257,7 +220,6 @@
DDBD016A196DC4740033959E /* KIFTestActor+MapboxGL.m */,
DDBD0168196DC4740033959E /* MapViewTests.m */,
DDBD0167196DC46B0033959E /* Supporting Files */,
- DDBD014D196DC3B00033959E /* KIF */,
DD0E6F6B1B01906600DC035A /* OCMock */,
DD0E6F861B01B67100DC035A /* OHHTTPStubs */,
);
@@ -265,25 +227,6 @@
path = "Mapbox GL Tests";
sourceTree = "<group>";
};
- DDBD013B196DC3AE0033959E /* Products */ = {
- isa = PBXGroup;
- children = (
- DDBD0144196DC3AE0033959E /* libKIF.a */,
- DDBD0148196DC3AE0033959E /* Test Host.app */,
- DDBD014A196DC3AE0033959E /* KIF Tests - XCTest.xctest */,
- DA3BDF021BA2326400553BD2 /* KIF.framework */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- DDBD014D196DC3B00033959E /* KIF */ = {
- isa = PBXGroup;
- children = (
- DDBD013A196DC3AE0033959E /* KIF.xcodeproj */,
- );
- name = KIF;
- sourceTree = "<group>";
- };
DDBD0167196DC46B0033959E /* Supporting Files */ = {
isa = PBXGroup;
children = (
@@ -357,12 +300,6 @@
mainGroup = DD04331A196DB9BC00E6F39D;
productRefGroup = DD043324196DB9BC00E6F39D /* Products */;
projectDirPath = "";
- projectReferences = (
- {
- ProductGroup = DDBD013B196DC3AE0033959E /* Products */;
- ProjectRef = DDBD013A196DC3AE0033959E /* KIF.xcodeproj */;
- },
- );
projectRoot = "";
targets = (
DD043322196DB9BC00E6F39D /* Mapbox GL Tests */,
@@ -371,37 +308,6 @@
};
/* End PBXProject section */
-/* Begin PBXReferenceProxy section */
- DA3BDF021BA2326400553BD2 /* KIF.framework */ = {
- isa = PBXReferenceProxy;
- fileType = wrapper.framework;
- path = KIF.framework;
- remoteRef = DA3BDF011BA2326400553BD2 /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- DDBD0144196DC3AE0033959E /* libKIF.a */ = {
- isa = PBXReferenceProxy;
- fileType = archive.ar;
- path = libKIF.a;
- remoteRef = DDBD0143196DC3AE0033959E /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- DDBD0148196DC3AE0033959E /* Test Host.app */ = {
- isa = PBXReferenceProxy;
- fileType = wrapper.application;
- path = "Test Host.app";
- remoteRef = DDBD0147196DC3AE0033959E /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- DDBD014A196DC3AE0033959E /* KIF Tests - XCTest.xctest */ = {
- isa = PBXReferenceProxy;
- fileType = wrapper.cfbundle;
- path = "KIF Tests - XCTest.xctest";
- remoteRef = DDBD0149196DC3AE0033959E /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-/* End PBXReferenceProxy section */
-
/* Begin PBXResourcesBuildPhase section */
DD043321196DB9BC00E6F39D /* Resources */ = {
isa = PBXResourcesBuildPhase;
@@ -494,6 +400,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
+ SYMROOT = ../../../build/ios;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
@@ -527,6 +434,7 @@
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
SDKROOT = iphoneos;
+ SYMROOT = ../../../build/ios;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
@@ -537,18 +445,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/../../../build/ios/pkg/dynamic/",
- );
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
HEADER_SEARCH_PATHS = "";
INFOPLIST_FILE = "$(SRCROOT)/App-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "../../mason_packages/**",
- );
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -562,18 +463,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/../../../build/ios/pkg/dynamic/",
- );
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
HEADER_SEARCH_PATHS = "";
INFOPLIST_FILE = "$(SRCROOT)/App-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "../../mason_packages/**",
- );
OTHER_LDFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -586,10 +480,6 @@
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Mapbox GL Tests.app/Mapbox GL Tests";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/../../../build/ios/pkg/dynamic/",
- );
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
@@ -623,10 +513,6 @@
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Mapbox GL Tests.app/Mapbox GL Tests";
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/../../../build/ios/pkg/dynamic/",
- );
GCC_PREPROCESSOR_DEFINITIONS = "KIF_XCTEST=1";
HEADER_SEARCH_PATHS = (
"$(inherited)",
diff --git a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 4cad7961db..4cad7961db 100644
--- a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout
index 68c68a2234..68c68a2234 100644
--- a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout
+++ b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/Mapbox GL Tests.xccheckout
diff --git a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout
index 33408b6083..33408b6083 100644
--- a/platform/ios/test/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout
+++ b/platform/ios/uitest/ios-tests.xcodeproj/project.xcworkspace/xcshareddata/ios-tests.xccheckout
diff --git a/platform/ios/test/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme b/platform/ios/uitest/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme
index df15849ee0..df15849ee0 100644
--- a/platform/ios/test/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme
+++ b/platform/ios/uitest/ios-tests.xcodeproj/xcshareddata/xcschemes/Mapbox GL Tests.xcscheme
diff --git a/platform/ios/test/main.m b/platform/ios/uitest/main.m
index d79750dcdd..d79750dcdd 100644
--- a/platform/ios/test/main.m
+++ b/platform/ios/uitest/main.m