Showing
6 changed files
with
317 additions
and
2 deletions
... | @@ -14,6 +14,7 @@ | ... | @@ -14,6 +14,7 @@ |
14 | 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1E108A9128A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf */; }; | 14 | 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1E108A9128A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf */; }; |
15 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */ = {isa = PBXBuildFile; productRef = 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */; }; | 15 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */ = {isa = PBXBuildFile; productRef = 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */; }; |
16 | 1E74838D28378AF40042A589 /* CouponBarcodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E74838C28378AF40042A589 /* CouponBarcodeViewController.swift */; }; | 16 | 1E74838D28378AF40042A589 /* CouponBarcodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E74838C28378AF40042A589 /* CouponBarcodeViewController.swift */; }; |
17 | + 1E87A9EF28C2021200C79F90 /* ContextualViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */; }; | ||
17 | 1EA1AF0A2835346A008998AA /* CouponsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */; }; | 18 | 1EA1AF0A2835346A008998AA /* CouponsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */; }; |
18 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */; }; | 19 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */; }; |
19 | 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AA28816B680063777A /* ShareViewController.swift */; }; | 20 | 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AA28816B680063777A /* ShareViewController.swift */; }; |
... | @@ -169,6 +170,7 @@ | ... | @@ -169,6 +170,7 @@ |
169 | 1E108A9128A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = pf_square_sans_pro_bold.ttf; sourceTree = "<group>"; }; | 170 | 1E108A9128A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = pf_square_sans_pro_bold.ttf; sourceTree = "<group>"; }; |
170 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; | 171 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; |
171 | 1E74838C28378AF40042A589 /* CouponBarcodeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponBarcodeViewController.swift; sourceTree = "<group>"; }; | 172 | 1E74838C28378AF40042A589 /* CouponBarcodeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponBarcodeViewController.swift; sourceTree = "<group>"; }; |
173 | + 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextualViewController.swift; sourceTree = "<group>"; }; | ||
172 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsTableViewCell.swift; sourceTree = "<group>"; }; | 174 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsTableViewCell.swift; sourceTree = "<group>"; }; |
173 | 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxTableViewCell.swift; sourceTree = "<group>"; }; | 175 | 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxTableViewCell.swift; sourceTree = "<group>"; }; |
174 | 1EB236AA28816B680063777A /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; }; | 176 | 1EB236AA28816B680063777A /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; }; |
... | @@ -449,6 +451,7 @@ | ... | @@ -449,6 +451,7 @@ |
449 | E6A77A35282BB4CB0045BBA8 /* MakeItAPresentViewController.swift */, | 451 | E6A77A35282BB4CB0045BBA8 /* MakeItAPresentViewController.swift */, |
450 | E6A7785A282933E40045BBA8 /* Helpers */, | 452 | E6A7785A282933E40045BBA8 /* Helpers */, |
451 | E6A77861282933E50045BBA8 /* Main.storyboard */, | 453 | E6A77861282933E50045BBA8 /* Main.storyboard */, |
454 | + 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */, | ||
452 | 1EB236AA28816B680063777A /* ShareViewController.swift */, | 455 | 1EB236AA28816B680063777A /* ShareViewController.swift */, |
453 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, | 456 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, |
454 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, | 457 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, |
... | @@ -874,6 +877,7 @@ | ... | @@ -874,6 +877,7 @@ |
874 | E6A778E2282933E60045BBA8 /* CouponsViewController.swift in Sources */, | 877 | E6A778E2282933E60045BBA8 /* CouponsViewController.swift in Sources */, |
875 | E6A77930282933E70045BBA8 /* UIImageView+AFNetworking.m in Sources */, | 878 | E6A77930282933E70045BBA8 /* UIImageView+AFNetworking.m in Sources */, |
876 | E6A77900282933E60045BBA8 /* WLInboxItemViewController.m in Sources */, | 879 | E6A77900282933E60045BBA8 /* WLInboxItemViewController.m in Sources */, |
880 | + 1E87A9EF28C2021200C79F90 /* ContextualViewController.swift in Sources */, | ||
877 | E6A7793E282933E70045BBA8 /* AFHTTPSessionManager.m in Sources */, | 881 | E6A7793E282933E70045BBA8 /* AFHTTPSessionManager.m in Sources */, |
878 | E6A77933282933E70045BBA8 /* UIButton+AFNetworking.m in Sources */, | 882 | E6A77933282933E70045BBA8 /* UIButton+AFNetworking.m in Sources */, |
879 | E6A77919282933E60045BBA8 /* Warply.m in Sources */, | 883 | E6A77919282933E60045BBA8 /* Warply.m in Sources */, | ... | ... |
No preview for this file type
1 | +// | ||
2 | +// ContextualViewController.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 2/9/22. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +@objc public class ContextualViewController: UIViewController, UIPopoverControllerDelegate { | ||
11 | + @IBOutlet weak var mainView: UIView! | ||
12 | + @IBOutlet weak var backgroundImage: UIImageView! | ||
13 | + @IBOutlet weak var scrollView: UIScrollView! | ||
14 | + @IBOutlet weak var scrollContentView: UIView! | ||
15 | + @IBOutlet weak var couponImage: UIImageView! | ||
16 | + @IBOutlet weak var couponImageHeight: NSLayoutConstraint! | ||
17 | + @IBOutlet weak var nameLabel: UILabel! | ||
18 | + @IBOutlet weak var descriptionLabel: UILabel! | ||
19 | + @IBOutlet weak var redeemButton: UIButton! | ||
20 | + | ||
21 | + public var ccms: swiftApi.LoyaltyContextualOfferModel? | ||
22 | + | ||
23 | + var selectedNumber: String = "" | ||
24 | + public var numbersList: Array<String> = [] | ||
25 | + | ||
26 | + let uiscreen: CGRect = UIScreen.main.bounds | ||
27 | + | ||
28 | + | ||
29 | + public override func viewDidLoad() { | ||
30 | + super.viewDidLoad() | ||
31 | + | ||
32 | + self.hidesBottomBarWhenPushed = true | ||
33 | + | ||
34 | + // Do any additional setup after loading the view. | ||
35 | + getProfileRequest() | ||
36 | + | ||
37 | + setBackButton() | ||
38 | +// setNavigationTitle("") | ||
39 | + | ||
40 | + backgroundImage.image = UIImage(named: "coupons_scrollview_white", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil) | ||
41 | + | ||
42 | + scrollView.clipsToBounds = true | ||
43 | + scrollView.layer.cornerRadius = 30 | ||
44 | + scrollView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius | ||
45 | + | ||
46 | + couponImage.load(link: ccms?._imageUrl ?? "", placeholder: UIImage(), cache: URLCache()) | ||
47 | + couponImage.contentMode = .scaleAspectFill | ||
48 | + couponImageHeight.constant = self.uiscreen.height * 0.25 | ||
49 | + | ||
50 | + nameLabel.text = ccms?._title ?? "" | ||
51 | + descriptionLabel.text = ccms?._subtitle ?? "" | ||
52 | + | ||
53 | + redeemButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Medium", size: 16) | ||
54 | + redeemButton.setTitle("Ενεργοποίηση", for: .normal) | ||
55 | + redeemButton.setTitleColor(.white, for: .normal) | ||
56 | + redeemButton.backgroundColor = UIColor(red: 0.47, green: 0.75, blue: 0.08, alpha: 1.00) | ||
57 | + redeemButton.layer.cornerRadius = 12.0 | ||
58 | + | ||
59 | + } | ||
60 | + | ||
61 | + // MARK: - Functions | ||
62 | + func showConfirmDialog() -> Void { | ||
63 | + | ||
64 | + let alert = UIAlertController(title: "Ενεργοποίηση υπηρεσίας", message: "Θέλετε να γίνει ενεργοποίηση στο Κινητό μου;", preferredStyle: .alert) | ||
65 | + alert.addAction(UIAlertAction(title: "Ενεργοποίηση", style: .default, handler: { action in | ||
66 | + switch action.style{ | ||
67 | + case .default: | ||
68 | + self.submitOrderRequest() | ||
69 | + | ||
70 | + case .cancel: | ||
71 | + print("cancel") | ||
72 | + | ||
73 | + case .destructive: | ||
74 | + print("destructive") | ||
75 | + | ||
76 | + } | ||
77 | + })) | ||
78 | + alert.addAction(UIAlertAction(title: "Άκυρο", style: .default, handler: { action in | ||
79 | + switch action.style{ | ||
80 | + case .default: | ||
81 | + print("default") | ||
82 | + | ||
83 | + case .cancel: | ||
84 | + print("cancel") | ||
85 | + | ||
86 | + case .destructive: | ||
87 | + print("destructive") | ||
88 | + | ||
89 | + } | ||
90 | + })) | ||
91 | + self.present(alert, animated: true, completion: nil) | ||
92 | + } | ||
93 | + | ||
94 | + func showDialog(_ alertTitle: String, _ alertSubTitle: String) -> Void { | ||
95 | + | ||
96 | + let alert = UIAlertController(title: alertTitle, message: alertSubTitle, preferredStyle: .alert) | ||
97 | + alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in | ||
98 | + switch action.style{ | ||
99 | + case .default: | ||
100 | + print("default") | ||
101 | + | ||
102 | + case .cancel: | ||
103 | + print("cancel") | ||
104 | + | ||
105 | + case .destructive: | ||
106 | + print("destructive") | ||
107 | + | ||
108 | + } | ||
109 | + })) | ||
110 | + self.present(alert, animated: true, completion: nil) | ||
111 | + } | ||
112 | + | ||
113 | + | ||
114 | + // MARK: - API CALLS | ||
115 | + func getProfileRequest() { | ||
116 | + swiftApi().getProfileAsync(getProfileCallback) | ||
117 | + } | ||
118 | + | ||
119 | + func getProfileCallback (_ profileData: swiftApi.ProfileModel?) -> Void { | ||
120 | + if (profileData != nil) { | ||
121 | + DispatchQueue.main.async { | ||
122 | + self.numbersList = profileData?._msisdnList ?? [] | ||
123 | + } | ||
124 | + } else { | ||
125 | + } | ||
126 | + } | ||
127 | + | ||
128 | + func submitOrderRequest() { | ||
129 | + swiftApi().submitOrderAsync(campaign_session_uuid: "", user_msisdn: self.selectedNumber, businessService: (ccms?._businessService ?? ""), offerName: (ccms?._offerName ?? ""), productType: (ccms?._productType ?? ""), provDuration: (ccms?._provDuration ?? ""), noOfRecurrance: (ccms?._noOfRecurrance ?? ""), price: (ccms?._price ?? ""), discount: (ccms?._discount ?? ""), voiceCategory: (ccms?._voiceCategory ?? ""), dataCategory: (ccms?._dataCategory ?? ""), minsValue: (ccms?._minsValue ?? ""), dataValue: (ccms?._dataValue ?? ""), provStepValueMins: (ccms?._provStepValueMins ?? ""), | ||
130 | + OfferAudienceLevel: (ccms?._offerAudienceLevel ?? ""), UACIOfferTrackingCode: (ccms?._uaciOfferTrackingCode ?? ""), OFFERCODE1: (ccms?._offerCode1 ?? ""), SCORE: (ccms?._score ?? ""), ZONE: (ccms?._zone ?? ""), WAVE: (ccms?._wave ?? ""), VALIDITY: (ccms?._validity ?? ""), TREATMENT_CODE: (ccms?._treatmentCode ?? ""), | ||
131 | + submitOrderCallback) | ||
132 | + } | ||
133 | + | ||
134 | + func submitOrderCallback (_ response: swiftApi.GenericResponseModel?) -> Void { | ||
135 | + if (response != nil) { | ||
136 | + DispatchQueue.main.async { | ||
137 | + if (response?.getStatus == 1) { | ||
138 | + self.showDialog("Το αίτημά σου ολοκληρώθηκε επιτυχώς!","Θα ενημερωθείς άμεσα για την ενεργοποίηση του πακέτου σου.") | ||
139 | + // self.postEventRequest() | ||
140 | + | ||
141 | + } else { | ||
142 | + self.showDialog("Αποτυχία","Κάτι πήγε στραβά") | ||
143 | + } | ||
144 | + } | ||
145 | + } else { | ||
146 | + self.showDialog("Αποτυχία","Κάτι πήγε στραβά") | ||
147 | + } | ||
148 | + } | ||
149 | + | ||
150 | + // MARK: - Actions | ||
151 | + | ||
152 | + @IBAction func redeemButtomAction(_ sender: Any) { | ||
153 | + self.numbersPopupTapped(sender) | ||
154 | + } | ||
155 | + | ||
156 | +} | ||
157 | + | ||
158 | +// MARK: NumbersPopup | ||
159 | +extension ContextualViewController: NumbersPopupDelegate { | ||
160 | + @objc func numbersPopupTapped(_ sender: Any) { | ||
161 | + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) | ||
162 | + let pp = storyboard.instantiateViewController(withIdentifier: "NumberPopupViewController") as! SwiftWarplyFramework.NumberPopupViewController | ||
163 | + pp.InitWithController(controller: self, | ||
164 | + numbersList: self.numbersList, | ||
165 | + sender: sender, | ||
166 | + delegate: self) | ||
167 | + } | ||
168 | + | ||
169 | + func presentedPopup() { | ||
170 | +// Code for when popup is presented | ||
171 | + } | ||
172 | + | ||
173 | + func dismissedPopup() { | ||
174 | +// Code for when popup is dismissed | ||
175 | + } | ||
176 | + | ||
177 | + func optionSelected(_ option: String) { | ||
178 | +// Code for when option is selected | ||
179 | + self.selectedNumber = option | ||
180 | + DispatchQueue.main.async { | ||
181 | + self.showConfirmDialog() | ||
182 | + } | ||
183 | + } | ||
184 | +} |
... | @@ -160,7 +160,10 @@ extension GiftsViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -160,7 +160,10 @@ extension GiftsViewController: UITableViewDelegate, UITableViewDataSource{ |
160 | 160 | ||
161 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 161 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
162 | if (campaigns[indexPath.row]._ccms != nil) { | 162 | if (campaigns[indexPath.row]._ccms != nil) { |
163 | - // TODO: open new screen with param campaigns[indexPath.row]._ccms | 163 | + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) |
164 | + let vc = storyboard.instantiateViewController(withIdentifier: "ContextualViewController") as! SwiftWarplyFramework.ContextualViewController | ||
165 | + vc.ccms = campaigns[indexPath.row]._ccms | ||
166 | + self.navigationController?.pushViewController(vc, animated: true) | ||
164 | 167 | ||
165 | } else if (campaigns[indexPath.row]._type != nil && campaigns[indexPath.row]._type == "telco") { | 168 | } else if (campaigns[indexPath.row]._type != nil && campaigns[indexPath.row]._type == "telco") { |
166 | let ccmsCampaigns = swiftApi().getCCMSLoyaltyCampaigns() | 169 | let ccmsCampaigns = swiftApi().getCCMSLoyaltyCampaigns() | ... | ... |
... | @@ -110,7 +110,10 @@ extension MFYViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -110,7 +110,10 @@ extension MFYViewController: UITableViewDelegate, UITableViewDataSource{ |
110 | 110 | ||
111 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | 111 | public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
112 | if (campaigns[indexPath.row]._ccms != nil) { | 112 | if (campaigns[indexPath.row]._ccms != nil) { |
113 | - // TODO: open new screen with param campaigns[indexPath.row]._ccms | 113 | + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) |
114 | + let vc = storyboard.instantiateViewController(withIdentifier: "ContextualViewController") as! SwiftWarplyFramework.ContextualViewController | ||
115 | + vc.ccms = campaigns[indexPath.row]._ccms | ||
116 | + self.navigationController?.pushViewController(vc, animated: true) | ||
114 | 117 | ||
115 | } else if (campaigns[indexPath.row]._type != nil && campaigns[indexPath.row]._type == "telco") { | 118 | } else if (campaigns[indexPath.row]._type != nil && campaigns[indexPath.row]._type == "telco") { |
116 | let ccmsCampaigns = swiftApi().getCCMSLoyaltyCampaigns() | 119 | let ccmsCampaigns = swiftApi().getCCMSLoyaltyCampaigns() | ... | ... |
... | @@ -2515,6 +2515,127 @@ | ... | @@ -2515,6 +2515,127 @@ |
2515 | </objects> | 2515 | </objects> |
2516 | <point key="canvasLocation" x="4654" y="129"/> | 2516 | <point key="canvasLocation" x="4654" y="129"/> |
2517 | </scene> | 2517 | </scene> |
2518 | + <!--Contextual View Controller--> | ||
2519 | + <scene sceneID="PWP-CL-8VJ"> | ||
2520 | + <objects> | ||
2521 | + <viewController storyboardIdentifier="ContextualViewController" id="KhM-xm-T4L" customClass="ContextualViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController"> | ||
2522 | + <view key="view" contentMode="scaleToFill" id="oKn-aG-Yzh"> | ||
2523 | + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | ||
2524 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
2525 | + <subviews> | ||
2526 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gV8-Ze-9jD"> | ||
2527 | + <rect key="frame" x="0.0" y="44" width="414" height="852"/> | ||
2528 | + <subviews> | ||
2529 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupons_scrollview_white" translatesAutoresizingMaskIntoConstraints="NO" id="7rs-yJ-Kvn"> | ||
2530 | + <rect key="frame" x="0.0" y="0.0" width="414" height="852"/> | ||
2531 | + </imageView> | ||
2532 | + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fVG-0L-fYi"> | ||
2533 | + <rect key="frame" x="0.0" y="2" width="414" height="850"/> | ||
2534 | + <subviews> | ||
2535 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NHe-cF-AMf"> | ||
2536 | + <rect key="frame" x="0.0" y="0.0" width="414" height="852"/> | ||
2537 | + <subviews> | ||
2538 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="I4T-wN-u9w"> | ||
2539 | + <rect key="frame" x="0.0" y="0.0" width="414" height="200"/> | ||
2540 | + <constraints> | ||
2541 | + <constraint firstAttribute="height" constant="200" id="jg1-IY-gKs"/> | ||
2542 | + </constraints> | ||
2543 | + </imageView> | ||
2544 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Πάρε δωρεάν μηνιαία πακέτα με πάνες στα supermarket Σκλαβενίτης!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8BE-qj-xn5"> | ||
2545 | + <rect key="frame" x="20" y="230" width="374" height="34"/> | ||
2546 | + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="17"/> | ||
2547 | + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> | ||
2548 | + <nil key="highlightedColor"/> | ||
2549 | + </label> | ||
2550 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Χρησιμοποίησε τον παρακάτω κωδικό και πάρε δωρεάν πακέτο πάνες Pampers αποκλειστικά στα Supermarket Σκλαβενίτης" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mbx-MR-VPL"> | ||
2551 | + <rect key="frame" x="20" y="289" width="374" height="51"/> | ||
2552 | + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="17"/> | ||
2553 | + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> | ||
2554 | + <nil key="highlightedColor"/> | ||
2555 | + </label> | ||
2556 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qnn-bi-fLK"> | ||
2557 | + <rect key="frame" x="83" y="440" width="248" height="50"/> | ||
2558 | + <constraints> | ||
2559 | + <constraint firstAttribute="height" constant="50" id="aPk-mJ-VfN"/> | ||
2560 | + </constraints> | ||
2561 | + <fontDescription key="fontDescription" name="PFSquareSansPro-Medium" family="PF Square Sans Pro" pointSize="16"/> | ||
2562 | + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> | ||
2563 | + <state key="normal" title="Απόκτησέ το"> | ||
2564 | + <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
2565 | + </state> | ||
2566 | + <connections> | ||
2567 | + <action selector="redeemButtomAction:" destination="KhM-xm-T4L" eventType="touchUpInside" id="EqO-ze-Bau"/> | ||
2568 | + </connections> | ||
2569 | + </button> | ||
2570 | + </subviews> | ||
2571 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
2572 | + <constraints> | ||
2573 | + <constraint firstItem="8BE-qj-xn5" firstAttribute="leading" secondItem="NHe-cF-AMf" secondAttribute="leading" constant="20" id="0Go-Zc-Qdz"/> | ||
2574 | + <constraint firstAttribute="trailing" secondItem="I4T-wN-u9w" secondAttribute="trailing" id="38i-gl-gom"/> | ||
2575 | + <constraint firstItem="I4T-wN-u9w" firstAttribute="leading" secondItem="NHe-cF-AMf" secondAttribute="leading" id="Kwd-Io-bdQ"/> | ||
2576 | + <constraint firstItem="mbx-MR-VPL" firstAttribute="top" secondItem="8BE-qj-xn5" secondAttribute="bottom" constant="25" id="MoO-Rt-CES"/> | ||
2577 | + <constraint firstItem="qnn-bi-fLK" firstAttribute="top" secondItem="mbx-MR-VPL" secondAttribute="bottom" constant="100" id="T9O-Lp-JKw"/> | ||
2578 | + <constraint firstAttribute="trailing" secondItem="mbx-MR-VPL" secondAttribute="trailing" constant="20" id="Tx9-8c-EZY"/> | ||
2579 | + <constraint firstItem="mbx-MR-VPL" firstAttribute="leading" secondItem="NHe-cF-AMf" secondAttribute="leading" constant="20" id="aL7-MN-hd4"/> | ||
2580 | + <constraint firstItem="qnn-bi-fLK" firstAttribute="centerX" secondItem="NHe-cF-AMf" secondAttribute="centerX" id="hKA-X6-Nnh"/> | ||
2581 | + <constraint firstItem="qnn-bi-fLK" firstAttribute="width" secondItem="NHe-cF-AMf" secondAttribute="width" multiplier="0.6" id="lN0-41-F3G"/> | ||
2582 | + <constraint firstAttribute="trailing" secondItem="8BE-qj-xn5" secondAttribute="trailing" constant="20" id="n53-MH-KG1"/> | ||
2583 | + <constraint firstItem="I4T-wN-u9w" firstAttribute="top" secondItem="NHe-cF-AMf" secondAttribute="top" id="osK-5K-XQJ"/> | ||
2584 | + <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="qnn-bi-fLK" secondAttribute="bottom" constant="30" id="uLb-eO-qwF"/> | ||
2585 | + <constraint firstItem="8BE-qj-xn5" firstAttribute="top" secondItem="I4T-wN-u9w" secondAttribute="bottom" constant="30" id="wFo-Wh-noH"/> | ||
2586 | + </constraints> | ||
2587 | + </view> | ||
2588 | + </subviews> | ||
2589 | + <constraints> | ||
2590 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="top" secondItem="SCq-zB-WYb" secondAttribute="top" id="9bq-gO-haD"/> | ||
2591 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="width" secondItem="Ian-NJ-q5c" secondAttribute="width" id="AEN-vd-IM6"/> | ||
2592 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="leading" secondItem="SCq-zB-WYb" secondAttribute="leading" id="Dx1-nO-YiW"/> | ||
2593 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="trailing" secondItem="SCq-zB-WYb" secondAttribute="trailing" id="Rcp-KC-FVf"/> | ||
2594 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="bottom" secondItem="SCq-zB-WYb" secondAttribute="bottom" id="l90-nv-T7G"/> | ||
2595 | + </constraints> | ||
2596 | + <viewLayoutGuide key="contentLayoutGuide" id="SCq-zB-WYb"/> | ||
2597 | + <viewLayoutGuide key="frameLayoutGuide" id="Ian-NJ-q5c"/> | ||
2598 | + </scrollView> | ||
2599 | + </subviews> | ||
2600 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
2601 | + <constraints> | ||
2602 | + <constraint firstItem="7rs-yJ-Kvn" firstAttribute="leading" secondItem="gV8-Ze-9jD" secondAttribute="leading" id="2f9-NI-DVc"/> | ||
2603 | + <constraint firstItem="fVG-0L-fYi" firstAttribute="leading" secondItem="gV8-Ze-9jD" secondAttribute="leading" id="8Wo-dr-SYr"/> | ||
2604 | + <constraint firstAttribute="bottom" secondItem="fVG-0L-fYi" secondAttribute="bottom" id="F1h-dY-Qy9"/> | ||
2605 | + <constraint firstItem="7rs-yJ-Kvn" firstAttribute="top" secondItem="gV8-Ze-9jD" secondAttribute="top" id="Qqw-BH-PAa"/> | ||
2606 | + <constraint firstAttribute="bottom" secondItem="7rs-yJ-Kvn" secondAttribute="bottom" id="Syn-fK-lXo"/> | ||
2607 | + <constraint firstAttribute="trailing" secondItem="fVG-0L-fYi" secondAttribute="trailing" id="chL-lE-bqc"/> | ||
2608 | + <constraint firstItem="NHe-cF-AMf" firstAttribute="height" relation="greaterThanOrEqual" secondItem="gV8-Ze-9jD" secondAttribute="height" id="l9o-Lk-50b"/> | ||
2609 | + <constraint firstItem="fVG-0L-fYi" firstAttribute="top" secondItem="gV8-Ze-9jD" secondAttribute="top" constant="2" id="qnB-Bi-4Qj"/> | ||
2610 | + <constraint firstAttribute="trailing" secondItem="7rs-yJ-Kvn" secondAttribute="trailing" id="tpM-bQ-uV4"/> | ||
2611 | + </constraints> | ||
2612 | + </view> | ||
2613 | + </subviews> | ||
2614 | + <viewLayoutGuide key="safeArea" id="meX-xg-hMW"/> | ||
2615 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
2616 | + <constraints> | ||
2617 | + <constraint firstItem="gV8-Ze-9jD" firstAttribute="leading" secondItem="oKn-aG-Yzh" secondAttribute="leading" id="KUg-ao-Irx"/> | ||
2618 | + <constraint firstAttribute="bottom" secondItem="gV8-Ze-9jD" secondAttribute="bottom" id="M8J-yM-s5M"/> | ||
2619 | + <constraint firstItem="gV8-Ze-9jD" firstAttribute="top" secondItem="meX-xg-hMW" secondAttribute="top" id="OLd-wY-Edr"/> | ||
2620 | + <constraint firstAttribute="trailing" secondItem="gV8-Ze-9jD" secondAttribute="trailing" id="xnp-Tu-oyE"/> | ||
2621 | + </constraints> | ||
2622 | + </view> | ||
2623 | + <connections> | ||
2624 | + <outlet property="backgroundImage" destination="7rs-yJ-Kvn" id="UAm-Qy-V21"/> | ||
2625 | + <outlet property="couponImage" destination="I4T-wN-u9w" id="ONJ-uz-Emz"/> | ||
2626 | + <outlet property="couponImageHeight" destination="jg1-IY-gKs" id="yR6-wT-6A3"/> | ||
2627 | + <outlet property="descriptionLabel" destination="mbx-MR-VPL" id="LTL-7G-TUu"/> | ||
2628 | + <outlet property="mainView" destination="gV8-Ze-9jD" id="1YA-yr-IUE"/> | ||
2629 | + <outlet property="nameLabel" destination="8BE-qj-xn5" id="ysf-YK-z6C"/> | ||
2630 | + <outlet property="redeemButton" destination="qnn-bi-fLK" id="GzF-I5-zC3"/> | ||
2631 | + <outlet property="scrollContentView" destination="NHe-cF-AMf" id="Jgu-0v-nhF"/> | ||
2632 | + <outlet property="scrollView" destination="fVG-0L-fYi" id="Ia7-im-DSP"/> | ||
2633 | + </connections> | ||
2634 | + </viewController> | ||
2635 | + <placeholder placeholderIdentifier="IBFirstResponder" id="LXH-Az-i1V" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | ||
2636 | + </objects> | ||
2637 | + <point key="canvasLocation" x="5412" y="129"/> | ||
2638 | + </scene> | ||
2518 | </scenes> | 2639 | </scenes> |
2519 | <resources> | 2640 | <resources> |
2520 | <image name="active_code_logo" width="69.5" height="69"/> | 2641 | <image name="active_code_logo" width="69.5" height="69"/> | ... | ... |
-
Please register or login to post a comment