Dimitris Togias

add initial map view controller

...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
33 A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; 33 A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; };
34 A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; }; 34 A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; };
35 A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; }; 35 A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; };
36 + A080CFD628D170A20045A315 /* MapsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A080CFD428D170A20045A315 /* MapsViewController.swift */; };
37 + A080CFD728D170A20045A315 /* MapsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A080CFD528D170A20045A315 /* MapsViewController.xib */; };
36 A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; }; 38 A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; };
37 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; 39 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; };
38 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 40 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
...@@ -187,6 +189,8 @@ ...@@ -187,6 +189,8 @@
187 A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; 189 A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; };
188 A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; }; 190 A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; };
189 A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; }; 191 A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; };
192 + A080CFD428D170A20045A315 /* MapsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapsViewController.swift; sourceTree = "<group>"; };
193 + A080CFD528D170A20045A315 /* MapsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MapsViewController.xib; sourceTree = "<group>"; };
190 A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; }; 194 A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; };
191 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; 195 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; };
192 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; 196 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; };
...@@ -400,6 +404,13 @@ ...@@ -400,6 +404,13 @@
400 name = cells; 404 name = cells;
401 sourceTree = "<group>"; 405 sourceTree = "<group>";
402 }; 406 };
407 + A080CFD828D17F7A0045A315 /* controls */ = {
408 + isa = PBXGroup;
409 + children = (
410 + );
411 + name = controls;
412 + sourceTree = "<group>";
413 + };
403 C049E0423E2B72D796B777A3 /* Pods */ = { 414 C049E0423E2B72D796B777A3 /* Pods */ = {
404 isa = PBXGroup; 415 isa = PBXGroup;
405 children = ( 416 children = (
...@@ -433,9 +444,12 @@ ...@@ -433,9 +444,12 @@
433 1E108A9728A3FA9B0008B8E7 /* Info.plist */, 444 1E108A9728A3FA9B0008B8E7 /* Info.plist */,
434 1E108A8B28A3F8FF0008B8E7 /* Resources */, 445 1E108A8B28A3F8FF0008B8E7 /* Resources */,
435 A02F34042882B6E60086465F /* TelcoViewController.swift */, 446 A02F34042882B6E60086465F /* TelcoViewController.swift */,
447 + A080CFD828D17F7A0045A315 /* controls */,
436 A07936712885E65C00064122 /* models */, 448 A07936712885E65C00064122 /* models */,
437 A079366A2885CDDC00064122 /* analysis */, 449 A079366A2885CDDC00064122 /* analysis */,
438 A07936742885E96A00064122 /* utilities */, 450 A07936742885E96A00064122 /* utilities */,
451 + A080CFD428D170A20045A315 /* MapsViewController.swift */,
452 + A080CFD528D170A20045A315 /* MapsViewController.xib */,
439 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, 453 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */,
440 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, 454 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */,
441 E6A7785D282933E40045BBA8 /* CouponViewController.swift */, 455 E6A7785D282933E40045BBA8 /* CouponViewController.swift */,
...@@ -814,6 +828,7 @@ ...@@ -814,6 +828,7 @@
814 E6A778E5282933E60045BBA8 /* Main.storyboard in Resources */, 828 E6A778E5282933E60045BBA8 /* Main.storyboard in Resources */,
815 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */, 829 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */,
816 1E108A9228A3F9280008B8E7 /* pf_square_sans_pro_regular.ttf in Resources */, 830 1E108A9228A3F9280008B8E7 /* pf_square_sans_pro_regular.ttf in Resources */,
831 + A080CFD728D170A20045A315 /* MapsViewController.xib in Resources */,
817 E6A778EA282933E60045BBA8 /* WLNativeVideoTableViewCell.xib in Resources */, 832 E6A778EA282933E60045BBA8 /* WLNativeVideoTableViewCell.xib in Resources */,
818 1E108A9528A3F9280008B8E7 /* pf_square_sans_pro_bold_italic.ttf in Resources */, 833 1E108A9528A3F9280008B8E7 /* pf_square_sans_pro_bold_italic.ttf in Resources */,
819 E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */, 834 E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */,
...@@ -925,6 +940,7 @@ ...@@ -925,6 +940,7 @@
925 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, 940 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */,
926 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, 941 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */,
927 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, 942 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */,
943 + A080CFD628D170A20045A315 /* MapsViewController.swift in Sources */,
928 A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */, 944 A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */,
929 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, 945 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */,
930 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, 946 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */,
......
1 +//
2 +// MapsViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Βασιλης Σκουρας on 14/9/22.
6 +//
7 +
8 +import UIKit
9 +import MapKit
10 +
11 +class MapsViewController: UIViewController, MKMapViewDelegate {
12 +
13 + // ui
14 + @IBOutlet private var mapView: MKMapView!
15 +
16 + @IBOutlet private var titleView: UILabel!
17 + @IBOutlet private var nameImageView: UIImageView!
18 + @IBOutlet private var nameView: UILabel!
19 + @IBOutlet private var hoursView: UILabel!
20 + @IBOutlet private var phoneView: UILabel!
21 + @IBOutlet private var addressView: UILabel!
22 + @IBOutlet private var directionsButton: UIButton!
23 + @IBOutlet private var infoTopConstraint: NSLayoutConstraint!
24 +
25 + // public
26 + public var couponSet: swiftApi.CouponSetItemModel?
27 + var merchantsArray:Array<swiftApi.MerchantModel> = []
28 +
29 + //
30 + var loading: Bool = false
31 + let initialLocation = CLLocation(latitude: 38.0689416, longitude: 19.9906012) // greece
32 +
33 + //
34 + override func viewDidLoad() {
35 + super.viewDidLoad()
36 +
37 + self.hidesBottomBarWhenPushed = true
38 +
39 + self.infoTopConstraint.constant = 0
40 +
41 + setBackButton("ic_close")
42 + //setNavigationTitle(ccms?._titleOffer ?? "")
43 +
44 + mapView.delegate = self
45 + mapView.centerToLocation(initialLocation)
46 +
47 + //directionsButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Medium", size: 16)
48 + directionsButton.setTitle("Οδηγίες", for: .normal)
49 + directionsButton.setTitleColor(.white, for: .normal)
50 + directionsButton.backgroundColor = UIColor(red: 0.47, green: 0.75, blue: 0.08, alpha: 1.00)
51 + directionsButton.layer.cornerRadius = 12.0
52 + }
53 +
54 + // mvp
55 + @objc func load() {
56 +
57 + if (loading) {
58 + return;
59 + }
60 +
61 + showLoading()
62 +
63 + // TODO: adapt params
64 + let merchantUuid: String = couponSet!.merchant_uuid!
65 + swiftApi().getMultilingualMerchantsAsync([], false, 0.0, [], "", 0, [merchantUuid], getMerchantsCallback)
66 + showContent()
67 + }
68 +
69 + func getMerchantsCallback (_ merchantsData: Array<swiftApi.MerchantModel>?) -> Void {
70 + if (merchantsData != nil) {
71 + DispatchQueue.main.async {
72 + self.merchantsArray = merchantsData!
73 + self.loadMapPins()
74 + }
75 +
76 + return
77 + }
78 + }
79 +
80 + private func showLoading() {
81 +
82 + loading = true
83 + }
84 +
85 + private func showError() {
86 + }
87 +
88 + private func showContent() {
89 +
90 + loading = false
91 + }
92 +
93 + // private
94 + @IBAction func closeButtomAction(_ sender: Any) {
95 + hidePinDetailsView()
96 + }
97 +
98 + private func loadMapPins() {
99 + for item in merchantsArray {
100 + let pin = MKPointAnnotation()
101 + pin.coordinate = CLLocationCoordinate2D(latitude: item._latitude, longitude: item._longitude)
102 + mapView.addAnnotation(pin)
103 + }
104 + }
105 +
106 + private func loadPinDetailsView() {
107 + self.titleView.text = "INTERSPORT"
108 + self.nameImageView.image = UIImage(named: "intersport")
109 + self.nameView.text = "Intersport Χαλάνδρι"
110 + self.hoursView.text = "Δευτέρα - Τετάρτη"
111 + self.phoneView.text = "210-6230453"
112 + self.addressView.text = "ΕΘΝΙΚΗΣ ΑΝΤΙΣΤΑΣΕΩΝ 4 41"
113 + }
114 +
115 + private func showPinDetailsView() {
116 + self.infoTopConstraint.constant = -320
117 + UIView.animate(withDuration: 2.0) {
118 + self.view.layoutIfNeeded()
119 + }
120 + }
121 +
122 + private func hidePinDetailsView() {
123 + self.infoTopConstraint.constant = 0
124 + UIView.animate(withDuration: 2.0) {
125 + self.view.layoutIfNeeded()
126 + }
127 + }
128 +
129 + // map view delegate
130 + func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
131 + guard !(annotation is MKUserLocation) else {
132 + return nil
133 + }
134 +
135 + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "warply_custom")
136 + if (annotationView == nil) {
137 + annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "warply_custom")
138 + annotationView?.canShowCallout = false
139 + } else {
140 + annotationView?.annotation = annotation
141 + }
142 +
143 + // TODO: add custom pin image?
144 + annotationView?.image = UIImage(named: "custom")
145 +
146 + return annotationView
147 + }
148 +
149 + func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
150 + loadPinDetailsView()
151 + showPinDetailsView()
152 + }
153 +
154 + func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {
155 + hidePinDetailsView()
156 + }
157 +}
158 +
159 +private extension MKMapView {
160 +
161 + func centerToLocation(_ location: CLLocation, regionRadius: CLLocationDistance = 1000) {
162 + let coordinateRegion = MKCoordinateRegion(
163 + center: location.coordinate,
164 + latitudinalMeters: regionRadius,
165 + longitudinalMeters: regionRadius)
166 + setRegion(coordinateRegion, animated: true)
167 + }
168 +}
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
3 + <device id="retina6_1" orientation="portrait" appearance="light"/>
4 + <dependencies>
5 + <deployment identifier="iOS"/>
6 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
7 + <capability name="Safe area layout guides" minToolsVersion="9.0"/>
8 + <capability name="System colors in document resources" minToolsVersion="11.0"/>
9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 + </dependencies>
11 + <objects>
12 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MapsViewController" customModule="SwiftWarplyFramework" customModuleProvider="target">
13 + <connections>
14 + <outlet property="addressView" destination="syP-Hv-OGD" id="LUw-pI-3va"/>
15 + <outlet property="directionsButton" destination="bw3-J9-wHr" id="sSi-OK-KTA"/>
16 + <outlet property="hoursView" destination="u9U-A7-lbO" id="xm5-gQ-zjh"/>
17 + <outlet property="infoTopConstraint" destination="9av-UX-8VL" id="uKX-lw-OTH"/>
18 + <outlet property="mapView" destination="F1c-ck-cQa" id="cdx-31-BiL"/>
19 + <outlet property="nameImageView" destination="eDV-A1-pOO" id="JYq-eT-kEG"/>
20 + <outlet property="nameView" destination="MsK-eg-pkk" id="60t-lm-O8m"/>
21 + <outlet property="phoneView" destination="knh-D9-CuM" id="ES2-6e-vRx"/>
22 + <outlet property="titleView" destination="oVh-dv-f7a" id="dst-Ku-EFw"/>
23 + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
24 + </connections>
25 + </placeholder>
26 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
27 + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
28 + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
29 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
30 + <subviews>
31 + <mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="F1c-ck-cQa">
32 + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
33 + </mapView>
34 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zc1-ew-qcl">
35 + <rect key="frame" x="0.0" y="576" width="414" height="320"/>
36 + <subviews>
37 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="INTERSPORT" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oVh-dv-f7a" userLabel="Title">
38 + <rect key="frame" x="30" y="20" width="304" height="30"/>
39 + <constraints>
40 + <constraint firstAttribute="height" constant="30" id="Gf2-VN-pNV"/>
41 + </constraints>
42 + <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
43 + <nil key="textColor"/>
44 + <nil key="highlightedColor"/>
45 + </label>
46 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lEb-V2-2FC" userLabel="Close">
47 + <rect key="frame" x="354" y="20" width="30" height="30"/>
48 + <constraints>
49 + <constraint firstAttribute="width" constant="30" id="gnd-qn-qo5"/>
50 + <constraint firstAttribute="height" constant="30" id="oeu-zs-b1J"/>
51 + </constraints>
52 + <state key="normal" title="Button"/>
53 + <buttonConfiguration key="configuration" style="plain"/>
54 + <connections>
55 + <action selector="closeButtomAction:" destination="-1" eventType="touchUpOutside" id="0NJ-C9-lhC"/>
56 + </connections>
57 + </button>
58 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F55-qj-PDc" userLabel="LineTop">
59 + <rect key="frame" x="10" y="52" width="394" height="1"/>
60 + <constraints>
61 + <constraint firstAttribute="height" constant="1" id="18a-J3-UZm"/>
62 + </constraints>
63 + </view>
64 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="eDV-A1-pOO" userLabel="NameLogo">
65 + <rect key="frame" x="30" y="78" width="30" height="30"/>
66 + <constraints>
67 + <constraint firstAttribute="width" constant="30" id="IjG-Iw-fIq"/>
68 + <constraint firstAttribute="height" constant="30" id="LnS-gV-hIi"/>
69 + </constraints>
70 + </imageView>
71 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Intersport Χαλανδρίου" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MsK-eg-pkk" userLabel="NameLabel">
72 + <rect key="frame" x="70" y="74" width="314" height="18"/>
73 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/>
74 + <nil key="textColor"/>
75 + <nil key="highlightedColor"/>
76 + </label>
77 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SHs-vI-jD7" userLabel="LineMiddle">
78 + <rect key="frame" x="10" y="133" width="394" height="1"/>
79 + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
80 + <constraints>
81 + <constraint firstAttribute="height" constant="1" id="hMo-qH-T2k"/>
82 + </constraints>
83 + </view>
84 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="KhY-nt-uwH" userLabel="phoneIcon">
85 + <rect key="frame" x="30" y="164" width="20" height="20"/>
86 + <constraints>
87 + <constraint firstAttribute="height" constant="20" id="1rt-pN-Dld"/>
88 + <constraint firstAttribute="width" constant="20" id="3Rd-ir-r7Q"/>
89 + </constraints>
90 + </imageView>
91 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="210-6230543" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="knh-D9-CuM" userLabel="phoneLabel">
92 + <rect key="frame" x="60" y="154" width="324" height="40"/>
93 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/>
94 + <nil key="textColor"/>
95 + <nil key="highlightedColor"/>
96 + </label>
97 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sAf-f8-8jc" userLabel="LineBottom">
98 + <rect key="frame" x="10" y="214" width="394" height="1"/>
99 + <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
100 + <constraints>
101 + <constraint firstAttribute="height" constant="1" id="vSP-6I-Lz6"/>
102 + </constraints>
103 + </view>
104 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Bic-c4-J9E" userLabel="AddressIcon">
105 + <rect key="frame" x="30" y="240.5" width="20" height="20"/>
106 + <constraints>
107 + <constraint firstAttribute="height" constant="20" id="A8o-MY-I6f"/>
108 + <constraint firstAttribute="width" constant="20" id="Xma-bp-6IZ"/>
109 + </constraints>
110 + </imageView>
111 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="ΕΘΝΙΚΗΣ ΑΝΤΙΣΤΑΣΕΩΣ 4 41" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="syP-Hv-OGD" userLabel="AddressLabel">
112 + <rect key="frame" x="60" y="235" width="247" height="31"/>
113 + <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="15"/>
114 + <nil key="textColor"/>
115 + <nil key="highlightedColor"/>
116 + </label>
117 + <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bw3-J9-wHr" userLabel="Directions">
118 + <rect key="frame" x="317" y="235" width="67" height="31"/>
119 + <state key="normal" title="Button"/>
120 + <buttonConfiguration key="configuration" style="plain" title="Button"/>
121 + </button>
122 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" text="Δευτέρα - Τετάρτη" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u9U-A7-lbO" userLabel="HoursLabel">
123 + <rect key="frame" x="70" y="94" width="314" height="18"/>
124 + <fontDescription key="fontDescription" type="system" pointSize="15"/>
125 + <color key="textColor" systemColor="systemGray2Color"/>
126 + <nil key="highlightedColor"/>
127 + </label>
128 + </subviews>
129 + <viewLayoutGuide key="safeArea" id="XS2-AR-3j9"/>
130 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
131 + <constraints>
132 + <constraint firstItem="u9U-A7-lbO" firstAttribute="leading" secondItem="eDV-A1-pOO" secondAttribute="trailing" constant="10" id="0Z2-uE-kRe"/>
133 + <constraint firstItem="XS2-AR-3j9" firstAttribute="trailing" secondItem="MsK-eg-pkk" secondAttribute="trailing" constant="30" id="1qW-i8-MRk"/>
134 + <constraint firstItem="XS2-AR-3j9" firstAttribute="bottom" secondItem="bw3-J9-wHr" secondAttribute="bottom" constant="20" id="3vm-pn-qpa"/>
135 + <constraint firstItem="lEb-V2-2FC" firstAttribute="top" secondItem="Zc1-ew-qcl" secondAttribute="top" constant="20" id="5bY-RU-ons"/>
136 + <constraint firstItem="knh-D9-CuM" firstAttribute="top" secondItem="SHs-vI-jD7" secondAttribute="bottom" constant="20" id="61g-5C-XbI"/>
137 + <constraint firstItem="sAf-f8-8jc" firstAttribute="leading" secondItem="XS2-AR-3j9" secondAttribute="leading" constant="10" id="7W6-cn-WdZ"/>
138 + <constraint firstItem="bw3-J9-wHr" firstAttribute="centerY" secondItem="Bic-c4-J9E" secondAttribute="centerY" id="AHw-0D-gur"/>
139 + <constraint firstItem="SHs-vI-jD7" firstAttribute="top" secondItem="eDV-A1-pOO" secondAttribute="bottom" constant="25" id="D8j-Qh-CHB"/>
140 + <constraint firstItem="KhY-nt-uwH" firstAttribute="leading" secondItem="XS2-AR-3j9" secondAttribute="leading" constant="30" id="Dok-gZ-xf1"/>
141 + <constraint firstItem="SHs-vI-jD7" firstAttribute="leading" secondItem="Zc1-ew-qcl" secondAttribute="leading" constant="10" id="Lj8-XN-HTj"/>
142 + <constraint firstAttribute="trailing" secondItem="F55-qj-PDc" secondAttribute="trailing" constant="10" id="MCj-ek-cnb"/>
143 + <constraint firstAttribute="trailing" secondItem="lEb-V2-2FC" secondAttribute="trailing" constant="30" id="NcX-rr-7OU"/>
144 + <constraint firstItem="syP-Hv-OGD" firstAttribute="leading" secondItem="Bic-c4-J9E" secondAttribute="trailing" constant="10" id="Rl4-cn-VTG"/>
145 + <constraint firstAttribute="trailing" secondItem="SHs-vI-jD7" secondAttribute="trailing" constant="10" id="Smw-Bv-Qlr"/>
146 + <constraint firstItem="lEb-V2-2FC" firstAttribute="leading" secondItem="oVh-dv-f7a" secondAttribute="trailing" constant="20" id="ULP-b9-ToV"/>
147 + <constraint firstItem="MsK-eg-pkk" firstAttribute="leading" secondItem="eDV-A1-pOO" secondAttribute="trailing" constant="10" id="Vg7-xl-oA2"/>
148 + <constraint firstItem="bw3-J9-wHr" firstAttribute="top" secondItem="sAf-f8-8jc" secondAttribute="bottom" constant="20" id="YhG-Th-URU"/>
149 + <constraint firstItem="oVh-dv-f7a" firstAttribute="leading" secondItem="Zc1-ew-qcl" secondAttribute="leading" constant="30" id="Zd1-SB-SlA"/>
150 + <constraint firstItem="KhY-nt-uwH" firstAttribute="top" secondItem="SHs-vI-jD7" secondAttribute="bottom" constant="30" id="a6s-J0-5rJ"/>
151 + <constraint firstItem="knh-D9-CuM" firstAttribute="leading" secondItem="KhY-nt-uwH" secondAttribute="trailing" constant="10" id="aeR-MK-4WB"/>
152 + <constraint firstItem="eDV-A1-pOO" firstAttribute="leading" secondItem="XS2-AR-3j9" secondAttribute="leading" constant="30" id="bkK-59-wXK"/>
153 + <constraint firstAttribute="height" constant="320" id="eIo-xG-BnE"/>
154 + <constraint firstItem="u9U-A7-lbO" firstAttribute="centerY" secondItem="eDV-A1-pOO" secondAttribute="centerY" constant="10" id="gFw-90-gXL"/>
155 + <constraint firstItem="oVh-dv-f7a" firstAttribute="top" secondItem="Zc1-ew-qcl" secondAttribute="top" constant="20" id="gIA-8o-Pv8"/>
156 + <constraint firstItem="XS2-AR-3j9" firstAttribute="trailing" secondItem="u9U-A7-lbO" secondAttribute="trailing" constant="30" id="hZz-zi-NzM"/>
157 + <constraint firstItem="XS2-AR-3j9" firstAttribute="trailing" secondItem="sAf-f8-8jc" secondAttribute="trailing" constant="10" id="hn5-U5-rvW"/>
158 + <constraint firstItem="sAf-f8-8jc" firstAttribute="top" secondItem="SHs-vI-jD7" secondAttribute="bottom" constant="80" id="htI-gJ-mSm"/>
159 + <constraint firstAttribute="trailing" secondItem="bw3-J9-wHr" secondAttribute="trailing" constant="30" id="hya-Ns-ldi"/>
160 + <constraint firstItem="Bic-c4-J9E" firstAttribute="leading" secondItem="Zc1-ew-qcl" secondAttribute="leading" constant="30" id="iUf-BZ-0kl"/>
161 + <constraint firstItem="F55-qj-PDc" firstAttribute="leading" secondItem="Zc1-ew-qcl" secondAttribute="leading" constant="10" id="jK6-2e-p3v"/>
162 + <constraint firstItem="XS2-AR-3j9" firstAttribute="bottom" secondItem="syP-Hv-OGD" secondAttribute="bottom" constant="20" id="luv-Gm-76K"/>
163 + <constraint firstItem="sAf-f8-8jc" firstAttribute="top" secondItem="knh-D9-CuM" secondAttribute="bottom" constant="20" id="m6I-QE-hbq"/>
164 + <constraint firstItem="eDV-A1-pOO" firstAttribute="top" secondItem="F55-qj-PDc" secondAttribute="bottom" constant="25" id="nAA-6u-CUo"/>
165 + <constraint firstItem="XS2-AR-3j9" firstAttribute="trailing" secondItem="knh-D9-CuM" secondAttribute="trailing" constant="30" id="pFB-4b-xx9"/>
166 + <constraint firstItem="MsK-eg-pkk" firstAttribute="centerY" secondItem="eDV-A1-pOO" secondAttribute="centerY" constant="-10" id="wpA-Xv-RdU"/>
167 + <constraint firstItem="syP-Hv-OGD" firstAttribute="top" secondItem="sAf-f8-8jc" secondAttribute="bottom" constant="20" id="xD6-zI-9Nl"/>
168 + <constraint firstItem="SHs-vI-jD7" firstAttribute="top" secondItem="F55-qj-PDc" secondAttribute="bottom" constant="80" id="xPl-UV-cMd"/>
169 + <constraint firstItem="bw3-J9-wHr" firstAttribute="leading" secondItem="syP-Hv-OGD" secondAttribute="trailing" constant="10" id="zAU-89-R2t"/>
170 + </constraints>
171 + </view>
172 + </subviews>
173 + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
174 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
175 + <constraints>
176 + <constraint firstItem="Zc1-ew-qcl" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="0dW-tS-Vxe"/>
177 + <constraint firstItem="Zc1-ew-qcl" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="bottom" constant="-320" id="9av-UX-8VL"/>
178 + <constraint firstItem="F1c-ck-cQa" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="GSB-K2-QjT"/>
179 + <constraint firstItem="Zc1-ew-qcl" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="LKw-N3-e8B"/>
180 + <constraint firstItem="F1c-ck-cQa" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="bxr-2d-8JA"/>
181 + <constraint firstItem="F1c-ck-cQa" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="n6F-h0-5ip"/>
182 + <constraint firstAttribute="bottom" secondItem="F1c-ck-cQa" secondAttribute="bottom" id="tGx-bL-7cM"/>
183 + </constraints>
184 + <point key="canvasLocation" x="137.68115942028987" y="120.53571428571428"/>
185 + </view>
186 + </objects>
187 + <resources>
188 + <systemColor name="systemBackgroundColor">
189 + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
190 + </systemColor>
191 + <systemColor name="systemGray2Color">
192 + <color red="0.68235294117647061" green="0.68235294117647061" blue="0.69803921568627447" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
193 + </systemColor>
194 + </resources>
195 +</document>