├── .gitignore ├── .travis.yml ├── AnnotationETA.podspec ├── AnnotationETA ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── DirectionButton.swift │ ├── Directions.swift │ ├── EtaAnnotation.swift │ └── EtaAnnotationView.swift ├── Example ├── AnnotationETA.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── AnnotationETA.xcscheme ├── AnnotationETA.xcworkspace │ └── contents.xcworkspacedata ├── AnnotationETA │ ├── AnnotationETA.h │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── DetailViewController.swift │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── Walking.imageset │ │ │ ├── Contents.json │ │ │ ├── Walking.png │ │ │ ├── Walking@2x.png │ │ │ └── Walking@3x.png │ │ ├── automobile.imageset │ │ │ ├── Contents.json │ │ │ ├── automobile.png │ │ │ ├── automobile@2x.png │ │ │ └── automobile@3x.png │ │ └── transit.imageset │ │ │ ├── Contents.json │ │ │ ├── transit.png │ │ │ ├── transit@2x.png │ │ │ └── transit@3x.png │ ├── Info.plist │ └── ViewController.swift ├── AnnotationETATests │ ├── AnnotationETATests.swift │ └── Info.plist ├── Default-568h@2x.png ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── AnnotationETA.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── AnnotationETA.xcscheme │ └── Target Support Files │ │ ├── AnnotationETA │ │ ├── AnnotationETA-dummy.m │ │ ├── AnnotationETA-prefix.pch │ │ ├── AnnotationETA-umbrella.h │ │ ├── AnnotationETA.modulemap │ │ ├── AnnotationETA.xcconfig │ │ └── Info.plist │ │ ├── Pods-AnnotationETA_Example │ │ ├── Info.plist │ │ ├── Pods-AnnotationETA_Example-acknowledgements.markdown │ │ ├── Pods-AnnotationETA_Example-acknowledgements.plist │ │ ├── Pods-AnnotationETA_Example-dummy.m │ │ ├── Pods-AnnotationETA_Example-frameworks.sh │ │ ├── Pods-AnnotationETA_Example-resources.sh │ │ ├── Pods-AnnotationETA_Example-umbrella.h │ │ ├── Pods-AnnotationETA_Example.debug.xcconfig │ │ ├── Pods-AnnotationETA_Example.modulemap │ │ └── Pods-AnnotationETA_Example.release.xcconfig │ │ └── Pods-AnnotationETA_Tests │ │ ├── Info.plist │ │ ├── Pods-AnnotationETA_Tests-acknowledgements.markdown │ │ ├── Pods-AnnotationETA_Tests-acknowledgements.plist │ │ ├── Pods-AnnotationETA_Tests-dummy.m │ │ ├── Pods-AnnotationETA_Tests-frameworks.sh │ │ ├── Pods-AnnotationETA_Tests-resources.sh │ │ ├── Pods-AnnotationETA_Tests-umbrella.h │ │ ├── Pods-AnnotationETA_Tests.debug.xcconfig │ │ ├── Pods-AnnotationETA_Tests.modulemap │ │ └── Pods-AnnotationETA_Tests.release.xcconfig └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── README.md ├── _Pods.xcodeproj └── screens └── annotationEta.gif /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | { 2 | "language": "objective-c", 3 | "osx_image": "xcode8.2", 4 | "xcode_sdk": "iphonesimulator10.0", 5 | "group": "stable", 6 | "dist": "osx", 7 | "os": "osx" 8 | } 9 | -------------------------------------------------------------------------------- /AnnotationETA.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint AnnotationETA.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'AnnotationETA' 11 | s.version = '0.1.2' 12 | s.summary = 'AnnotationETA will easily let you implement MapKit annotations.' 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = "AnnotationETA will easily let you implement MapKit annotations with slick pins, custom colors and cool calloutView showing ETA out of the box!" 21 | 22 | s.homepage = 'https://github.com/fortmarek/AnnotationETA' 23 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 24 | s.license = { :type => 'MIT', :file => 'LICENSE' } 25 | s.author = { 'fortmarek' => 'marekfort@me.com' } 26 | s.source = { :git => 'https://github.com/fortmarek/AnnotationETA.git', :tag => s.version.to_s } 27 | s.social_media_url = 'https://twitter.com/marekfortCZ' 28 | 29 | s.ios.deployment_target = '8.0' 30 | 31 | s.source_files = 'AnnotationETA/Classes/**/*' 32 | 33 | # s.resource_bundles = { 34 | # 'AnnotationETA' => ['Pod/Assets/*.png'] 35 | # } 36 | 37 | # s.public_header_files = 'Pod/Classes/**/*.h' 38 | s.frameworks = 'UIKit', 'MapKit' 39 | # s.dependency 'AFNetworking', '~> 2.3' 40 | end 41 | -------------------------------------------------------------------------------- /AnnotationETA/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/AnnotationETA/Assets/.gitkeep -------------------------------------------------------------------------------- /AnnotationETA/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/AnnotationETA/Classes/.gitkeep -------------------------------------------------------------------------------- /AnnotationETA/Classes/DirectionButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DirectionButton.swift 3 | // Pods 4 | // 5 | // Created by Marek Fořt on 2/4/17. 6 | // 7 | // 8 | 9 | import Foundation 10 | import MapKit 11 | 12 | 13 | //DirectionButton 14 | open class DirectionButton: UIButton, DirectionsDelegate { 15 | 16 | var destinationCoordinate: CLLocationCoordinate2D 17 | var locationManager: CLLocationManager 18 | var transportType: MKDirectionsTransportType? 19 | var destinationName: String? 20 | 21 | var imageWidth = CGFloat(0) 22 | 23 | public init(destinationCoordinate: CLLocationCoordinate2D, locationManager: CLLocationManager, transportType: MKDirectionsTransportType?, destinationName: String?) { 24 | self.destinationCoordinate = destinationCoordinate 25 | self.transportType = transportType 26 | self.locationManager = locationManager 27 | self.destinationName = destinationName 28 | super.init(frame: CGRect(x: 0, y: 0, width: 50, height: 51)) 29 | 30 | self.addTarget(self, action: #selector(callGetDirectionsFunc), for: .touchUpInside) 31 | 32 | guard 33 | let transportType = self.transportType, 34 | let image = transportType.getImage() 35 | else {return} 36 | 37 | //Image 38 | setImage(image, for: UIControlState()) 39 | setImage(image, for: .highlighted) 40 | 41 | //Center image in view 42 | imageWidth = image.size.width 43 | let leftImageInset = (frame.size.width - imageWidth) / 2 44 | imageEdgeInsets = UIEdgeInsets(top: 0, left: leftImageInset, bottom: 0, right: leftImageInset) 45 | 46 | //Title inset 47 | titleEdgeInsets = UIEdgeInsets(top: 30, left: -imageWidth, bottom: 0, right: 0) 48 | titleLabel?.textAlignment = .center 49 | 50 | 51 | setEtaTitle() 52 | } 53 | 54 | private func setEtaTitle() { 55 | 56 | getEta(completion: {eta in 57 | 58 | //If titleLabel != nil => title is already set, no need for animation 59 | guard self.titleLabel?.text == nil else {return} 60 | 61 | //Title with attributes 62 | self.titleLabel?.alpha = 0 63 | let attributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 10), NSForegroundColorAttributeName: UIColor.white] 64 | self.setAttributedTitle(NSAttributedString(string: eta, attributes: attributes), for: UIControlState()) 65 | self.setAttributedTitle(NSAttributedString(string: eta, attributes: attributes), for: .highlighted) 66 | 67 | self.animateETA() 68 | }) 69 | } 70 | 71 | //Animating appearance of ETA title 72 | private func animateETA() { 73 | 74 | //Start with label rotated upside down to then rotate it to the right angle 75 | titleLabel?.layer.transform = CATransform3DMakeRotation(CGFloat(M_PI / 2), 1, 0, 0) 76 | titleLabel?.sizeToFit() 77 | 78 | guard let superview = self.superview else {return} 79 | 80 | //layoutIfNeeded after sizeToFit() so I don't animate the position of title only rotation 81 | superview.layoutIfNeeded() 82 | 83 | //Image position after adding title 84 | //Center image in view, 22 is for image width 85 | let leftImageInset = (frame.size.width - imageWidth) / 2 86 | imageEdgeInsets = UIEdgeInsets(top: 0, left: leftImageInset, bottom: 10, right: leftImageInset) 87 | 88 | UIView.animate(withDuration: 0.4, delay: 0, options: UIViewAnimationOptions(), animations: { 89 | //Rotation - 3D animation 90 | var perspective = CATransform3DIdentity 91 | perspective.m34 = -1.0 / 500 92 | //0, 0, 0, 0 because we want default value (we start this animation with already rotated title) 93 | self.titleLabel?.layer.transform = CATransform3DConcat(perspective, CATransform3DMakeRotation(0, 0, 0, 0)) 94 | 95 | //Opacity 96 | self.titleLabel?.alpha = 1 97 | 98 | //Needed to animate imageEdgeInset 99 | superview.layoutIfNeeded() 100 | 101 | }, completion: nil) 102 | } 103 | 104 | func callGetDirectionsFunc(sender: UIButton) { 105 | 106 | // TODO: Pass maps the adress 107 | let destinationMapItem = MKMapItem(placemark: MKPlacemark(coordinate: destinationCoordinate, addressDictionary: nil)) 108 | 109 | if let destinationName = self.destinationName { 110 | destinationMapItem.name = destinationName 111 | } 112 | 113 | guard let transportType = self.transportType else {return} 114 | let directionsMode = transportType.getMKLaunchString() 115 | destinationMapItem.openInMaps(launchOptions: [MKLaunchOptionsDirectionsModeKey: directionsMode]) 116 | } 117 | 118 | 119 | 120 | required public init?(coder aDecoder: NSCoder) { 121 | fatalError("init(coder:) has not been implemented") 122 | } 123 | } 124 | 125 | extension MKDirectionsTransportType { 126 | 127 | fileprivate func getMKLaunchString() -> String { 128 | switch self.rawValue { 129 | case 1: 130 | return MKLaunchOptionsDirectionsModeDriving 131 | case 2: 132 | return MKLaunchOptionsDirectionsModeWalking 133 | case 4: 134 | if #available(iOS 9.0, *) { 135 | return MKLaunchOptionsDirectionsModeTransit 136 | } else { 137 | return MKLaunchOptionsDirectionsModeDriving 138 | } 139 | default: 140 | return MKLaunchOptionsDirectionsModeDriving 141 | } 142 | } 143 | 144 | fileprivate func getImage() -> UIImage? { 145 | switch self.rawValue { 146 | case 1: 147 | return UIImage(named: "automobile") 148 | case 2: 149 | return UIImage(named: "Walking") 150 | case 4: 151 | if #available(iOS 9.0, *) { 152 | return UIImage(named: "transit") 153 | } else { 154 | return UIImage(named: "automobile") 155 | } 156 | default: 157 | return UIImage(named: "automobile") 158 | } 159 | } 160 | } 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /AnnotationETA/Classes/Directions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Directions.swift 3 | // Klozet 4 | // 5 | // Created by Marek Fořt on 07/09/16. 6 | // Copyright © 2016 Marek Fořt. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import MapKit 12 | 13 | 14 | protocol DirectionsDelegate { 15 | var locationManager: CLLocationManager { get } 16 | var transportType: MKDirectionsTransportType? { get } 17 | var destinationCoordinate: CLLocationCoordinate2D { get } 18 | } 19 | 20 | extension DirectionsDelegate { 21 | //ETA for annotation view 22 | func getEta(completion: @escaping (_ eta: String) -> ()) { 23 | 24 | //Set path 25 | guard let directions = requestDirections(destinationCoordinate) else {return} 26 | 27 | //Calculate ETA 28 | directions.calculateETA(completionHandler: { 29 | etaResponse, error in 30 | guard let etaInterval = etaResponse?.expectedTravelTime else {return} 31 | 32 | let eta = self.convertEtaIntervalToString(etaInterval) 33 | 34 | completion(eta) 35 | }) 36 | } 37 | 38 | //Converting ETA in NSTimeInterval to minutes or hours 39 | fileprivate func convertEtaIntervalToString(_ etaInterval: TimeInterval) -> String { 40 | let etaInt = NSInteger(etaInterval) 41 | 42 | //Number of seconds in hour 43 | let oneHour = 3600 44 | let minutes = (etaInt / 60) % 60 45 | if etaInt > oneHour { 46 | let hours = (etaInt / oneHour) % oneHour 47 | return "\(hours)h \(minutes)m" 48 | } 49 | 50 | else { 51 | return "\(minutes) min" 52 | } 53 | 54 | 55 | } 56 | 57 | 58 | //ETA estimate 59 | fileprivate func requestDirections(_ destination: CLLocationCoordinate2D) -> MKDirections? { 60 | 61 | guard 62 | let currentLocation = locationManager.location 63 | else {return nil} 64 | 65 | let request = MKDirectionsRequest() 66 | request.source = MKMapItem(placemark: MKPlacemark(coordinate: currentLocation.coordinate, addressDictionary: nil)) 67 | request.destination = MKMapItem(placemark: MKPlacemark(coordinate: destination, addressDictionary: nil)) 68 | 69 | if let transportType = self.transportType { 70 | request.transportType = transportType 71 | } 72 | else { 73 | request.transportType = .automobile 74 | } 75 | 76 | let directions = MKDirections(request: request) 77 | 78 | return directions 79 | } 80 | 81 | 82 | } 83 | -------------------------------------------------------------------------------- /AnnotationETA/Classes/EtaAnnotation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationEta.swift 3 | // Pods 4 | // 5 | // Created by Marek Fořt on 2/2/17. 6 | // 7 | // 8 | 9 | import Foundation 10 | import MapKit 11 | 12 | 13 | open class EtaAnnotation: NSObject, MKAnnotation { 14 | //Annotation properties 15 | 16 | public var title: String? 17 | public var subtitle: String? 18 | public let coordinate: CLLocationCoordinate2D 19 | 20 | public init(title: String?, subtitle: String?, coordinate: CLLocationCoordinate2D) { 21 | 22 | //Coordinate 23 | self.coordinate = coordinate 24 | 25 | //Safely unwrap title and subtitle (they could be nil) 26 | if let title = title { 27 | self.title = title 28 | } 29 | 30 | if let subtitle = subtitle { 31 | self.subtitle = subtitle 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AnnotationETA/Classes/EtaAnnotationView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationETAView.swift 3 | // Pods 4 | // 5 | // Created by Marek Fořt on 2/2/17. 6 | // 7 | // 8 | 9 | import Foundation 10 | import MapKit 11 | 12 | open class EtaAnnotationView: MKAnnotationView { 13 | 14 | open var pinColor = UIColor(red: 1.00, green: 0.50, blue: 0.00, alpha: 1.0) 15 | open var pinSecondaryColor = UIColor.white 16 | open var rightButton: UIButton? 17 | 18 | public override init(annotation: MKAnnotation?, reuseIdentifier: String?) { 19 | super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) 20 | 21 | self.annotation = annotation 22 | self.canShowCallout = true 23 | self.frame = CGRect(origin: self.frame.origin, size: CGSize(width: 29, height: 43)) 24 | //Bottom part of the pin is on the location, not the center, offset needed 25 | self.centerOffset = CGPoint(x: 0, y: -(self.frame.height)/2) 26 | self.backgroundColor = UIColor.clear 27 | 28 | 29 | } 30 | 31 | open override var leftCalloutAccessoryView: UIView? { 32 | didSet { 33 | leftCalloutAccessoryView?.backgroundColor = pinColor 34 | } 35 | } 36 | 37 | override open func draw(_ rect: CGRect) { 38 | 39 | //Orange Circle 40 | var bigCircleRect = rect 41 | bigCircleRect.size.height = rect.size.width 42 | let path = UIBezierPath(ovalIn: bigCircleRect) 43 | pinColor.setFill() 44 | path.fill() 45 | 46 | //Bottom part of the pin with arc 47 | let bottomPath = UIBezierPath() 48 | bottomPath.move(to: CGPoint(x: 0, y: bigCircleRect.size.height/2 + 2.5)) 49 | bottomPath.addLine(to: CGPoint(x: self.frame.width, y: bigCircleRect.size.height/2 + 2.5)) 50 | bottomPath.addArc(withCenter: CGPoint(x: self.frame.width/2, y: self.frame.height - 2), radius: 2, startAngle: CGFloat(0), endAngle: CGFloat(M_PI), clockwise: true) 51 | bottomPath.addLine(to: CGPoint(x: 0, y: bigCircleRect.size.height/2 + 2.5)) 52 | bottomPath.close() 53 | pinColor.setFill() 54 | bottomPath.fill() 55 | 56 | //small white circle in the center 57 | let smallSize = bigCircleRect.size.width * 0.5 58 | let smallCircleRect = CGRect(x: (bigCircleRect.size.width - smallSize)/2, y: (bigCircleRect.size.width - smallSize)/2, width: smallSize, height: smallSize) 59 | let smallPath = UIBezierPath(ovalIn: smallCircleRect) 60 | pinSecondaryColor.setFill() 61 | smallPath.fill() 62 | 63 | 64 | 65 | } 66 | 67 | public func setDetailShowButton() { 68 | //Detailed toilet info button 69 | rightButton = UIButton.init(type: .detailDisclosure) 70 | rightButton?.tintColor = pinColor 71 | 72 | rightCalloutAccessoryView = rightButton 73 | 74 | 75 | } 76 | 77 | 78 | 79 | 80 | required public init?(coder aDecoder: NSCoder) { 81 | fatalError("init(coder:) has not been implemented") 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /Example/AnnotationETA.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 3A7D86408C112B59A4CBFF90 /* Pods_AnnotationETA_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F27F2F5BFB798A02C6BD2BD /* Pods_AnnotationETA_Tests.framework */; }; 11 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 12 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 13 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 14 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 15 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 16 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 17 | A78DA16B647057878F2ACD21 /* Pods_AnnotationETA_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D6E3A28D09A7E19103A8C6B /* Pods_AnnotationETA_Example.framework */; }; 18 | F8641C0A1E4A13B9009C9DF1 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8641C091E4A13B9009C9DF1 /* DetailViewController.swift */; }; 19 | F89C98401E4287FE0055078B /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C983F1E4287FE0055078B /* MapKit.framework */; }; 20 | F8ACECB31E4A7D09009C4A5B /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C983F1E4287FE0055078B /* MapKit.framework */; }; 21 | F8D9CF531E4A7A8A000BCFB8 /* AnnotationETA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */; }; 22 | F8D9CF5A1E4A7A8A000BCFB8 /* AnnotationETATests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D9CF591E4A7A8A000BCFB8 /* AnnotationETATests.swift */; }; 23 | F8D9CF5C1E4A7A8A000BCFB8 /* AnnotationETA.h in Headers */ = {isa = PBXBuildFile; fileRef = F8D9CF4C1E4A7A8A000BCFB8 /* AnnotationETA.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24 | F8D9CF5F1E4A7A8A000BCFB8 /* AnnotationETA.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */; }; 25 | F8D9CF601E4A7A8A000BCFB8 /* AnnotationETA.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 26 | F8D9CF691E4A7AE4000BCFB8 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F8D9CF681E4A7AE4000BCFB8 /* Default-568h@2x.png */; }; 27 | F8D9CF6E1E4A7BA6000BCFB8 /* DirectionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D9CF6A1E4A7BA6000BCFB8 /* DirectionButton.swift */; }; 28 | F8D9CF6F1E4A7BA6000BCFB8 /* Directions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D9CF6B1E4A7BA6000BCFB8 /* Directions.swift */; }; 29 | F8D9CF701E4A7BA6000BCFB8 /* EtaAnnotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D9CF6C1E4A7BA6000BCFB8 /* EtaAnnotation.swift */; }; 30 | F8D9CF711E4A7BA6000BCFB8 /* EtaAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D9CF6D1E4A7BA6000BCFB8 /* EtaAnnotationView.swift */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXContainerItemProxy section */ 34 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 35 | isa = PBXContainerItemProxy; 36 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 37 | proxyType = 1; 38 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 39 | remoteInfo = AnnotationETA; 40 | }; 41 | F8D9CF541E4A7A8A000BCFB8 /* PBXContainerItemProxy */ = { 42 | isa = PBXContainerItemProxy; 43 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 44 | proxyType = 1; 45 | remoteGlobalIDString = F8D9CF491E4A7A8A000BCFB8; 46 | remoteInfo = AnnotationETA; 47 | }; 48 | F8D9CF561E4A7A8A000BCFB8 /* PBXContainerItemProxy */ = { 49 | isa = PBXContainerItemProxy; 50 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 51 | proxyType = 1; 52 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 53 | remoteInfo = AnnotationETA_Example; 54 | }; 55 | F8D9CF5D1E4A7A8A000BCFB8 /* PBXContainerItemProxy */ = { 56 | isa = PBXContainerItemProxy; 57 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 58 | proxyType = 1; 59 | remoteGlobalIDString = F8D9CF491E4A7A8A000BCFB8; 60 | remoteInfo = AnnotationETA; 61 | }; 62 | /* End PBXContainerItemProxy section */ 63 | 64 | /* Begin PBXCopyFilesBuildPhase section */ 65 | F8D9CF661E4A7A8A000BCFB8 /* Embed Frameworks */ = { 66 | isa = PBXCopyFilesBuildPhase; 67 | buildActionMask = 2147483647; 68 | dstPath = ""; 69 | dstSubfolderSpec = 10; 70 | files = ( 71 | F8D9CF601E4A7A8A000BCFB8 /* AnnotationETA.framework in Embed Frameworks */, 72 | ); 73 | name = "Embed Frameworks"; 74 | runOnlyForDeploymentPostprocessing = 0; 75 | }; 76 | /* End PBXCopyFilesBuildPhase section */ 77 | 78 | /* Begin PBXFileReference section */ 79 | 03EF22E0F2C54D9DA81A01AC /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 80 | 189D6D5D5336EAB59C361FA3 /* AnnotationETA.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = AnnotationETA.podspec; path = ../AnnotationETA.podspec; sourceTree = ""; }; 81 | 1D6E3A28D09A7E19103A8C6B /* Pods_AnnotationETA_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AnnotationETA_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 82 | 3733ABC4060255EB64A8F44F /* Pods-AnnotationETA_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnnotationETA_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.release.xcconfig"; sourceTree = ""; }; 83 | 4F27F2F5BFB798A02C6BD2BD /* Pods_AnnotationETA_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AnnotationETA_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | 607FACD01AFB9204008FA782 /* AnnotationETA_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnnotationETA_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 85 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 86 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 87 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 88 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 89 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 90 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 91 | 607FACE51AFB9204008FA782 /* AnnotationETA_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnnotationETA_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 92 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 93 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 94 | 6604A3FE38E59BD244AB9357 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 95 | A335813E707027E15CA00668 /* Pods-AnnotationETA_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnnotationETA_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.release.xcconfig"; sourceTree = ""; }; 96 | C462F967F44449C0A3AB96E2 /* Pods-AnnotationETA_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnnotationETA_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.debug.xcconfig"; sourceTree = ""; }; 97 | F8641C091E4A13B9009C9DF1 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; 98 | F89C983F1E4287FE0055078B /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 99 | F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AnnotationETA.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 100 | F8D9CF4C1E4A7A8A000BCFB8 /* AnnotationETA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnnotationETA.h; sourceTree = ""; }; 101 | F8D9CF4D1E4A7A8A000BCFB8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 102 | F8D9CF521E4A7A8A000BCFB8 /* AnnotationETATests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnnotationETATests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 103 | F8D9CF591E4A7A8A000BCFB8 /* AnnotationETATests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnotationETATests.swift; sourceTree = ""; }; 104 | F8D9CF5B1E4A7A8A000BCFB8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 105 | F8D9CF681E4A7AE4000BCFB8 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 106 | F8D9CF6A1E4A7BA6000BCFB8 /* DirectionButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DirectionButton.swift; path = ../../AnnotationETA/Classes/DirectionButton.swift; sourceTree = ""; }; 107 | F8D9CF6B1E4A7BA6000BCFB8 /* Directions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Directions.swift; path = ../../AnnotationETA/Classes/Directions.swift; sourceTree = ""; }; 108 | F8D9CF6C1E4A7BA6000BCFB8 /* EtaAnnotation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EtaAnnotation.swift; path = ../../AnnotationETA/Classes/EtaAnnotation.swift; sourceTree = ""; }; 109 | F8D9CF6D1E4A7BA6000BCFB8 /* EtaAnnotationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EtaAnnotationView.swift; path = ../../AnnotationETA/Classes/EtaAnnotationView.swift; sourceTree = ""; }; 110 | F97F83DFB984629471875EF5 /* Pods-AnnotationETA_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnnotationETA_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.debug.xcconfig"; sourceTree = ""; }; 111 | /* End PBXFileReference section */ 112 | 113 | /* Begin PBXFrameworksBuildPhase section */ 114 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 115 | isa = PBXFrameworksBuildPhase; 116 | buildActionMask = 2147483647; 117 | files = ( 118 | F89C98401E4287FE0055078B /* MapKit.framework in Frameworks */, 119 | F8D9CF5F1E4A7A8A000BCFB8 /* AnnotationETA.framework in Frameworks */, 120 | A78DA16B647057878F2ACD21 /* Pods_AnnotationETA_Example.framework in Frameworks */, 121 | ); 122 | runOnlyForDeploymentPostprocessing = 0; 123 | }; 124 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 125 | isa = PBXFrameworksBuildPhase; 126 | buildActionMask = 2147483647; 127 | files = ( 128 | 3A7D86408C112B59A4CBFF90 /* Pods_AnnotationETA_Tests.framework in Frameworks */, 129 | ); 130 | runOnlyForDeploymentPostprocessing = 0; 131 | }; 132 | F8D9CF461E4A7A8A000BCFB8 /* Frameworks */ = { 133 | isa = PBXFrameworksBuildPhase; 134 | buildActionMask = 2147483647; 135 | files = ( 136 | F8ACECB31E4A7D09009C4A5B /* MapKit.framework in Frameworks */, 137 | ); 138 | runOnlyForDeploymentPostprocessing = 0; 139 | }; 140 | F8D9CF4F1E4A7A8A000BCFB8 /* Frameworks */ = { 141 | isa = PBXFrameworksBuildPhase; 142 | buildActionMask = 2147483647; 143 | files = ( 144 | F8D9CF531E4A7A8A000BCFB8 /* AnnotationETA.framework in Frameworks */, 145 | ); 146 | runOnlyForDeploymentPostprocessing = 0; 147 | }; 148 | /* End PBXFrameworksBuildPhase section */ 149 | 150 | /* Begin PBXGroup section */ 151 | 1C84CD62AA9C37B584685D10 /* Frameworks */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | F89C983F1E4287FE0055078B /* MapKit.framework */, 155 | 1D6E3A28D09A7E19103A8C6B /* Pods_AnnotationETA_Example.framework */, 156 | 4F27F2F5BFB798A02C6BD2BD /* Pods_AnnotationETA_Tests.framework */, 157 | ); 158 | name = Frameworks; 159 | sourceTree = ""; 160 | }; 161 | 607FACC71AFB9204008FA782 = { 162 | isa = PBXGroup; 163 | children = ( 164 | F8D9CF681E4A7AE4000BCFB8 /* Default-568h@2x.png */, 165 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 166 | 607FACD21AFB9204008FA782 /* Example for AnnotationETA */, 167 | 607FACE81AFB9204008FA782 /* Tests */, 168 | F8D9CF4B1E4A7A8A000BCFB8 /* AnnotationETA */, 169 | F8D9CF581E4A7A8A000BCFB8 /* AnnotationETATests */, 170 | 607FACD11AFB9204008FA782 /* Products */, 171 | BEFE5BCA4AF6B2A035749C8A /* Pods */, 172 | 1C84CD62AA9C37B584685D10 /* Frameworks */, 173 | ); 174 | sourceTree = ""; 175 | }; 176 | 607FACD11AFB9204008FA782 /* Products */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 607FACD01AFB9204008FA782 /* AnnotationETA_Example.app */, 180 | 607FACE51AFB9204008FA782 /* AnnotationETA_Tests.xctest */, 181 | F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */, 182 | F8D9CF521E4A7A8A000BCFB8 /* AnnotationETATests.xctest */, 183 | ); 184 | name = Products; 185 | sourceTree = ""; 186 | }; 187 | 607FACD21AFB9204008FA782 /* Example for AnnotationETA */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 191 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 192 | F8641C091E4A13B9009C9DF1 /* DetailViewController.swift */, 193 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 194 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 195 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 196 | 607FACD31AFB9204008FA782 /* Supporting Files */, 197 | ); 198 | name = "Example for AnnotationETA"; 199 | path = AnnotationETA; 200 | sourceTree = ""; 201 | }; 202 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 203 | isa = PBXGroup; 204 | children = ( 205 | 607FACD41AFB9204008FA782 /* Info.plist */, 206 | ); 207 | name = "Supporting Files"; 208 | sourceTree = ""; 209 | }; 210 | 607FACE81AFB9204008FA782 /* Tests */ = { 211 | isa = PBXGroup; 212 | children = ( 213 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 214 | 607FACE91AFB9204008FA782 /* Supporting Files */, 215 | ); 216 | path = Tests; 217 | sourceTree = ""; 218 | }; 219 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | 607FACEA1AFB9204008FA782 /* Info.plist */, 223 | ); 224 | name = "Supporting Files"; 225 | sourceTree = ""; 226 | }; 227 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 228 | isa = PBXGroup; 229 | children = ( 230 | 189D6D5D5336EAB59C361FA3 /* AnnotationETA.podspec */, 231 | 6604A3FE38E59BD244AB9357 /* README.md */, 232 | 03EF22E0F2C54D9DA81A01AC /* LICENSE */, 233 | ); 234 | name = "Podspec Metadata"; 235 | sourceTree = ""; 236 | }; 237 | BEFE5BCA4AF6B2A035749C8A /* Pods */ = { 238 | isa = PBXGroup; 239 | children = ( 240 | F97F83DFB984629471875EF5 /* Pods-AnnotationETA_Example.debug.xcconfig */, 241 | A335813E707027E15CA00668 /* Pods-AnnotationETA_Example.release.xcconfig */, 242 | C462F967F44449C0A3AB96E2 /* Pods-AnnotationETA_Tests.debug.xcconfig */, 243 | 3733ABC4060255EB64A8F44F /* Pods-AnnotationETA_Tests.release.xcconfig */, 244 | ); 245 | name = Pods; 246 | sourceTree = ""; 247 | }; 248 | F8D9CF4B1E4A7A8A000BCFB8 /* AnnotationETA */ = { 249 | isa = PBXGroup; 250 | children = ( 251 | F8D9CF6A1E4A7BA6000BCFB8 /* DirectionButton.swift */, 252 | F8D9CF6B1E4A7BA6000BCFB8 /* Directions.swift */, 253 | F8D9CF6C1E4A7BA6000BCFB8 /* EtaAnnotation.swift */, 254 | F8D9CF6D1E4A7BA6000BCFB8 /* EtaAnnotationView.swift */, 255 | F8D9CF4C1E4A7A8A000BCFB8 /* AnnotationETA.h */, 256 | F8D9CF4D1E4A7A8A000BCFB8 /* Info.plist */, 257 | ); 258 | path = AnnotationETA; 259 | sourceTree = ""; 260 | }; 261 | F8D9CF581E4A7A8A000BCFB8 /* AnnotationETATests */ = { 262 | isa = PBXGroup; 263 | children = ( 264 | F8D9CF591E4A7A8A000BCFB8 /* AnnotationETATests.swift */, 265 | F8D9CF5B1E4A7A8A000BCFB8 /* Info.plist */, 266 | ); 267 | path = AnnotationETATests; 268 | sourceTree = ""; 269 | }; 270 | /* End PBXGroup section */ 271 | 272 | /* Begin PBXHeadersBuildPhase section */ 273 | F8D9CF471E4A7A8A000BCFB8 /* Headers */ = { 274 | isa = PBXHeadersBuildPhase; 275 | buildActionMask = 2147483647; 276 | files = ( 277 | F8D9CF5C1E4A7A8A000BCFB8 /* AnnotationETA.h in Headers */, 278 | ); 279 | runOnlyForDeploymentPostprocessing = 0; 280 | }; 281 | /* End PBXHeadersBuildPhase section */ 282 | 283 | /* Begin PBXNativeTarget section */ 284 | 607FACCF1AFB9204008FA782 /* AnnotationETA_Example */ = { 285 | isa = PBXNativeTarget; 286 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "AnnotationETA_Example" */; 287 | buildPhases = ( 288 | CC8C8890AE8207EECA336954 /* [CP] Check Pods Manifest.lock */, 289 | 607FACCC1AFB9204008FA782 /* Sources */, 290 | 607FACCD1AFB9204008FA782 /* Frameworks */, 291 | 607FACCE1AFB9204008FA782 /* Resources */, 292 | 5D00F04E005B59171EFE66B0 /* [CP] Embed Pods Frameworks */, 293 | CE506153C17AFD5E662BAA51 /* [CP] Copy Pods Resources */, 294 | F8D9CF661E4A7A8A000BCFB8 /* Embed Frameworks */, 295 | ); 296 | buildRules = ( 297 | ); 298 | dependencies = ( 299 | F8D9CF5E1E4A7A8A000BCFB8 /* PBXTargetDependency */, 300 | ); 301 | name = AnnotationETA_Example; 302 | productName = AnnotationETA; 303 | productReference = 607FACD01AFB9204008FA782 /* AnnotationETA_Example.app */; 304 | productType = "com.apple.product-type.application"; 305 | }; 306 | 607FACE41AFB9204008FA782 /* AnnotationETA_Tests */ = { 307 | isa = PBXNativeTarget; 308 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "AnnotationETA_Tests" */; 309 | buildPhases = ( 310 | 7C5EDE960FCA091569173077 /* [CP] Check Pods Manifest.lock */, 311 | 607FACE11AFB9204008FA782 /* Sources */, 312 | 607FACE21AFB9204008FA782 /* Frameworks */, 313 | 607FACE31AFB9204008FA782 /* Resources */, 314 | C2FFABD75737E5F444518BE4 /* [CP] Embed Pods Frameworks */, 315 | A5647C20E7F846C5A4B1E85F /* [CP] Copy Pods Resources */, 316 | ); 317 | buildRules = ( 318 | ); 319 | dependencies = ( 320 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 321 | ); 322 | name = AnnotationETA_Tests; 323 | productName = Tests; 324 | productReference = 607FACE51AFB9204008FA782 /* AnnotationETA_Tests.xctest */; 325 | productType = "com.apple.product-type.bundle.unit-test"; 326 | }; 327 | F8D9CF491E4A7A8A000BCFB8 /* AnnotationETA */ = { 328 | isa = PBXNativeTarget; 329 | buildConfigurationList = F8D9CF651E4A7A8A000BCFB8 /* Build configuration list for PBXNativeTarget "AnnotationETA" */; 330 | buildPhases = ( 331 | F8D9CF451E4A7A8A000BCFB8 /* Sources */, 332 | F8D9CF461E4A7A8A000BCFB8 /* Frameworks */, 333 | F8D9CF471E4A7A8A000BCFB8 /* Headers */, 334 | F8D9CF481E4A7A8A000BCFB8 /* Resources */, 335 | ); 336 | buildRules = ( 337 | ); 338 | dependencies = ( 339 | ); 340 | name = AnnotationETA; 341 | productName = AnnotationETA; 342 | productReference = F8D9CF4A1E4A7A8A000BCFB8 /* AnnotationETA.framework */; 343 | productType = "com.apple.product-type.framework"; 344 | }; 345 | F8D9CF511E4A7A8A000BCFB8 /* AnnotationETATests */ = { 346 | isa = PBXNativeTarget; 347 | buildConfigurationList = F8D9CF671E4A7A8A000BCFB8 /* Build configuration list for PBXNativeTarget "AnnotationETATests" */; 348 | buildPhases = ( 349 | F8D9CF4E1E4A7A8A000BCFB8 /* Sources */, 350 | F8D9CF4F1E4A7A8A000BCFB8 /* Frameworks */, 351 | F8D9CF501E4A7A8A000BCFB8 /* Resources */, 352 | ); 353 | buildRules = ( 354 | ); 355 | dependencies = ( 356 | F8D9CF551E4A7A8A000BCFB8 /* PBXTargetDependency */, 357 | F8D9CF571E4A7A8A000BCFB8 /* PBXTargetDependency */, 358 | ); 359 | name = AnnotationETATests; 360 | productName = AnnotationETATests; 361 | productReference = F8D9CF521E4A7A8A000BCFB8 /* AnnotationETATests.xctest */; 362 | productType = "com.apple.product-type.bundle.unit-test"; 363 | }; 364 | /* End PBXNativeTarget section */ 365 | 366 | /* Begin PBXProject section */ 367 | 607FACC81AFB9204008FA782 /* Project object */ = { 368 | isa = PBXProject; 369 | attributes = { 370 | LastSwiftUpdateCheck = 0830; 371 | LastUpgradeCheck = 0830; 372 | ORGANIZATIONNAME = CocoaPods; 373 | TargetAttributes = { 374 | 607FACCF1AFB9204008FA782 = { 375 | CreatedOnToolsVersion = 6.3.1; 376 | DevelopmentTeam = QH95ER52SG; 377 | LastSwiftMigration = 0820; 378 | SystemCapabilities = { 379 | com.apple.Maps.iOS = { 380 | enabled = 1; 381 | }; 382 | }; 383 | }; 384 | 607FACE41AFB9204008FA782 = { 385 | CreatedOnToolsVersion = 6.3.1; 386 | DevelopmentTeam = QH95ER52SG; 387 | LastSwiftMigration = 0820; 388 | TestTargetID = 607FACCF1AFB9204008FA782; 389 | }; 390 | F8D9CF491E4A7A8A000BCFB8 = { 391 | CreatedOnToolsVersion = 8.3; 392 | DevelopmentTeam = QH95ER52SG; 393 | LastSwiftMigration = 0830; 394 | ProvisioningStyle = Automatic; 395 | }; 396 | F8D9CF511E4A7A8A000BCFB8 = { 397 | CreatedOnToolsVersion = 8.3; 398 | DevelopmentTeam = QH95ER52SG; 399 | ProvisioningStyle = Automatic; 400 | TestTargetID = 607FACCF1AFB9204008FA782; 401 | }; 402 | }; 403 | }; 404 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "AnnotationETA" */; 405 | compatibilityVersion = "Xcode 3.2"; 406 | developmentRegion = English; 407 | hasScannedForEncodings = 0; 408 | knownRegions = ( 409 | en, 410 | Base, 411 | ); 412 | mainGroup = 607FACC71AFB9204008FA782; 413 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 414 | projectDirPath = ""; 415 | projectRoot = ""; 416 | targets = ( 417 | 607FACCF1AFB9204008FA782 /* AnnotationETA_Example */, 418 | 607FACE41AFB9204008FA782 /* AnnotationETA_Tests */, 419 | F8D9CF491E4A7A8A000BCFB8 /* AnnotationETA */, 420 | F8D9CF511E4A7A8A000BCFB8 /* AnnotationETATests */, 421 | ); 422 | }; 423 | /* End PBXProject section */ 424 | 425 | /* Begin PBXResourcesBuildPhase section */ 426 | 607FACCE1AFB9204008FA782 /* Resources */ = { 427 | isa = PBXResourcesBuildPhase; 428 | buildActionMask = 2147483647; 429 | files = ( 430 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 431 | F8D9CF691E4A7AE4000BCFB8 /* Default-568h@2x.png in Resources */, 432 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 433 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 434 | ); 435 | runOnlyForDeploymentPostprocessing = 0; 436 | }; 437 | 607FACE31AFB9204008FA782 /* Resources */ = { 438 | isa = PBXResourcesBuildPhase; 439 | buildActionMask = 2147483647; 440 | files = ( 441 | ); 442 | runOnlyForDeploymentPostprocessing = 0; 443 | }; 444 | F8D9CF481E4A7A8A000BCFB8 /* Resources */ = { 445 | isa = PBXResourcesBuildPhase; 446 | buildActionMask = 2147483647; 447 | files = ( 448 | ); 449 | runOnlyForDeploymentPostprocessing = 0; 450 | }; 451 | F8D9CF501E4A7A8A000BCFB8 /* Resources */ = { 452 | isa = PBXResourcesBuildPhase; 453 | buildActionMask = 2147483647; 454 | files = ( 455 | ); 456 | runOnlyForDeploymentPostprocessing = 0; 457 | }; 458 | /* End PBXResourcesBuildPhase section */ 459 | 460 | /* Begin PBXShellScriptBuildPhase section */ 461 | 5D00F04E005B59171EFE66B0 /* [CP] Embed Pods Frameworks */ = { 462 | isa = PBXShellScriptBuildPhase; 463 | buildActionMask = 2147483647; 464 | files = ( 465 | ); 466 | inputPaths = ( 467 | ); 468 | name = "[CP] Embed Pods Frameworks"; 469 | outputPaths = ( 470 | ); 471 | runOnlyForDeploymentPostprocessing = 0; 472 | shellPath = /bin/sh; 473 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-frameworks.sh\"\n"; 474 | showEnvVarsInLog = 0; 475 | }; 476 | 7C5EDE960FCA091569173077 /* [CP] Check Pods Manifest.lock */ = { 477 | isa = PBXShellScriptBuildPhase; 478 | buildActionMask = 2147483647; 479 | files = ( 480 | ); 481 | inputPaths = ( 482 | ); 483 | name = "[CP] Check Pods Manifest.lock"; 484 | outputPaths = ( 485 | ); 486 | runOnlyForDeploymentPostprocessing = 0; 487 | shellPath = /bin/sh; 488 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 489 | showEnvVarsInLog = 0; 490 | }; 491 | A5647C20E7F846C5A4B1E85F /* [CP] Copy Pods Resources */ = { 492 | isa = PBXShellScriptBuildPhase; 493 | buildActionMask = 2147483647; 494 | files = ( 495 | ); 496 | inputPaths = ( 497 | ); 498 | name = "[CP] Copy Pods Resources"; 499 | outputPaths = ( 500 | ); 501 | runOnlyForDeploymentPostprocessing = 0; 502 | shellPath = /bin/sh; 503 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-resources.sh\"\n"; 504 | showEnvVarsInLog = 0; 505 | }; 506 | C2FFABD75737E5F444518BE4 /* [CP] Embed Pods Frameworks */ = { 507 | isa = PBXShellScriptBuildPhase; 508 | buildActionMask = 2147483647; 509 | files = ( 510 | ); 511 | inputPaths = ( 512 | ); 513 | name = "[CP] Embed Pods Frameworks"; 514 | outputPaths = ( 515 | ); 516 | runOnlyForDeploymentPostprocessing = 0; 517 | shellPath = /bin/sh; 518 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-frameworks.sh\"\n"; 519 | showEnvVarsInLog = 0; 520 | }; 521 | CC8C8890AE8207EECA336954 /* [CP] Check Pods Manifest.lock */ = { 522 | isa = PBXShellScriptBuildPhase; 523 | buildActionMask = 2147483647; 524 | files = ( 525 | ); 526 | inputPaths = ( 527 | ); 528 | name = "[CP] Check Pods Manifest.lock"; 529 | outputPaths = ( 530 | ); 531 | runOnlyForDeploymentPostprocessing = 0; 532 | shellPath = /bin/sh; 533 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 534 | showEnvVarsInLog = 0; 535 | }; 536 | CE506153C17AFD5E662BAA51 /* [CP] Copy Pods Resources */ = { 537 | isa = PBXShellScriptBuildPhase; 538 | buildActionMask = 2147483647; 539 | files = ( 540 | ); 541 | inputPaths = ( 542 | ); 543 | name = "[CP] Copy Pods Resources"; 544 | outputPaths = ( 545 | ); 546 | runOnlyForDeploymentPostprocessing = 0; 547 | shellPath = /bin/sh; 548 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-resources.sh\"\n"; 549 | showEnvVarsInLog = 0; 550 | }; 551 | /* End PBXShellScriptBuildPhase section */ 552 | 553 | /* Begin PBXSourcesBuildPhase section */ 554 | 607FACCC1AFB9204008FA782 /* Sources */ = { 555 | isa = PBXSourcesBuildPhase; 556 | buildActionMask = 2147483647; 557 | files = ( 558 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 559 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 560 | F8641C0A1E4A13B9009C9DF1 /* DetailViewController.swift in Sources */, 561 | ); 562 | runOnlyForDeploymentPostprocessing = 0; 563 | }; 564 | 607FACE11AFB9204008FA782 /* Sources */ = { 565 | isa = PBXSourcesBuildPhase; 566 | buildActionMask = 2147483647; 567 | files = ( 568 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 569 | ); 570 | runOnlyForDeploymentPostprocessing = 0; 571 | }; 572 | F8D9CF451E4A7A8A000BCFB8 /* Sources */ = { 573 | isa = PBXSourcesBuildPhase; 574 | buildActionMask = 2147483647; 575 | files = ( 576 | F8D9CF6E1E4A7BA6000BCFB8 /* DirectionButton.swift in Sources */, 577 | F8D9CF701E4A7BA6000BCFB8 /* EtaAnnotation.swift in Sources */, 578 | F8D9CF711E4A7BA6000BCFB8 /* EtaAnnotationView.swift in Sources */, 579 | F8D9CF6F1E4A7BA6000BCFB8 /* Directions.swift in Sources */, 580 | ); 581 | runOnlyForDeploymentPostprocessing = 0; 582 | }; 583 | F8D9CF4E1E4A7A8A000BCFB8 /* Sources */ = { 584 | isa = PBXSourcesBuildPhase; 585 | buildActionMask = 2147483647; 586 | files = ( 587 | F8D9CF5A1E4A7A8A000BCFB8 /* AnnotationETATests.swift in Sources */, 588 | ); 589 | runOnlyForDeploymentPostprocessing = 0; 590 | }; 591 | /* End PBXSourcesBuildPhase section */ 592 | 593 | /* Begin PBXTargetDependency section */ 594 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 595 | isa = PBXTargetDependency; 596 | target = 607FACCF1AFB9204008FA782 /* AnnotationETA_Example */; 597 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 598 | }; 599 | F8D9CF551E4A7A8A000BCFB8 /* PBXTargetDependency */ = { 600 | isa = PBXTargetDependency; 601 | target = F8D9CF491E4A7A8A000BCFB8 /* AnnotationETA */; 602 | targetProxy = F8D9CF541E4A7A8A000BCFB8 /* PBXContainerItemProxy */; 603 | }; 604 | F8D9CF571E4A7A8A000BCFB8 /* PBXTargetDependency */ = { 605 | isa = PBXTargetDependency; 606 | target = 607FACCF1AFB9204008FA782 /* AnnotationETA_Example */; 607 | targetProxy = F8D9CF561E4A7A8A000BCFB8 /* PBXContainerItemProxy */; 608 | }; 609 | F8D9CF5E1E4A7A8A000BCFB8 /* PBXTargetDependency */ = { 610 | isa = PBXTargetDependency; 611 | target = F8D9CF491E4A7A8A000BCFB8 /* AnnotationETA */; 612 | targetProxy = F8D9CF5D1E4A7A8A000BCFB8 /* PBXContainerItemProxy */; 613 | }; 614 | /* End PBXTargetDependency section */ 615 | 616 | /* Begin PBXVariantGroup section */ 617 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 618 | isa = PBXVariantGroup; 619 | children = ( 620 | 607FACDA1AFB9204008FA782 /* Base */, 621 | ); 622 | name = Main.storyboard; 623 | sourceTree = ""; 624 | }; 625 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 626 | isa = PBXVariantGroup; 627 | children = ( 628 | 607FACDF1AFB9204008FA782 /* Base */, 629 | ); 630 | name = LaunchScreen.xib; 631 | sourceTree = ""; 632 | }; 633 | /* End PBXVariantGroup section */ 634 | 635 | /* Begin XCBuildConfiguration section */ 636 | 607FACED1AFB9204008FA782 /* Debug */ = { 637 | isa = XCBuildConfiguration; 638 | buildSettings = { 639 | ALWAYS_SEARCH_USER_PATHS = NO; 640 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 641 | CLANG_CXX_LIBRARY = "libc++"; 642 | CLANG_ENABLE_MODULES = YES; 643 | CLANG_ENABLE_OBJC_ARC = YES; 644 | CLANG_WARN_BOOL_CONVERSION = YES; 645 | CLANG_WARN_CONSTANT_CONVERSION = YES; 646 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 647 | CLANG_WARN_EMPTY_BODY = YES; 648 | CLANG_WARN_ENUM_CONVERSION = YES; 649 | CLANG_WARN_INFINITE_RECURSION = YES; 650 | CLANG_WARN_INT_CONVERSION = YES; 651 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 652 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 653 | CLANG_WARN_UNREACHABLE_CODE = YES; 654 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 655 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 656 | COPY_PHASE_STRIP = NO; 657 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 658 | ENABLE_STRICT_OBJC_MSGSEND = YES; 659 | ENABLE_TESTABILITY = YES; 660 | GCC_C_LANGUAGE_STANDARD = gnu99; 661 | GCC_DYNAMIC_NO_PIC = NO; 662 | GCC_NO_COMMON_BLOCKS = YES; 663 | GCC_OPTIMIZATION_LEVEL = 0; 664 | GCC_PREPROCESSOR_DEFINITIONS = ( 665 | "DEBUG=1", 666 | "$(inherited)", 667 | ); 668 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 669 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 670 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 671 | GCC_WARN_UNDECLARED_SELECTOR = YES; 672 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 673 | GCC_WARN_UNUSED_FUNCTION = YES; 674 | GCC_WARN_UNUSED_VARIABLE = YES; 675 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 676 | MTL_ENABLE_DEBUG_INFO = YES; 677 | ONLY_ACTIVE_ARCH = YES; 678 | SDKROOT = iphoneos; 679 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 680 | }; 681 | name = Debug; 682 | }; 683 | 607FACEE1AFB9204008FA782 /* Release */ = { 684 | isa = XCBuildConfiguration; 685 | buildSettings = { 686 | ALWAYS_SEARCH_USER_PATHS = NO; 687 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 688 | CLANG_CXX_LIBRARY = "libc++"; 689 | CLANG_ENABLE_MODULES = YES; 690 | CLANG_ENABLE_OBJC_ARC = YES; 691 | CLANG_WARN_BOOL_CONVERSION = YES; 692 | CLANG_WARN_CONSTANT_CONVERSION = YES; 693 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 694 | CLANG_WARN_EMPTY_BODY = YES; 695 | CLANG_WARN_ENUM_CONVERSION = YES; 696 | CLANG_WARN_INFINITE_RECURSION = YES; 697 | CLANG_WARN_INT_CONVERSION = YES; 698 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 699 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 700 | CLANG_WARN_UNREACHABLE_CODE = YES; 701 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 702 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 703 | COPY_PHASE_STRIP = NO; 704 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 705 | ENABLE_NS_ASSERTIONS = NO; 706 | ENABLE_STRICT_OBJC_MSGSEND = YES; 707 | GCC_C_LANGUAGE_STANDARD = gnu99; 708 | GCC_NO_COMMON_BLOCKS = YES; 709 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 710 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 711 | GCC_WARN_UNDECLARED_SELECTOR = YES; 712 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 713 | GCC_WARN_UNUSED_FUNCTION = YES; 714 | GCC_WARN_UNUSED_VARIABLE = YES; 715 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 716 | MTL_ENABLE_DEBUG_INFO = NO; 717 | SDKROOT = iphoneos; 718 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 719 | VALIDATE_PRODUCT = YES; 720 | }; 721 | name = Release; 722 | }; 723 | 607FACF01AFB9204008FA782 /* Debug */ = { 724 | isa = XCBuildConfiguration; 725 | baseConfigurationReference = F97F83DFB984629471875EF5 /* Pods-AnnotationETA_Example.debug.xcconfig */; 726 | buildSettings = { 727 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 728 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 729 | DEVELOPMENT_TEAM = QH95ER52SG; 730 | INFOPLIST_FILE = AnnotationETA/Info.plist; 731 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 732 | MODULE_NAME = ExampleApp; 733 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 734 | PRODUCT_NAME = "$(TARGET_NAME)"; 735 | SWIFT_VERSION = 3.0; 736 | }; 737 | name = Debug; 738 | }; 739 | 607FACF11AFB9204008FA782 /* Release */ = { 740 | isa = XCBuildConfiguration; 741 | baseConfigurationReference = A335813E707027E15CA00668 /* Pods-AnnotationETA_Example.release.xcconfig */; 742 | buildSettings = { 743 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 744 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 745 | DEVELOPMENT_TEAM = QH95ER52SG; 746 | INFOPLIST_FILE = AnnotationETA/Info.plist; 747 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 748 | MODULE_NAME = ExampleApp; 749 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 750 | PRODUCT_NAME = "$(TARGET_NAME)"; 751 | SWIFT_VERSION = 3.0; 752 | }; 753 | name = Release; 754 | }; 755 | 607FACF31AFB9204008FA782 /* Debug */ = { 756 | isa = XCBuildConfiguration; 757 | baseConfigurationReference = C462F967F44449C0A3AB96E2 /* Pods-AnnotationETA_Tests.debug.xcconfig */; 758 | buildSettings = { 759 | DEVELOPMENT_TEAM = QH95ER52SG; 760 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 761 | GCC_PREPROCESSOR_DEFINITIONS = ( 762 | "DEBUG=1", 763 | "$(inherited)", 764 | ); 765 | INFOPLIST_FILE = Tests/Info.plist; 766 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 767 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 768 | PRODUCT_NAME = "$(TARGET_NAME)"; 769 | SWIFT_VERSION = 3.0; 770 | }; 771 | name = Debug; 772 | }; 773 | 607FACF41AFB9204008FA782 /* Release */ = { 774 | isa = XCBuildConfiguration; 775 | baseConfigurationReference = 3733ABC4060255EB64A8F44F /* Pods-AnnotationETA_Tests.release.xcconfig */; 776 | buildSettings = { 777 | DEVELOPMENT_TEAM = QH95ER52SG; 778 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 779 | INFOPLIST_FILE = Tests/Info.plist; 780 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 781 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 782 | PRODUCT_NAME = "$(TARGET_NAME)"; 783 | SWIFT_VERSION = 3.0; 784 | }; 785 | name = Release; 786 | }; 787 | F8D9CF611E4A7A8A000BCFB8 /* Debug */ = { 788 | isa = XCBuildConfiguration; 789 | buildSettings = { 790 | CLANG_ANALYZER_NONNULL = YES; 791 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 792 | CLANG_ENABLE_MODULES = YES; 793 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 794 | CODE_SIGN_IDENTITY = ""; 795 | CURRENT_PROJECT_VERSION = 1; 796 | DEBUG_INFORMATION_FORMAT = dwarf; 797 | DEFINES_MODULE = YES; 798 | DEVELOPMENT_TEAM = QH95ER52SG; 799 | DYLIB_COMPATIBILITY_VERSION = 1; 800 | DYLIB_CURRENT_VERSION = 1; 801 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 802 | INFOPLIST_FILE = AnnotationETA/Info.plist; 803 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 804 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 805 | PRODUCT_BUNDLE_IDENTIFIER = marekfort.AnnotationETA; 806 | PRODUCT_NAME = "$(TARGET_NAME)"; 807 | SKIP_INSTALL = YES; 808 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 809 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 810 | SWIFT_VERSION = 3.0; 811 | TARGETED_DEVICE_FAMILY = "1,2"; 812 | VERSIONING_SYSTEM = "apple-generic"; 813 | VERSION_INFO_PREFIX = ""; 814 | }; 815 | name = Debug; 816 | }; 817 | F8D9CF621E4A7A8A000BCFB8 /* Release */ = { 818 | isa = XCBuildConfiguration; 819 | buildSettings = { 820 | CLANG_ANALYZER_NONNULL = YES; 821 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 822 | CLANG_ENABLE_MODULES = YES; 823 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 824 | CODE_SIGN_IDENTITY = ""; 825 | CURRENT_PROJECT_VERSION = 1; 826 | DEFINES_MODULE = YES; 827 | DEVELOPMENT_TEAM = QH95ER52SG; 828 | DYLIB_COMPATIBILITY_VERSION = 1; 829 | DYLIB_CURRENT_VERSION = 1; 830 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 831 | INFOPLIST_FILE = AnnotationETA/Info.plist; 832 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 833 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 834 | PRODUCT_BUNDLE_IDENTIFIER = marekfort.AnnotationETA; 835 | PRODUCT_NAME = "$(TARGET_NAME)"; 836 | SKIP_INSTALL = YES; 837 | SWIFT_VERSION = 3.0; 838 | TARGETED_DEVICE_FAMILY = "1,2"; 839 | VERSIONING_SYSTEM = "apple-generic"; 840 | VERSION_INFO_PREFIX = ""; 841 | }; 842 | name = Release; 843 | }; 844 | F8D9CF631E4A7A8A000BCFB8 /* Debug */ = { 845 | isa = XCBuildConfiguration; 846 | buildSettings = { 847 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 848 | CLANG_ANALYZER_NONNULL = YES; 849 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 850 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 851 | DEBUG_INFORMATION_FORMAT = dwarf; 852 | DEVELOPMENT_TEAM = QH95ER52SG; 853 | INFOPLIST_FILE = AnnotationETATests/Info.plist; 854 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 855 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 856 | PRODUCT_BUNDLE_IDENTIFIER = marekfort.AnnotationETATests; 857 | PRODUCT_NAME = "$(TARGET_NAME)"; 858 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 859 | SWIFT_VERSION = 3.0; 860 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnnotationETA_Example.app/AnnotationETA_Example"; 861 | }; 862 | name = Debug; 863 | }; 864 | F8D9CF641E4A7A8A000BCFB8 /* Release */ = { 865 | isa = XCBuildConfiguration; 866 | buildSettings = { 867 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 868 | CLANG_ANALYZER_NONNULL = YES; 869 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 870 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 871 | DEVELOPMENT_TEAM = QH95ER52SG; 872 | INFOPLIST_FILE = AnnotationETATests/Info.plist; 873 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 874 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 875 | PRODUCT_BUNDLE_IDENTIFIER = marekfort.AnnotationETATests; 876 | PRODUCT_NAME = "$(TARGET_NAME)"; 877 | SWIFT_VERSION = 3.0; 878 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnnotationETA_Example.app/AnnotationETA_Example"; 879 | }; 880 | name = Release; 881 | }; 882 | /* End XCBuildConfiguration section */ 883 | 884 | /* Begin XCConfigurationList section */ 885 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "AnnotationETA" */ = { 886 | isa = XCConfigurationList; 887 | buildConfigurations = ( 888 | 607FACED1AFB9204008FA782 /* Debug */, 889 | 607FACEE1AFB9204008FA782 /* Release */, 890 | ); 891 | defaultConfigurationIsVisible = 0; 892 | defaultConfigurationName = Release; 893 | }; 894 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "AnnotationETA_Example" */ = { 895 | isa = XCConfigurationList; 896 | buildConfigurations = ( 897 | 607FACF01AFB9204008FA782 /* Debug */, 898 | 607FACF11AFB9204008FA782 /* Release */, 899 | ); 900 | defaultConfigurationIsVisible = 0; 901 | defaultConfigurationName = Release; 902 | }; 903 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "AnnotationETA_Tests" */ = { 904 | isa = XCConfigurationList; 905 | buildConfigurations = ( 906 | 607FACF31AFB9204008FA782 /* Debug */, 907 | 607FACF41AFB9204008FA782 /* Release */, 908 | ); 909 | defaultConfigurationIsVisible = 0; 910 | defaultConfigurationName = Release; 911 | }; 912 | F8D9CF651E4A7A8A000BCFB8 /* Build configuration list for PBXNativeTarget "AnnotationETA" */ = { 913 | isa = XCConfigurationList; 914 | buildConfigurations = ( 915 | F8D9CF611E4A7A8A000BCFB8 /* Debug */, 916 | F8D9CF621E4A7A8A000BCFB8 /* Release */, 917 | ); 918 | defaultConfigurationIsVisible = 0; 919 | defaultConfigurationName = Release; 920 | }; 921 | F8D9CF671E4A7A8A000BCFB8 /* Build configuration list for PBXNativeTarget "AnnotationETATests" */ = { 922 | isa = XCConfigurationList; 923 | buildConfigurations = ( 924 | F8D9CF631E4A7A8A000BCFB8 /* Debug */, 925 | F8D9CF641E4A7A8A000BCFB8 /* Release */, 926 | ); 927 | defaultConfigurationIsVisible = 0; 928 | defaultConfigurationName = Release; 929 | }; 930 | /* End XCConfigurationList section */ 931 | }; 932 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 933 | } 934 | -------------------------------------------------------------------------------- /Example/AnnotationETA.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/AnnotationETA.xcodeproj/xcshareddata/xcschemes/AnnotationETA.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /Example/AnnotationETA.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/AnnotationETA/AnnotationETA.h: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationETA.h 3 | // AnnotationETA 4 | // 5 | // Created by Marek Fořt on 2/7/17. 6 | // Copyright © 2017 CocoaPods. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for AnnotationETA. 12 | FOUNDATION_EXPORT double AnnotationETAVersionNumber; 13 | 14 | //! Project version string for AnnotationETA. 15 | FOUNDATION_EXPORT const unsigned char AnnotationETAVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Example/AnnotationETA/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // AnnotationETA 4 | // 5 | // Created by fortmarek on 02/01/2017. 6 | // Copyright (c) 2017 fortmarek. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | 20 | 21 | 22 | 23 | return true 24 | } 25 | 26 | func applicationWillResignActive(_ application: UIApplication) { 27 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 28 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 29 | } 30 | 31 | func applicationDidEnterBackground(_ application: UIApplication) { 32 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 33 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 34 | } 35 | 36 | func applicationWillEnterForeground(_ application: UIApplication) { 37 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | func applicationDidBecomeActive(_ application: UIApplication) { 41 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 42 | } 43 | 44 | func applicationWillTerminate(_ application: UIApplication) { 45 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 46 | } 47 | 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /Example/AnnotationETA/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/AnnotationETA/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 64 | 70 | 76 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Example/AnnotationETA/DetailViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.swift 3 | // AnnotationETA 4 | // 5 | // Created by Marek Fořt on 2/7/17. 6 | // Copyright © 2017 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MapKit 11 | 12 | class DetailViewController: UIViewController { 13 | 14 | var annotation: MKAnnotation? 15 | 16 | @IBOutlet weak var titleLabel: UILabel! 17 | @IBOutlet weak var subtitleLabel: UILabel! 18 | @IBOutlet weak var coordinatesLabel: UILabel! 19 | 20 | 21 | override func viewDidLoad() { 22 | super.viewDidLoad() 23 | 24 | guard 25 | let annotation = self.annotation, 26 | let title = annotation.title, 27 | let subtitle = annotation.subtitle 28 | else {return} 29 | 30 | titleLabel.text = title 31 | subtitleLabel.text = subtitle 32 | coordinatesLabel.text = "\(annotation.coordinate.latitude) \(annotation.coordinate.longitude)" 33 | } 34 | 35 | override func didReceiveMemoryWarning() { 36 | super.didReceiveMemoryWarning() 37 | // Dispose of any resources that can be recreated. 38 | } 39 | 40 | 41 | @IBAction func dimissDetail(_ sender: UIButton) { 42 | dismiss(animated: true, completion: nil) 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/Walking.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Walking.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Walking@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "Walking@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking@2x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/Walking.imageset/Walking@3x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/automobile.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "automobile.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "automobile@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "automobile@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile@2x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/automobile.imageset/automobile@3x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/transit.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "transit.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "transit@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "transit@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/transit.imageset/transit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/transit.imageset/transit.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/transit.imageset/transit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/transit.imageset/transit@2x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Images.xcassets/transit.imageset/transit@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/AnnotationETA/Images.xcassets/transit.imageset/transit@3x.png -------------------------------------------------------------------------------- /Example/AnnotationETA/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSLocationWhenInUseUsageDescription 22 | Needed to calculate ETA 23 | NSPrincipalClass 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Example/AnnotationETA/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AnnotationETA 4 | // 5 | // Created by fortmarek on 02/01/2017. 6 | // Copyright (c) 2017 fortmarek. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import MapKit 11 | import AnnotationETA 12 | 13 | class ViewController: UIViewController, MKMapViewDelegate { 14 | @IBOutlet weak var mapView: MKMapView! 15 | 16 | let locationManager = CLLocationManager() 17 | 18 | let etaAnnotations = [EtaAnnotation(title: "Paris", subtitle: "Capital City of France", coordinate: CLLocationCoordinate2D(latitude: 48.86666667, longitude: 2.333333)), EtaAnnotation(title: "Prague", subtitle: "Capital City of Czechia", coordinate: CLLocationCoordinate2D(latitude: 50.088172, longitude: 14.417863)), EtaAnnotation(title: "Canberra", subtitle: "Capital City of Australia", coordinate: CLLocationCoordinate2D(latitude: -35.26666667, longitude: 149.133333)), EtaAnnotation(title: "Washingtion, D.C.", subtitle: "Capital City of United States", coordinate: CLLocationCoordinate2D(latitude: 38.883333, longitude: -77)), EtaAnnotation(title: "Beijing", subtitle: "Capital City of China", coordinate: CLLocationCoordinate2D(latitude: 39.91666667, longitude: 116.383333)), EtaAnnotation(title: "Brasilia", subtitle: "Capital City of Brazil", coordinate: CLLocationCoordinate2D(latitude: -15.78333333, longitude: -47.916667)), EtaAnnotation(title: "Pretoria", subtitle: "Capital City of South Africa", coordinate: CLLocationCoordinate2D(latitude: -25.7, longitude: 28.216667)), EtaAnnotation(title: "New Delhi", subtitle: "Capital City of India", coordinate: CLLocationCoordinate2D(latitude: 28.6, longitude: 77.2)), EtaAnnotation(title: "Moscow", subtitle: "Capital City of Russia", coordinate: CLLocationCoordinate2D(latitude: 55.75, longitude: 37.6)), EtaAnnotation(title: "Ottawa", subtitle: "Capital City of Canada", coordinate: CLLocationCoordinate2D(latitude: 45.41666667, longitude: -75.7)), EtaAnnotation(title: "Abuja", subtitle: "Capital City of Nigeria", coordinate: CLLocationCoordinate2D(latitude: 9.083333333, longitude: 7.533333))] 19 | 20 | 21 | 22 | 23 | override func viewDidLoad() { 24 | super.viewDidLoad() 25 | // Do any additional setup after loading the view, typically from a nib. 26 | 27 | locationManager.requestWhenInUseAuthorization() 28 | 29 | //Show user location with necessary updates 30 | mapView.showsUserLocation = true 31 | locationManager.startUpdatingLocation() 32 | locationManager.desiredAccuracy = kCLLocationAccuracyBest 33 | 34 | 35 | //Delegates for location manager and map view 36 | locationManager.delegate = self 37 | mapView.delegate = self 38 | 39 | 40 | DispatchQueue.main.async(execute: { 41 | //Placing toilets on the map 42 | self.mapView.addAnnotations(self.etaAnnotations) 43 | }) 44 | 45 | } 46 | 47 | 48 | override func didReceiveMemoryWarning() { 49 | super.didReceiveMemoryWarning() 50 | // Dispose of any resources that can be recreated. 51 | } 52 | 53 | 54 | func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 55 | 56 | if annotation is MKUserLocation {return nil} 57 | 58 | var annotationView = MKAnnotationView() 59 | 60 | if let reusableAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "etaAnnotation") { 61 | annotationView = reusableAnnotationView 62 | } 63 | else { 64 | let annotationEtaView = EtaAnnotationView(annotation: annotation, reuseIdentifier: "etaAnnotation") 65 | annotationEtaView.pinColor = UIColor(red: 1.00, green: 0.50, blue: 0.00, alpha: 1.0) 66 | 67 | annotationEtaView.setDetailShowButton() 68 | annotationEtaView.rightButton?.addTarget(self, action: #selector(detailButtonTapped), for: .touchUpInside) 69 | 70 | annotationView = annotationEtaView 71 | } 72 | 73 | return annotationView 74 | } 75 | 76 | func detailButtonTapped() { 77 | guard 78 | mapView.selectedAnnotations.count == 1, 79 | let detailViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "detailVC") as? DetailViewController 80 | else {return} 81 | 82 | detailViewController.annotation = mapView.selectedAnnotations[0] 83 | 84 | self.present(detailViewController, animated: true, completion: nil) 85 | } 86 | 87 | func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { 88 | guard let annotation = view.annotation else {return} 89 | if annotation is MKUserLocation {return} 90 | 91 | view.leftCalloutAccessoryView = DirectionButton(destinationCoordinate: annotation.coordinate, locationManager: self.locationManager, transportType: .automobile, destinationName: annotation.title ?? "") 92 | } 93 | } 94 | 95 | extension ViewController: CLLocationManagerDelegate { 96 | //Heading 97 | func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) { 98 | //Ensure heading's value is positive 99 | let heading = newHeading.trueHeading > 0 ? newHeading.trueHeading : newHeading.magneticHeading 100 | 101 | //Orientate map according to where iPhone's facing 102 | let mapCamera = mapView.camera 103 | mapCamera.heading = heading 104 | mapView.setCamera(mapCamera, animated: false) 105 | } 106 | 107 | //The initial positon and region of the map 108 | func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 109 | //Locations.last = current location 110 | guard let location = locations.last else {return} 111 | 112 | //Position 113 | let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) 114 | 115 | //Region 116 | let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 10, longitudeDelta: 10)) 117 | 118 | 119 | //Show region in mapView 120 | mapView.setRegion(region, animated: true) 121 | locationManager.stopUpdatingLocation() 122 | 123 | } 124 | 125 | //Location manager fail 126 | func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { 127 | print("Errors: \(error)") 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /Example/AnnotationETATests/AnnotationETATests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnnotationETATests.swift 3 | // AnnotationETATests 4 | // 5 | // Created by Marek Fořt on 2/7/17. 6 | // Copyright © 2017 CocoaPods. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import AnnotationETA 11 | 12 | class AnnotationETATests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Example/AnnotationETATests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/Example/Default-568h@2x.png -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'AnnotationETA_Example' do 4 | pod 'AnnotationETA', :path => '../' 5 | 6 | target 'AnnotationETA_Tests' do 7 | pod 'AnnotationETA', :path => '../' 8 | 9 | end 10 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AnnotationETA (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - AnnotationETA (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | AnnotationETA: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | AnnotationETA: ffa8db1beee40e593f544808f02deca078a0284d 13 | 14 | PODFILE CHECKSUM: 0dae11ac84c77d3c6b4af54c04d0460f00fa5c16 15 | 16 | COCOAPODS: 1.2.0.beta.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/AnnotationETA.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AnnotationETA", 3 | "version": "0.1.0", 4 | "summary": "A short description of AnnotationETA.", 5 | "description": "TODO: Add long description of the pod here.", 6 | "homepage": "https://github.com/fortmarek/AnnotationETA", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "fortmarek": "marekfort@me.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/fortmarek/AnnotationETA.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "source_files": "AnnotationETA/Classes/**/*" 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - AnnotationETA (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - AnnotationETA (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | AnnotationETA: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | AnnotationETA: ffa8db1beee40e593f544808f02deca078a0284d 13 | 14 | PODFILE CHECKSUM: 0dae11ac84c77d3c6b4af54c04d0460f00fa5c16 15 | 16 | COCOAPODS: 1.2.0.beta.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0C887E118FEB010B2976F8ACD2AC1570 /* Pods-AnnotationETA_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF68FAD1DC7C60C3176862D79716C20F /* Pods-AnnotationETA_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 5947BBF9766943B43F649FA400BCBE72 /* AnnotationETA-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8E79C6E05DA787A9827133F5B6300A /* AnnotationETA-dummy.m */; }; 12 | 64930F1280B7645C670B665914C9D7EB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 13 | 7E1551807624E61A7D15D5E994F95F8A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 14 | 80E31A4E43DA4822CC581E154739FA22 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 15 | 91535A5E886E6EAC88095AE7BD6955E0 /* Pods-AnnotationETA_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F649CB49469B003B252C1A28086600A4 /* Pods-AnnotationETA_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | A74ECE5EDF5400EBD3A195672E6179AF /* AnnotationETA-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1392EC150A61AEBA533C8E5D413FBDF5 /* AnnotationETA-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | C6AA5E91D155557CF6B7FAD8307CFCFD /* Pods-AnnotationETA_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C6B3CE81D070C49B7F34F395265D /* Pods-AnnotationETA_Tests-dummy.m */; }; 18 | DCB2A09930A88C06E664C6DE69FDC1A9 /* Pods-AnnotationETA_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 47D48CFFBF2D5EEF055A3906B1CAB63E /* Pods-AnnotationETA_Example-dummy.m */; }; 19 | F87B2FB71E466C3600DCEC9C /* DirectionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87B2FB61E466C3600DCEC9C /* DirectionButton.swift */; }; 20 | F87B2FB91E466CB200DCEC9C /* Directions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87B2FB81E466CB200DCEC9C /* Directions.swift */; }; 21 | F883014D1E42A0FF001F6C61 /* EtaAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F883014C1E42A0FF001F6C61 /* EtaAnnotationView.swift */; }; 22 | F88A847D1E43823C00C6D763 /* EtaAnnotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88A847C1E43823C00C6D763 /* EtaAnnotation.swift */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXContainerItemProxy section */ 26 | F37FBE11EEC0AFC70CC462B3787C02EB /* PBXContainerItemProxy */ = { 27 | isa = PBXContainerItemProxy; 28 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 29 | proxyType = 1; 30 | remoteGlobalIDString = 3B2A4C5ABC2C0C02745FFA055408AC4D; 31 | remoteInfo = AnnotationETA; 32 | }; 33 | /* End PBXContainerItemProxy section */ 34 | 35 | /* Begin PBXFileReference section */ 36 | 0641686E2D6B8B1DF83EDC9CC077E66A /* Pods_AnnotationETA_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AnnotationETA_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | 0BDACA07F1BAD7B1725A29A6D839A55D /* Pods_AnnotationETA_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AnnotationETA_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 38 | 0D8E79C6E05DA787A9827133F5B6300A /* AnnotationETA-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AnnotationETA-dummy.m"; sourceTree = ""; }; 39 | 1392EC150A61AEBA533C8E5D413FBDF5 /* AnnotationETA-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AnnotationETA-umbrella.h"; sourceTree = ""; }; 40 | 2A64DEFAAC9800EFE8ACC197B445AFC0 /* Pods-AnnotationETA_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnnotationETA_Example.debug.xcconfig"; sourceTree = ""; }; 41 | 32127AFA30F144F9AA464A9813D71F8D /* Pods-AnnotationETA_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AnnotationETA_Example-acknowledgements.plist"; sourceTree = ""; }; 42 | 47D48CFFBF2D5EEF055A3906B1CAB63E /* Pods-AnnotationETA_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AnnotationETA_Example-dummy.m"; sourceTree = ""; }; 43 | 5CED03AD584D6C01BD2D1CB9A73088C1 /* Pods-AnnotationETA_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AnnotationETA_Example-acknowledgements.markdown"; sourceTree = ""; }; 44 | 5D6C741A8362ECDF252F6AF2B6DBB103 /* Pods-AnnotationETA_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnnotationETA_Tests.release.xcconfig"; sourceTree = ""; }; 45 | 5EC0E3C7A5274570F8CFFC30DAC7A854 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 46 | 88E8C6B3CE81D070C49B7F34F395265D /* Pods-AnnotationETA_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AnnotationETA_Tests-dummy.m"; sourceTree = ""; }; 47 | 89EA6859D5D46F1FB7CE52E666172A7B /* Pods-AnnotationETA_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AnnotationETA_Tests-acknowledgements.plist"; sourceTree = ""; }; 48 | 8CA57C3EA3818940ECD3C67DE7DD77EF /* Pods-AnnotationETA_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnnotationETA_Tests-resources.sh"; sourceTree = ""; }; 49 | 907427B0C91746BFBAA1AE2A5F2B5529 /* Pods-AnnotationETA_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnnotationETA_Example-resources.sh"; sourceTree = ""; }; 50 | 93190AD6AA3D5777BFE4A04B7B29BBEB /* AnnotationETA.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = AnnotationETA.modulemap; sourceTree = ""; }; 51 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 52 | 9AA140A3A108511468A72B278AEA3401 /* Pods-AnnotationETA_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-AnnotationETA_Example.modulemap"; sourceTree = ""; }; 53 | A7063751019E3A069E2DB02F3D068FA1 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | B1311B27043B31940D99CB13627586FE /* Pods-AnnotationETA_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-AnnotationETA_Tests.modulemap"; sourceTree = ""; }; 55 | B9E7AF11920CE6143C0BFBC0552C7443 /* Pods-AnnotationETA_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnnotationETA_Tests-frameworks.sh"; sourceTree = ""; }; 56 | C345052500B0108CE4C7696B0ECFB064 /* Pods-AnnotationETA_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnnotationETA_Example-frameworks.sh"; sourceTree = ""; }; 57 | C92D7CBBA973CE55484F7C71050F34E9 /* AnnotationETA-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AnnotationETA-prefix.pch"; sourceTree = ""; }; 58 | CA61165128F76EE0B77501E847664D9C /* AnnotationETA.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AnnotationETA.xcconfig; sourceTree = ""; }; 59 | CAB80C259E5A75019FC7BAB46B0173A8 /* AnnotationETA.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AnnotationETA.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 61 | D79D86603C9AF6509144B651D7427BF1 /* Pods-AnnotationETA_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AnnotationETA_Tests-acknowledgements.markdown"; sourceTree = ""; }; 62 | E8CD212C8F85BD809400BDF5D99F320A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 63 | E9D9D723D9DF0CBB0D1C411E8F084E21 /* Pods-AnnotationETA_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnnotationETA_Tests.debug.xcconfig"; sourceTree = ""; }; 64 | EE0B075ADF82366408A31F76214BDBFD /* Pods-AnnotationETA_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnnotationETA_Example.release.xcconfig"; sourceTree = ""; }; 65 | EF68FAD1DC7C60C3176862D79716C20F /* Pods-AnnotationETA_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AnnotationETA_Tests-umbrella.h"; sourceTree = ""; }; 66 | F649CB49469B003B252C1A28086600A4 /* Pods-AnnotationETA_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AnnotationETA_Example-umbrella.h"; sourceTree = ""; }; 67 | F87B2FB61E466C3600DCEC9C /* DirectionButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectionButton.swift; sourceTree = ""; }; 68 | F87B2FB81E466CB200DCEC9C /* Directions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Directions.swift; sourceTree = ""; }; 69 | F883014C1E42A0FF001F6C61 /* EtaAnnotationView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtaAnnotationView.swift; sourceTree = ""; }; 70 | F88A847C1E43823C00C6D763 /* EtaAnnotation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EtaAnnotation.swift; sourceTree = ""; }; 71 | /* End PBXFileReference section */ 72 | 73 | /* Begin PBXFrameworksBuildPhase section */ 74 | 82EA3C9E148B6E301DA559B9515CE95E /* Frameworks */ = { 75 | isa = PBXFrameworksBuildPhase; 76 | buildActionMask = 2147483647; 77 | files = ( 78 | 80E31A4E43DA4822CC581E154739FA22 /* Foundation.framework in Frameworks */, 79 | ); 80 | runOnlyForDeploymentPostprocessing = 0; 81 | }; 82 | 9BE2698CA38A3A64C3BAF85B3E707088 /* Frameworks */ = { 83 | isa = PBXFrameworksBuildPhase; 84 | buildActionMask = 2147483647; 85 | files = ( 86 | 7E1551807624E61A7D15D5E994F95F8A /* Foundation.framework in Frameworks */, 87 | ); 88 | runOnlyForDeploymentPostprocessing = 0; 89 | }; 90 | DF497682A9B586F43E17A2DD4F8FC7DA /* Frameworks */ = { 91 | isa = PBXFrameworksBuildPhase; 92 | buildActionMask = 2147483647; 93 | files = ( 94 | 64930F1280B7645C670B665914C9D7EB /* Foundation.framework in Frameworks */, 95 | ); 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | /* End PBXFrameworksBuildPhase section */ 99 | 100 | /* Begin PBXGroup section */ 101 | 0867957E8F96262E674882D47FAB6720 /* Development Pods */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | F86FA220942883D866B19503F6C247B3 /* AnnotationETA */, 105 | ); 106 | name = "Development Pods"; 107 | sourceTree = ""; 108 | }; 109 | 30E18420BC4EF9B18041417C4C8BA707 /* Pods-AnnotationETA_Tests */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 5EC0E3C7A5274570F8CFFC30DAC7A854 /* Info.plist */, 113 | B1311B27043B31940D99CB13627586FE /* Pods-AnnotationETA_Tests.modulemap */, 114 | D79D86603C9AF6509144B651D7427BF1 /* Pods-AnnotationETA_Tests-acknowledgements.markdown */, 115 | 89EA6859D5D46F1FB7CE52E666172A7B /* Pods-AnnotationETA_Tests-acknowledgements.plist */, 116 | 88E8C6B3CE81D070C49B7F34F395265D /* Pods-AnnotationETA_Tests-dummy.m */, 117 | B9E7AF11920CE6143C0BFBC0552C7443 /* Pods-AnnotationETA_Tests-frameworks.sh */, 118 | 8CA57C3EA3818940ECD3C67DE7DD77EF /* Pods-AnnotationETA_Tests-resources.sh */, 119 | EF68FAD1DC7C60C3176862D79716C20F /* Pods-AnnotationETA_Tests-umbrella.h */, 120 | E9D9D723D9DF0CBB0D1C411E8F084E21 /* Pods-AnnotationETA_Tests.debug.xcconfig */, 121 | 5D6C741A8362ECDF252F6AF2B6DBB103 /* Pods-AnnotationETA_Tests.release.xcconfig */, 122 | ); 123 | name = "Pods-AnnotationETA_Tests"; 124 | path = "Target Support Files/Pods-AnnotationETA_Tests"; 125 | sourceTree = ""; 126 | }; 127 | 53832E4062E122000CA05D92200FC4E5 /* Pod */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 858CC43ED1D20E2E5570A99FCCA59F74 /* Classes */, 131 | ); 132 | name = Pod; 133 | path = AnnotationETA; 134 | sourceTree = ""; 135 | }; 136 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */, 140 | ); 141 | name = iOS; 142 | sourceTree = ""; 143 | }; 144 | 7DB346D0F39D3F0E887471402A8071AB = { 145 | isa = PBXGroup; 146 | children = ( 147 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 148 | 0867957E8F96262E674882D47FAB6720 /* Development Pods */, 149 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 150 | FCAD5C414D3B1CE1773D17AF2F89D82D /* Products */, 151 | EC1A1AE176B2A554B4DFC985E1E95CE7 /* Targets Support Files */, 152 | ); 153 | sourceTree = ""; 154 | }; 155 | 858CC43ED1D20E2E5570A99FCCA59F74 /* Classes */ = { 156 | isa = PBXGroup; 157 | children = ( 158 | F883014C1E42A0FF001F6C61 /* EtaAnnotationView.swift */, 159 | F87B2FB61E466C3600DCEC9C /* DirectionButton.swift */, 160 | F87B2FB81E466CB200DCEC9C /* Directions.swift */, 161 | F88A847C1E43823C00C6D763 /* EtaAnnotation.swift */, 162 | ); 163 | path = Classes; 164 | sourceTree = ""; 165 | }; 166 | 921CAE68D7152A259ED7B44838C8FE55 /* Support Files */ = { 167 | isa = PBXGroup; 168 | children = ( 169 | 93190AD6AA3D5777BFE4A04B7B29BBEB /* AnnotationETA.modulemap */, 170 | CA61165128F76EE0B77501E847664D9C /* AnnotationETA.xcconfig */, 171 | 0D8E79C6E05DA787A9827133F5B6300A /* AnnotationETA-dummy.m */, 172 | C92D7CBBA973CE55484F7C71050F34E9 /* AnnotationETA-prefix.pch */, 173 | 1392EC150A61AEBA533C8E5D413FBDF5 /* AnnotationETA-umbrella.h */, 174 | A7063751019E3A069E2DB02F3D068FA1 /* Info.plist */, 175 | ); 176 | name = "Support Files"; 177 | path = "Example/Pods/Target Support Files/AnnotationETA"; 178 | sourceTree = ""; 179 | }; 180 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */, 184 | ); 185 | name = Frameworks; 186 | sourceTree = ""; 187 | }; 188 | EC1A1AE176B2A554B4DFC985E1E95CE7 /* Targets Support Files */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | F14D2E481A3BE7DD499993C9D5AC3917 /* Pods-AnnotationETA_Example */, 192 | 30E18420BC4EF9B18041417C4C8BA707 /* Pods-AnnotationETA_Tests */, 193 | ); 194 | name = "Targets Support Files"; 195 | sourceTree = ""; 196 | }; 197 | F14D2E481A3BE7DD499993C9D5AC3917 /* Pods-AnnotationETA_Example */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | E8CD212C8F85BD809400BDF5D99F320A /* Info.plist */, 201 | 9AA140A3A108511468A72B278AEA3401 /* Pods-AnnotationETA_Example.modulemap */, 202 | 5CED03AD584D6C01BD2D1CB9A73088C1 /* Pods-AnnotationETA_Example-acknowledgements.markdown */, 203 | 32127AFA30F144F9AA464A9813D71F8D /* Pods-AnnotationETA_Example-acknowledgements.plist */, 204 | 47D48CFFBF2D5EEF055A3906B1CAB63E /* Pods-AnnotationETA_Example-dummy.m */, 205 | C345052500B0108CE4C7696B0ECFB064 /* Pods-AnnotationETA_Example-frameworks.sh */, 206 | 907427B0C91746BFBAA1AE2A5F2B5529 /* Pods-AnnotationETA_Example-resources.sh */, 207 | F649CB49469B003B252C1A28086600A4 /* Pods-AnnotationETA_Example-umbrella.h */, 208 | 2A64DEFAAC9800EFE8ACC197B445AFC0 /* Pods-AnnotationETA_Example.debug.xcconfig */, 209 | EE0B075ADF82366408A31F76214BDBFD /* Pods-AnnotationETA_Example.release.xcconfig */, 210 | ); 211 | name = "Pods-AnnotationETA_Example"; 212 | path = "Target Support Files/Pods-AnnotationETA_Example"; 213 | sourceTree = ""; 214 | }; 215 | F86FA220942883D866B19503F6C247B3 /* AnnotationETA */ = { 216 | isa = PBXGroup; 217 | children = ( 218 | 53832E4062E122000CA05D92200FC4E5 /* Pod */, 219 | 921CAE68D7152A259ED7B44838C8FE55 /* Support Files */, 220 | ); 221 | name = AnnotationETA; 222 | path = ../..; 223 | sourceTree = ""; 224 | }; 225 | FCAD5C414D3B1CE1773D17AF2F89D82D /* Products */ = { 226 | isa = PBXGroup; 227 | children = ( 228 | CAB80C259E5A75019FC7BAB46B0173A8 /* AnnotationETA.framework */, 229 | 0641686E2D6B8B1DF83EDC9CC077E66A /* Pods_AnnotationETA_Example.framework */, 230 | 0BDACA07F1BAD7B1725A29A6D839A55D /* Pods_AnnotationETA_Tests.framework */, 231 | ); 232 | name = Products; 233 | sourceTree = ""; 234 | }; 235 | /* End PBXGroup section */ 236 | 237 | /* Begin PBXHeadersBuildPhase section */ 238 | 1FFD7DA9287462912E15DBD4CFFDF56E /* Headers */ = { 239 | isa = PBXHeadersBuildPhase; 240 | buildActionMask = 2147483647; 241 | files = ( 242 | 91535A5E886E6EAC88095AE7BD6955E0 /* Pods-AnnotationETA_Example-umbrella.h in Headers */, 243 | ); 244 | runOnlyForDeploymentPostprocessing = 0; 245 | }; 246 | 774E84A01C9E3BCA76F7C88F8FC29AA3 /* Headers */ = { 247 | isa = PBXHeadersBuildPhase; 248 | buildActionMask = 2147483647; 249 | files = ( 250 | A74ECE5EDF5400EBD3A195672E6179AF /* AnnotationETA-umbrella.h in Headers */, 251 | ); 252 | runOnlyForDeploymentPostprocessing = 0; 253 | }; 254 | 95624EE897A0073550529CAE99FB3D46 /* Headers */ = { 255 | isa = PBXHeadersBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | 0C887E118FEB010B2976F8ACD2AC1570 /* Pods-AnnotationETA_Tests-umbrella.h in Headers */, 259 | ); 260 | runOnlyForDeploymentPostprocessing = 0; 261 | }; 262 | /* End PBXHeadersBuildPhase section */ 263 | 264 | /* Begin PBXNativeTarget section */ 265 | 3B2A4C5ABC2C0C02745FFA055408AC4D /* AnnotationETA */ = { 266 | isa = PBXNativeTarget; 267 | buildConfigurationList = 19DC9B5E0EAFDDE1917256F5BA6E2710 /* Build configuration list for PBXNativeTarget "AnnotationETA" */; 268 | buildPhases = ( 269 | A2B4B7D87F1BE6C46E6CC20B2704905C /* Sources */, 270 | 9BE2698CA38A3A64C3BAF85B3E707088 /* Frameworks */, 271 | 774E84A01C9E3BCA76F7C88F8FC29AA3 /* Headers */, 272 | ); 273 | buildRules = ( 274 | ); 275 | dependencies = ( 276 | ); 277 | name = AnnotationETA; 278 | productName = AnnotationETA; 279 | productReference = CAB80C259E5A75019FC7BAB46B0173A8 /* AnnotationETA.framework */; 280 | productType = "com.apple.product-type.framework"; 281 | }; 282 | 661AD6D64DF5D6B708D48A59DF261330 /* Pods-AnnotationETA_Tests */ = { 283 | isa = PBXNativeTarget; 284 | buildConfigurationList = BA7F1EDE6649AAAD051A6A25B9AF169D /* Build configuration list for PBXNativeTarget "Pods-AnnotationETA_Tests" */; 285 | buildPhases = ( 286 | 88A98C86D1927718951A5D1B8265DF38 /* Sources */, 287 | DF497682A9B586F43E17A2DD4F8FC7DA /* Frameworks */, 288 | 95624EE897A0073550529CAE99FB3D46 /* Headers */, 289 | ); 290 | buildRules = ( 291 | ); 292 | dependencies = ( 293 | ); 294 | name = "Pods-AnnotationETA_Tests"; 295 | productName = "Pods-AnnotationETA_Tests"; 296 | productReference = 0BDACA07F1BAD7B1725A29A6D839A55D /* Pods_AnnotationETA_Tests.framework */; 297 | productType = "com.apple.product-type.framework"; 298 | }; 299 | C937CBBE2B4A1E9D1EC5D7917AEAA82A /* Pods-AnnotationETA_Example */ = { 300 | isa = PBXNativeTarget; 301 | buildConfigurationList = DDE8F439509D5B335A0FD244849E7966 /* Build configuration list for PBXNativeTarget "Pods-AnnotationETA_Example" */; 302 | buildPhases = ( 303 | F31600824E9EAE64DDD43539074ABAED /* Sources */, 304 | 82EA3C9E148B6E301DA559B9515CE95E /* Frameworks */, 305 | 1FFD7DA9287462912E15DBD4CFFDF56E /* Headers */, 306 | ); 307 | buildRules = ( 308 | ); 309 | dependencies = ( 310 | D42B9D757BB71C6350C8BA416C528D57 /* PBXTargetDependency */, 311 | ); 312 | name = "Pods-AnnotationETA_Example"; 313 | productName = "Pods-AnnotationETA_Example"; 314 | productReference = 0641686E2D6B8B1DF83EDC9CC077E66A /* Pods_AnnotationETA_Example.framework */; 315 | productType = "com.apple.product-type.framework"; 316 | }; 317 | /* End PBXNativeTarget section */ 318 | 319 | /* Begin PBXProject section */ 320 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 321 | isa = PBXProject; 322 | attributes = { 323 | LastSwiftUpdateCheck = 0730; 324 | LastUpgradeCheck = 0700; 325 | TargetAttributes = { 326 | 3B2A4C5ABC2C0C02745FFA055408AC4D = { 327 | LastSwiftMigration = 0820; 328 | }; 329 | C937CBBE2B4A1E9D1EC5D7917AEAA82A = { 330 | LastSwiftMigration = 0820; 331 | }; 332 | }; 333 | }; 334 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 335 | compatibilityVersion = "Xcode 3.2"; 336 | developmentRegion = English; 337 | hasScannedForEncodings = 0; 338 | knownRegions = ( 339 | en, 340 | ); 341 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 342 | productRefGroup = FCAD5C414D3B1CE1773D17AF2F89D82D /* Products */; 343 | projectDirPath = ""; 344 | projectRoot = ""; 345 | targets = ( 346 | 3B2A4C5ABC2C0C02745FFA055408AC4D /* AnnotationETA */, 347 | C937CBBE2B4A1E9D1EC5D7917AEAA82A /* Pods-AnnotationETA_Example */, 348 | 661AD6D64DF5D6B708D48A59DF261330 /* Pods-AnnotationETA_Tests */, 349 | ); 350 | }; 351 | /* End PBXProject section */ 352 | 353 | /* Begin PBXSourcesBuildPhase section */ 354 | 88A98C86D1927718951A5D1B8265DF38 /* Sources */ = { 355 | isa = PBXSourcesBuildPhase; 356 | buildActionMask = 2147483647; 357 | files = ( 358 | C6AA5E91D155557CF6B7FAD8307CFCFD /* Pods-AnnotationETA_Tests-dummy.m in Sources */, 359 | ); 360 | runOnlyForDeploymentPostprocessing = 0; 361 | }; 362 | A2B4B7D87F1BE6C46E6CC20B2704905C /* Sources */ = { 363 | isa = PBXSourcesBuildPhase; 364 | buildActionMask = 2147483647; 365 | files = ( 366 | F883014D1E42A0FF001F6C61 /* EtaAnnotationView.swift in Sources */, 367 | F87B2FB71E466C3600DCEC9C /* DirectionButton.swift in Sources */, 368 | 5947BBF9766943B43F649FA400BCBE72 /* AnnotationETA-dummy.m in Sources */, 369 | F88A847D1E43823C00C6D763 /* EtaAnnotation.swift in Sources */, 370 | F87B2FB91E466CB200DCEC9C /* Directions.swift in Sources */, 371 | ); 372 | runOnlyForDeploymentPostprocessing = 0; 373 | }; 374 | F31600824E9EAE64DDD43539074ABAED /* Sources */ = { 375 | isa = PBXSourcesBuildPhase; 376 | buildActionMask = 2147483647; 377 | files = ( 378 | DCB2A09930A88C06E664C6DE69FDC1A9 /* Pods-AnnotationETA_Example-dummy.m in Sources */, 379 | ); 380 | runOnlyForDeploymentPostprocessing = 0; 381 | }; 382 | /* End PBXSourcesBuildPhase section */ 383 | 384 | /* Begin PBXTargetDependency section */ 385 | D42B9D757BB71C6350C8BA416C528D57 /* PBXTargetDependency */ = { 386 | isa = PBXTargetDependency; 387 | name = AnnotationETA; 388 | target = 3B2A4C5ABC2C0C02745FFA055408AC4D /* AnnotationETA */; 389 | targetProxy = F37FBE11EEC0AFC70CC462B3787C02EB /* PBXContainerItemProxy */; 390 | }; 391 | /* End PBXTargetDependency section */ 392 | 393 | /* Begin XCBuildConfiguration section */ 394 | 092B2B6E96B1CB12EF29E4F4047B0334 /* Debug */ = { 395 | isa = XCBuildConfiguration; 396 | baseConfigurationReference = CA61165128F76EE0B77501E847664D9C /* AnnotationETA.xcconfig */; 397 | buildSettings = { 398 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 399 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 400 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 401 | CURRENT_PROJECT_VERSION = 1; 402 | DEBUG_INFORMATION_FORMAT = dwarf; 403 | DEFINES_MODULE = YES; 404 | DYLIB_COMPATIBILITY_VERSION = 1; 405 | DYLIB_CURRENT_VERSION = 1; 406 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 407 | ENABLE_STRICT_OBJC_MSGSEND = YES; 408 | GCC_NO_COMMON_BLOCKS = YES; 409 | GCC_PREFIX_HEADER = "Target Support Files/AnnotationETA/AnnotationETA-prefix.pch"; 410 | INFOPLIST_FILE = "Target Support Files/AnnotationETA/Info.plist"; 411 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 412 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 413 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 414 | MODULEMAP_FILE = "Target Support Files/AnnotationETA/AnnotationETA.modulemap"; 415 | MTL_ENABLE_DEBUG_INFO = YES; 416 | PRODUCT_NAME = AnnotationETA; 417 | SDKROOT = iphoneos; 418 | SKIP_INSTALL = YES; 419 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 420 | SWIFT_VERSION = 3.0; 421 | TARGETED_DEVICE_FAMILY = "1,2"; 422 | VERSIONING_SYSTEM = "apple-generic"; 423 | VERSION_INFO_PREFIX = ""; 424 | }; 425 | name = Debug; 426 | }; 427 | 13742A9EFF2ACF82522A5350C0B52B3A /* Release */ = { 428 | isa = XCBuildConfiguration; 429 | baseConfigurationReference = 5D6C741A8362ECDF252F6AF2B6DBB103 /* Pods-AnnotationETA_Tests.release.xcconfig */; 430 | buildSettings = { 431 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 432 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 433 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 434 | CURRENT_PROJECT_VERSION = 1; 435 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 436 | DEFINES_MODULE = YES; 437 | DYLIB_COMPATIBILITY_VERSION = 1; 438 | DYLIB_CURRENT_VERSION = 1; 439 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 440 | ENABLE_STRICT_OBJC_MSGSEND = YES; 441 | GCC_NO_COMMON_BLOCKS = YES; 442 | INFOPLIST_FILE = "Target Support Files/Pods-AnnotationETA_Tests/Info.plist"; 443 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 444 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 445 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 446 | MACH_O_TYPE = staticlib; 447 | MODULEMAP_FILE = "Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.modulemap"; 448 | MTL_ENABLE_DEBUG_INFO = NO; 449 | OTHER_LDFLAGS = ""; 450 | OTHER_LIBTOOLFLAGS = ""; 451 | PODS_ROOT = "$(SRCROOT)"; 452 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 453 | PRODUCT_NAME = Pods_AnnotationETA_Tests; 454 | SDKROOT = iphoneos; 455 | SKIP_INSTALL = YES; 456 | TARGETED_DEVICE_FAMILY = "1,2"; 457 | VERSIONING_SYSTEM = "apple-generic"; 458 | VERSION_INFO_PREFIX = ""; 459 | }; 460 | name = Release; 461 | }; 462 | 3A826593D08C7506D7ECD782BAE58817 /* Release */ = { 463 | isa = XCBuildConfiguration; 464 | baseConfigurationReference = CA61165128F76EE0B77501E847664D9C /* AnnotationETA.xcconfig */; 465 | buildSettings = { 466 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 467 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 468 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 469 | CURRENT_PROJECT_VERSION = 1; 470 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 471 | DEFINES_MODULE = YES; 472 | DYLIB_COMPATIBILITY_VERSION = 1; 473 | DYLIB_CURRENT_VERSION = 1; 474 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 475 | ENABLE_STRICT_OBJC_MSGSEND = YES; 476 | GCC_NO_COMMON_BLOCKS = YES; 477 | GCC_PREFIX_HEADER = "Target Support Files/AnnotationETA/AnnotationETA-prefix.pch"; 478 | INFOPLIST_FILE = "Target Support Files/AnnotationETA/Info.plist"; 479 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 480 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 481 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 482 | MODULEMAP_FILE = "Target Support Files/AnnotationETA/AnnotationETA.modulemap"; 483 | MTL_ENABLE_DEBUG_INFO = NO; 484 | PRODUCT_NAME = AnnotationETA; 485 | SDKROOT = iphoneos; 486 | SKIP_INSTALL = YES; 487 | SWIFT_VERSION = 3.0; 488 | TARGETED_DEVICE_FAMILY = "1,2"; 489 | VERSIONING_SYSTEM = "apple-generic"; 490 | VERSION_INFO_PREFIX = ""; 491 | }; 492 | name = Release; 493 | }; 494 | 8DED8AD26D381A6ACFF202E5217EC498 /* Release */ = { 495 | isa = XCBuildConfiguration; 496 | buildSettings = { 497 | ALWAYS_SEARCH_USER_PATHS = NO; 498 | CLANG_ANALYZER_NONNULL = YES; 499 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 500 | CLANG_CXX_LIBRARY = "libc++"; 501 | CLANG_ENABLE_MODULES = YES; 502 | CLANG_ENABLE_OBJC_ARC = YES; 503 | CLANG_WARN_BOOL_CONVERSION = YES; 504 | CLANG_WARN_CONSTANT_CONVERSION = YES; 505 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 506 | CLANG_WARN_EMPTY_BODY = YES; 507 | CLANG_WARN_ENUM_CONVERSION = YES; 508 | CLANG_WARN_INT_CONVERSION = YES; 509 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 510 | CLANG_WARN_UNREACHABLE_CODE = YES; 511 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 512 | CODE_SIGNING_REQUIRED = NO; 513 | COPY_PHASE_STRIP = YES; 514 | ENABLE_NS_ASSERTIONS = NO; 515 | GCC_C_LANGUAGE_STANDARD = gnu99; 516 | GCC_PREPROCESSOR_DEFINITIONS = ( 517 | "POD_CONFIGURATION_RELEASE=1", 518 | "$(inherited)", 519 | ); 520 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 521 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 522 | GCC_WARN_UNDECLARED_SELECTOR = YES; 523 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 524 | GCC_WARN_UNUSED_FUNCTION = YES; 525 | GCC_WARN_UNUSED_VARIABLE = YES; 526 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 527 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 528 | STRIP_INSTALLED_PRODUCT = NO; 529 | SYMROOT = "${SRCROOT}/../build"; 530 | VALIDATE_PRODUCT = YES; 531 | }; 532 | name = Release; 533 | }; 534 | 9E1E4E48AF2EAB23169E611BF694090A /* Debug */ = { 535 | isa = XCBuildConfiguration; 536 | buildSettings = { 537 | ALWAYS_SEARCH_USER_PATHS = NO; 538 | CLANG_ANALYZER_NONNULL = YES; 539 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 540 | CLANG_CXX_LIBRARY = "libc++"; 541 | CLANG_ENABLE_MODULES = YES; 542 | CLANG_ENABLE_OBJC_ARC = YES; 543 | CLANG_WARN_BOOL_CONVERSION = YES; 544 | CLANG_WARN_CONSTANT_CONVERSION = YES; 545 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 546 | CLANG_WARN_EMPTY_BODY = YES; 547 | CLANG_WARN_ENUM_CONVERSION = YES; 548 | CLANG_WARN_INT_CONVERSION = YES; 549 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 550 | CLANG_WARN_UNREACHABLE_CODE = YES; 551 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 552 | CODE_SIGNING_REQUIRED = NO; 553 | COPY_PHASE_STRIP = NO; 554 | ENABLE_TESTABILITY = YES; 555 | GCC_C_LANGUAGE_STANDARD = gnu99; 556 | GCC_DYNAMIC_NO_PIC = NO; 557 | GCC_OPTIMIZATION_LEVEL = 0; 558 | GCC_PREPROCESSOR_DEFINITIONS = ( 559 | "POD_CONFIGURATION_DEBUG=1", 560 | "DEBUG=1", 561 | "$(inherited)", 562 | ); 563 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 564 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 565 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 566 | GCC_WARN_UNDECLARED_SELECTOR = YES; 567 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 568 | GCC_WARN_UNUSED_FUNCTION = YES; 569 | GCC_WARN_UNUSED_VARIABLE = YES; 570 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 571 | ONLY_ACTIVE_ARCH = YES; 572 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 573 | STRIP_INSTALLED_PRODUCT = NO; 574 | SYMROOT = "${SRCROOT}/../build"; 575 | }; 576 | name = Debug; 577 | }; 578 | C645277A54EA865722BB3EAB383CE206 /* Debug */ = { 579 | isa = XCBuildConfiguration; 580 | baseConfigurationReference = 2A64DEFAAC9800EFE8ACC197B445AFC0 /* Pods-AnnotationETA_Example.debug.xcconfig */; 581 | buildSettings = { 582 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 583 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 584 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 585 | CURRENT_PROJECT_VERSION = 1; 586 | DEBUG_INFORMATION_FORMAT = dwarf; 587 | DEFINES_MODULE = YES; 588 | DYLIB_COMPATIBILITY_VERSION = 1; 589 | DYLIB_CURRENT_VERSION = 1; 590 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 591 | ENABLE_STRICT_OBJC_MSGSEND = YES; 592 | GCC_NO_COMMON_BLOCKS = YES; 593 | INFOPLIST_FILE = "Target Support Files/Pods-AnnotationETA_Example/Info.plist"; 594 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 595 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 596 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 597 | MACH_O_TYPE = staticlib; 598 | MODULEMAP_FILE = "Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.modulemap"; 599 | MTL_ENABLE_DEBUG_INFO = YES; 600 | OTHER_LDFLAGS = ""; 601 | OTHER_LIBTOOLFLAGS = ""; 602 | PODS_ROOT = "$(SRCROOT)"; 603 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 604 | PRODUCT_NAME = Pods_AnnotationETA_Example; 605 | SDKROOT = iphoneos; 606 | SKIP_INSTALL = YES; 607 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 608 | SWIFT_VERSION = 3.0; 609 | TARGETED_DEVICE_FAMILY = "1,2"; 610 | VERSIONING_SYSTEM = "apple-generic"; 611 | VERSION_INFO_PREFIX = ""; 612 | }; 613 | name = Debug; 614 | }; 615 | F550550A53BFE6050419FD83DDEFF118 /* Release */ = { 616 | isa = XCBuildConfiguration; 617 | baseConfigurationReference = EE0B075ADF82366408A31F76214BDBFD /* Pods-AnnotationETA_Example.release.xcconfig */; 618 | buildSettings = { 619 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 620 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 621 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 622 | CURRENT_PROJECT_VERSION = 1; 623 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 624 | DEFINES_MODULE = YES; 625 | DYLIB_COMPATIBILITY_VERSION = 1; 626 | DYLIB_CURRENT_VERSION = 1; 627 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 628 | ENABLE_STRICT_OBJC_MSGSEND = YES; 629 | GCC_NO_COMMON_BLOCKS = YES; 630 | INFOPLIST_FILE = "Target Support Files/Pods-AnnotationETA_Example/Info.plist"; 631 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 632 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 633 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 634 | MACH_O_TYPE = staticlib; 635 | MODULEMAP_FILE = "Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.modulemap"; 636 | MTL_ENABLE_DEBUG_INFO = NO; 637 | OTHER_LDFLAGS = ""; 638 | OTHER_LIBTOOLFLAGS = ""; 639 | PODS_ROOT = "$(SRCROOT)"; 640 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 641 | PRODUCT_NAME = Pods_AnnotationETA_Example; 642 | SDKROOT = iphoneos; 643 | SKIP_INSTALL = YES; 644 | SWIFT_VERSION = 3.0; 645 | TARGETED_DEVICE_FAMILY = "1,2"; 646 | VERSIONING_SYSTEM = "apple-generic"; 647 | VERSION_INFO_PREFIX = ""; 648 | }; 649 | name = Release; 650 | }; 651 | F724D1CC690F37FFAE5D1A2127D0101D /* Debug */ = { 652 | isa = XCBuildConfiguration; 653 | baseConfigurationReference = E9D9D723D9DF0CBB0D1C411E8F084E21 /* Pods-AnnotationETA_Tests.debug.xcconfig */; 654 | buildSettings = { 655 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 656 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 657 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 658 | CURRENT_PROJECT_VERSION = 1; 659 | DEBUG_INFORMATION_FORMAT = dwarf; 660 | DEFINES_MODULE = YES; 661 | DYLIB_COMPATIBILITY_VERSION = 1; 662 | DYLIB_CURRENT_VERSION = 1; 663 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 664 | ENABLE_STRICT_OBJC_MSGSEND = YES; 665 | GCC_NO_COMMON_BLOCKS = YES; 666 | INFOPLIST_FILE = "Target Support Files/Pods-AnnotationETA_Tests/Info.plist"; 667 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 668 | IPHONEOS_DEPLOYMENT_TARGET = 8.3; 669 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 670 | MACH_O_TYPE = staticlib; 671 | MODULEMAP_FILE = "Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.modulemap"; 672 | MTL_ENABLE_DEBUG_INFO = YES; 673 | OTHER_LDFLAGS = ""; 674 | OTHER_LIBTOOLFLAGS = ""; 675 | PODS_ROOT = "$(SRCROOT)"; 676 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 677 | PRODUCT_NAME = Pods_AnnotationETA_Tests; 678 | SDKROOT = iphoneos; 679 | SKIP_INSTALL = YES; 680 | TARGETED_DEVICE_FAMILY = "1,2"; 681 | VERSIONING_SYSTEM = "apple-generic"; 682 | VERSION_INFO_PREFIX = ""; 683 | }; 684 | name = Debug; 685 | }; 686 | /* End XCBuildConfiguration section */ 687 | 688 | /* Begin XCConfigurationList section */ 689 | 19DC9B5E0EAFDDE1917256F5BA6E2710 /* Build configuration list for PBXNativeTarget "AnnotationETA" */ = { 690 | isa = XCConfigurationList; 691 | buildConfigurations = ( 692 | 092B2B6E96B1CB12EF29E4F4047B0334 /* Debug */, 693 | 3A826593D08C7506D7ECD782BAE58817 /* Release */, 694 | ); 695 | defaultConfigurationIsVisible = 0; 696 | defaultConfigurationName = Release; 697 | }; 698 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 699 | isa = XCConfigurationList; 700 | buildConfigurations = ( 701 | 9E1E4E48AF2EAB23169E611BF694090A /* Debug */, 702 | 8DED8AD26D381A6ACFF202E5217EC498 /* Release */, 703 | ); 704 | defaultConfigurationIsVisible = 0; 705 | defaultConfigurationName = Release; 706 | }; 707 | BA7F1EDE6649AAAD051A6A25B9AF169D /* Build configuration list for PBXNativeTarget "Pods-AnnotationETA_Tests" */ = { 708 | isa = XCConfigurationList; 709 | buildConfigurations = ( 710 | F724D1CC690F37FFAE5D1A2127D0101D /* Debug */, 711 | 13742A9EFF2ACF82522A5350C0B52B3A /* Release */, 712 | ); 713 | defaultConfigurationIsVisible = 0; 714 | defaultConfigurationName = Release; 715 | }; 716 | DDE8F439509D5B335A0FD244849E7966 /* Build configuration list for PBXNativeTarget "Pods-AnnotationETA_Example" */ = { 717 | isa = XCConfigurationList; 718 | buildConfigurations = ( 719 | C645277A54EA865722BB3EAB383CE206 /* Debug */, 720 | F550550A53BFE6050419FD83DDEFF118 /* Release */, 721 | ); 722 | defaultConfigurationIsVisible = 0; 723 | defaultConfigurationName = Release; 724 | }; 725 | /* End XCConfigurationList section */ 726 | }; 727 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 728 | } 729 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/AnnotationETA.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/AnnotationETA-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_AnnotationETA : NSObject 3 | @end 4 | @implementation PodsDummy_AnnotationETA 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/AnnotationETA-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/AnnotationETA-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double AnnotationETAVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char AnnotationETAVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/AnnotationETA.modulemap: -------------------------------------------------------------------------------- 1 | framework module AnnotationETA { 2 | umbrella header "AnnotationETA-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/AnnotationETA.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/AnnotationETA 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/AnnotationETA/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## AnnotationETA 5 | 6 | Copyright (c) 2017 fortmarek 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2017 fortmarek <marekfort@me.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | AnnotationETA 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_AnnotationETA_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_AnnotationETA_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1"" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | 91 | if [[ "$CONFIGURATION" == "Debug" ]]; then 92 | install_framework "$BUILT_PRODUCTS_DIR/AnnotationETA/AnnotationETA.framework" 93 | fi 94 | if [[ "$CONFIGURATION" == "Release" ]]; then 95 | install_framework "$BUILT_PRODUCTS_DIR/AnnotationETA/AnnotationETA.framework" 96 | fi 97 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 98 | wait 99 | fi 100 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | *) 25 | TARGET_DEVICE_ARGS="--target-device mac" 26 | ;; 27 | esac 28 | 29 | install_resource() 30 | { 31 | if [[ "$1" = /* ]] ; then 32 | RESOURCE_PATH="$1" 33 | else 34 | RESOURCE_PATH="${PODS_ROOT}/$1" 35 | fi 36 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 37 | cat << EOM 38 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 39 | EOM 40 | exit 1 41 | fi 42 | case $RESOURCE_PATH in 43 | *.storyboard) 44 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 45 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 46 | ;; 47 | *.xib) 48 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 49 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 50 | ;; 51 | *.framework) 52 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 54 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 55 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | ;; 57 | *.xcdatamodel) 58 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 59 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 60 | ;; 61 | *.xcdatamodeld) 62 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 63 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 64 | ;; 65 | *.xcmappingmodel) 66 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 67 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 68 | ;; 69 | *.xcassets) 70 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 71 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 72 | ;; 73 | *) 74 | echo "$RESOURCE_PATH" 75 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 76 | ;; 77 | esac 78 | } 79 | 80 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 83 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | fi 86 | rm -f "$RESOURCES_TO_COPY" 87 | 88 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 89 | then 90 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 91 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 92 | while read line; do 93 | if [[ $line != "${PODS_ROOT}*" ]]; then 94 | XCASSET_FILES+=("$line") 95 | fi 96 | done <<<"$OTHER_XCASSETS" 97 | 98 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | fi 100 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_AnnotationETA_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_AnnotationETA_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA/AnnotationETA.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "AnnotationETA" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_AnnotationETA_Example { 2 | umbrella header "Pods-AnnotationETA_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Example/Pods-AnnotationETA_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA/AnnotationETA.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "AnnotationETA" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_AnnotationETA_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_AnnotationETA_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1"" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 91 | wait 92 | fi 93 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | *) 25 | TARGET_DEVICE_ARGS="--target-device mac" 26 | ;; 27 | esac 28 | 29 | install_resource() 30 | { 31 | if [[ "$1" = /* ]] ; then 32 | RESOURCE_PATH="$1" 33 | else 34 | RESOURCE_PATH="${PODS_ROOT}/$1" 35 | fi 36 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 37 | cat << EOM 38 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 39 | EOM 40 | exit 1 41 | fi 42 | case $RESOURCE_PATH in 43 | *.storyboard) 44 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 45 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 46 | ;; 47 | *.xib) 48 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 49 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 50 | ;; 51 | *.framework) 52 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 54 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 55 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | ;; 57 | *.xcdatamodel) 58 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 59 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 60 | ;; 61 | *.xcdatamodeld) 62 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 63 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 64 | ;; 65 | *.xcmappingmodel) 66 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 67 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 68 | ;; 69 | *.xcassets) 70 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 71 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 72 | ;; 73 | *) 74 | echo "$RESOURCE_PATH" 75 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 76 | ;; 77 | esac 78 | } 79 | 80 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 83 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | fi 86 | rm -f "$RESOURCES_TO_COPY" 87 | 88 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 89 | then 90 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 91 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 92 | while read line; do 93 | if [[ $line != "${PODS_ROOT}*" ]]; then 94 | XCASSET_FILES+=("$line") 95 | fi 96 | done <<<"$OTHER_XCASSETS" 97 | 98 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | fi 100 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_AnnotationETA_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_AnnotationETA_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA/AnnotationETA.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_AnnotationETA_Tests { 2 | umbrella header "Pods-AnnotationETA_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-AnnotationETA_Tests/Pods-AnnotationETA_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/AnnotationETA/AnnotationETA.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import XCTest 3 | import AnnotationETA 4 | 5 | class Tests: XCTestCase { 6 | 7 | override func setUp() { 8 | super.setUp() 9 | // Put setup code here. This method is called before the invocation of each test method in the class. 10 | } 11 | 12 | override func tearDown() { 13 | // Put teardown code here. This method is called after the invocation of each test method in the class. 14 | super.tearDown() 15 | } 16 | 17 | func testExample() { 18 | // This is an example of a functional test case. 19 | XCTAssert(true, "Pass") 20 | } 21 | 22 | func testPerformanceExample() { 23 | // This is an example of a performance test case. 24 | self.measure { 25 | // Put the code you want to measure the time of here. 26 | } 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 fortmarek 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AnnotationETA 2 | 3 | [![CI Status](http://img.shields.io/travis/fortmarek/AnnotationETA.svg?style=flat)](https://travis-ci.org/fortmarek/AnnotationETA) 4 | [![Version](https://img.shields.io/cocoapods/v/AnnotationETA.svg?style=flat)](http://cocoapods.org/pods/AnnotationETA) 5 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) 6 | [![License](https://img.shields.io/cocoapods/l/AnnotationETA.svg?style=flat)](http://cocoapods.org/pods/AnnotationETA) 7 | [![Platform](https://img.shields.io/cocoapods/p/AnnotationETA.svg?style=flat)](http://cocoapods.org/pods/AnnotationETA) 8 | 9 | 10 | ## AnnotationETA 11 | 12 | AnnotationETA will easily let you implement MapKit annotations with slick pins, custom colors and cool calloutView showing ETA out of the box! 13 | 14 | ![demo](https://github.com/fortmarek/AnnotationETA/blob/master/screens/annotationEta.gif) 15 | 16 | ## Example 17 | 18 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 19 | 20 | ## Installation 21 | 22 | ### CocoaPods 23 | 24 | AnnotationETA is available through [CocoaPods](http://cocoapods.org). To install 25 | it, simply add the following line to your Podfile: 26 | 27 | ```ruby 28 | pod "AnnotationETA" 29 | ``` 30 | 31 | ### Carthage 32 | 33 | To integrate AnnotationETA into your Xcode project using Carthage, specify it in your Cartfile: 34 | 35 | ```ruby 36 | github "fortmarek/AnnotationETA" 37 | ``` 38 | 39 | ### Manually 40 | 41 | Include all the files under AnnotationETA/Classes into your project. 42 | 43 | 44 | ## Set Up 45 | 46 | In `func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation)` set your `MKAnnotationView` to `AnnotationEtaView`: 47 | ```swift 48 | let annotationEtaView = EtaAnnotationView(annotation: annotation, reuseIdentifier: "etaAnnotationIdentifier") 49 | annotationView = annotationEtaView 50 | ``` 51 | 52 | To display ETA when the annotation is selected: 53 | 54 | ```swift 55 | func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { 56 | guard let annotation = view.annotation else {return} 57 | if annotation is MKUserLocation {return} 58 | 59 | view.leftCalloutAccessoryView = DirectionButton(destinationCoordinate: annotation.coordinate, locationManager: self.locationManager, transportType: .automobile, destinationName: annotation.title ?? "") 60 | } 61 | ``` 62 | 63 | ## Detail Button 64 | 65 | With detail button you can point to another view controller where you can display additional information about the annotation. Right under initializing etaAnnotationView write this: 66 | 67 | ```swift 68 | annotationEtaView.setDetailShowButton() 69 | annotationEtaView.rightButton?.addTarget(self, action: #selector(detailButtonTapped), for: .touchUpInside) 70 | ``` 71 | 72 | The action then should trigger function showing the detailViewController and also passing the information from the selected annotation, for example like this: 73 | 74 | ```swift 75 | func detailButtonTapped() { 76 | guard 77 | mapView.selectedAnnotations.count == 1, 78 | let detailViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "detailVC") as? DetailViewController 79 | else {return} 80 | 81 | detailViewController.annotation = mapView.selectedAnnotations[0] 82 | 83 | self.present(detailViewController, animated: true, completion: nil) 84 | } 85 | ``` 86 | 87 | ## Customization 88 | 89 | ### Pin Color 90 | 91 | Pin color not only sets the color of the pin, but left and rightCalloutAccessoryView as well 92 | 93 | ```swift 94 | annotationEtaView.pinColor = UIColor.blue 95 | ``` 96 | 97 | ## More 98 | 99 | For more detailed implementation take a look at the example or contact me. 100 | 101 | ## Author 102 | 103 | fortmarek, marekfort@me.com 104 | 105 | ## License 106 | 107 | AnnotationETA is available under the MIT license. See the LICENSE file for more info. 108 | 109 | 110 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /screens/annotationEta.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fortmarek/AnnotationETA/f04a4bc0c21c8a3e89a6b5ee726fc0730f1f403a/screens/annotationEta.gif --------------------------------------------------------------------------------