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