Manos Chorianopoulos

CouponViewController redesign part1

......@@ -7,7 +7,7 @@
<key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
</dict>
</dict>
......
......@@ -7,7 +7,7 @@
<key>SwiftWarplyFramework.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
<integer>1</integer>
</dict>
</dict>
</dict>
......
......@@ -30,8 +30,11 @@ import UIKit
@IBOutlet weak var favoriteImage: UIImageView!
@IBOutlet weak var shareImage: UIImageView!
@IBOutlet weak var merchantNameLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var subtitleLabel: UILabel!
@IBOutlet weak var expirationView: UIView!
@IBOutlet weak var expirationImage: UIImageView!
@IBOutlet weak var expirationLabel: UILabel!
@IBOutlet weak var detailsLabel: UILabel!
......@@ -90,9 +93,19 @@ import UIKit
super.viewDidLoad()
// Show navigation bar for this screen (with back button)
self.navigationController?.setNavigationBarHidden(false, animated: false)
setBackButton()
setNavigationTitle("Προσφορά")
// self.navigationController?.setNavigationBarHidden(false, animated: false)
// setBackButton()
// setNavigationTitle("Προσφορά")
self.navigationController?.setNavigationBarHidden(true, animated: false)
addFloatingBackButton()
for label in [merchantNameLabel, titleLabel, subtitleLabel, expirationLabel, detailsLabel] {
label?.setContentHuggingPriority(.defaultHigh, for: .vertical)
}
couponImage.backgroundColor = UIColor(rgb: 0x00A3E033)
infoView.backgroundColor = UIColor(rgb: 0xFFFFFF)
infoView.layer.cornerRadius = 10.0
......@@ -106,6 +119,7 @@ import UIKit
couponQRArrowImage.image = UIImage(named: "arrow_down", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
couponQRImage.image = UIImage(named: "barcode_2", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
termsButtonArrowImage.image = UIImage(named: "arrow_down", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
expirationImage.image = UIImage(named: "clock", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
infoLabel.font = UIFont(name: "PingLCG-Regular", size: 13)
infoLabel.textColor = UIColor(rgb: 0x020E1C)
......@@ -125,27 +139,33 @@ import UIKit
couponQRContentHeightConstraint.constant = 0
couponQRContentView.isHidden = true
termsButtonTitleLabel.font = UIFont(name: "PingLCG-Bold", size: 16)
termsButtonTitleLabel.textColor = UIColor(rgb: 0x020E1C)
termsButtonTitleLabel.text = "Όροι Χρήσης"
expirationView.backgroundColor = UIColor(rgb: 0xDDEFFB)
expirationView.layer.cornerRadius = 6.0
expirationView.layer.borderWidth = 1.0
expirationView.layer.borderColor = UIColor(rgb: 0xCCE9FB).cgColor
termsButtonTitleLabel.font = UIFont(name: "PingLCG-Bold", size: 15)
termsButtonTitleLabel.textColor = UIColor(rgb: 0x5C6369)
// termsButtonTitleLabel.text = "Όροι Χρήσης"
termsButtonTitleLabel.text = "Offer terms of use"
termsButton.addTarget(self, action: #selector(toggleTerms), for: .touchUpInside)
termsLabelHeight.constant = 0
mapButton.titleLabel?.font = UIFont(name: "PingLCG-Bold", size: 16)
mapButton.setTitle("Καταστήματα κοντά μου", for: .normal)
mapButton.titleLabel?.font = UIFont(name: "PingLCG-Regular", size: 16)
// mapButton.setTitle("Καταστήματα κοντά μου", for: .normal)
mapButton.setTitle("Store near me", for: .normal)
mapButton.setTitleColor(UIColor(rgb: 0xFFFFFF), for: .normal)
mapButton.setTitleColor(UIColor(rgb: 0xFFFFFF), for: .highlighted)
mapButton.layer.cornerRadius = 4.0
mapButton.backgroundColor = UIColor(rgb: 0x000F1E)
websiteButton.titleLabel?.font = UIFont(name: "PingLCG-Bold", size: 16)
websiteButton.setTitle("Δες το website", for: .normal)
websiteButton.setTitleColor(UIColor(rgb: 0x000F1E), for: .normal)
websiteButton.setTitleColor(UIColor(rgb: 0x000F1E), for: .highlighted)
websiteButton.backgroundColor = .clear
websiteButton.layer.borderWidth = 1
websiteButton.layer.borderColor = UIColor(rgb: 0x000F1E).cgColor
websiteButton.layer.cornerRadius = 4.0
mapButton.layer.cornerRadius = mapButton.bounds.height / 2
mapButton.backgroundColor = UIColor(rgb: 0x00A3E0)
websiteButton.titleLabel?.font = UIFont(name: "PingLCG-Regular", size: 16)
// websiteButton.setTitle("Δες το website", for: .normal)
websiteButton.setTitle("View website", for: .normal)
websiteButton.setTitleColor(UIColor(rgb: 0x002430), for: .normal)
websiteButton.setTitleColor(UIColor(rgb: 0x002430), for: .highlighted)
websiteButton.backgroundColor = UIColor(rgb: 0xDDEFFB)
websiteButton.layer.cornerRadius = websiteButton.bounds.height / 2
// Configure the view with coupon data
if let couponData = coupon {
......@@ -153,6 +173,29 @@ import UIKit
}
}
public override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
mapButton.layer.cornerRadius = mapButton.bounds.height / 2
websiteButton.layer.cornerRadius = websiteButton.bounds.height / 2
couponImage.addDashedBorder(
color: UIColor(rgb: 0x00A3E033),
lineWidth: 1,
dash: 3,
gap: 3
)
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
public override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
// MARK: - Image Loading Helper
private func loadRemoteImage(_ urlString: String, into imageView: UIImageView) {
......@@ -177,24 +220,34 @@ import UIKit
// Favorite — default to not favorite for now
favoriteImage.image = UIImage(named: "favorite2_empty", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
merchantNameLabel.font = UIFont(name: "PingLCG-Bold", size: 15)
merchantNameLabel.textColor = UIColor(rgb: 0x9BA1A6)
merchantNameLabel.text = coupon.couponset_data?._merchant?._name
// Title — from couponset_data name
titleLabel.font = UIFont(name: "PingLCG-Bold", size: 24)
titleLabel.textColor = UIColor(rgb: 0xF2709D)
titleLabel.textColor = UIColor(rgb: 0x000F1E)
titleLabel.text = coupon.couponset_data?._name ?? ""
// Subtitle — from couponset_data short_description
subtitleLabel.font = UIFont(name: "PingLCG-Regular", size: 18)
subtitleLabel.textColor = UIColor(rgb: 0x020E1C)
subtitleLabel.textColor = UIColor(rgb: 0x000F1E)
subtitleLabel.text = coupon.couponset_data?._short_description ?? ""
// Expiration — already formatted as "dd/MM/yyyy" by CouponItemModel
expirationLabel.font = UIFont(name: "PingLCG-Regular", size: 14)
expirationLabel.textColor = UIColor(rgb: 0x020E1C)
expirationLabel.font = UIFont(name: "PingLCG-Bold", size: 13)
expirationLabel.textColor = UIColor(rgb: 0x002430)
if let expiration = coupon.expiration, !expiration.isEmpty {
expirationLabel.text = "Η προσφορά ισχύει έως " + expiration
// TODO: FIX date format
expirationLabel.text = "Valid until " + expiration
} else {
expirationLabel.text = ""
}
// if let expiration = coupon.expiration, !expiration.isEmpty {
// expirationLabel.text = "Η προσφορά ισχύει έως " + expiration
// } else {
// expirationLabel.text = ""
// }
// Description — from couponset_data description
setupExpandableDetails(with: coupon)
......@@ -215,8 +268,8 @@ import UIKit
couponQRTitleLabel.text = "Barcode Κουπονιού"
// Terms — from couponset_data terms
termsLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
termsLabel.textColor = UIColor(rgb: 0x020E1C)
termsLabel.font = UIFont(name: "PingLCG-Regular", size: 15)
termsLabel.textColor = UIColor(rgb: 0x5C6369)
let termsText = coupon.couponset_data?._terms ?? ""
termsLabel.text = termsText.isEmpty ? "Δεν υπάρχουν διαθέσιμοι όροι χρήσης." : termsText
}
......@@ -243,8 +296,8 @@ import UIKit
fullDetailsText = ""
}
detailsLabel.font = UIFont(name: "PingLCG-Regular", size: 18)
detailsLabel.textColor = UIColor(rgb: 0x020E1C)
detailsLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
detailsLabel.textColor = UIColor(rgb: 0x5C6369)
updateDetailsText()
......@@ -257,8 +310,11 @@ import UIKit
if isDetailsExpanded {
// Show full text with "Λιγότερα"
if (shouldTruncaitDetails) {
let fullTextWithLess = fullDetailsText + " Λιγότερα"
let attributedString = createAttributedString(text: fullTextWithLess, linkText: "Λιγότερα")
// let fullTextWithLess = fullDetailsText + " Λιγότερα"
// let attributedString = createAttributedString(text: fullTextWithLess, linkText: "Λιγότερα")
let fullTextWithLess = fullDetailsText + " View less"
let attributedString = createAttributedString(text: fullTextWithLess, linkText: "View less")
detailsLabel.attributedText = attributedString
} else {
detailsLabel.text = fullDetailsText
......@@ -266,8 +322,11 @@ import UIKit
detailsLabel.numberOfLines = 0
} else {
// Calculate approximate characters for 4 lines and truncate if needed
// let truncatedText = getTruncatedTextForFourLines()
// let attributedString = createAttributedString(text: truncatedText, linkText: "Περισσότερα")
let truncatedText = getTruncatedTextForFourLines()
let attributedString = createAttributedString(text: truncatedText, linkText: "Περισσότερα")
let attributedString = createAttributedString(text: truncatedText, linkText: "View more")
detailsLabel.attributedText = attributedString
detailsLabel.numberOfLines = 4
}
......@@ -281,7 +340,8 @@ import UIKit
let charactersPerLine = Int(labelWidth / averageCharWidth)
let maxCharactersFor4Lines = charactersPerLine * 4
let moreText = " Περισσότερα"
// let moreText = " Περισσότερα"
let moreText = " View more"
let ellipsis = "..."
let reservedCharacters = ellipsis.count + moreText.count + 15
......@@ -306,14 +366,14 @@ import UIKit
// Regular text attributes
let regularAttributes: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "PingLCG-Regular", size: 18) ?? UIFont.systemFont(ofSize: 18),
.foregroundColor: UIColor(rgb: 0x020E1C)
.font: UIFont(name: "PingLCG-Regular", size: 16) ?? UIFont.systemFont(ofSize: 16),
.foregroundColor: UIColor(rgb: 0x5C6369)
]
// Link text attributes (blue color)
let linkAttributes: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "PingLCG-Regular", size: 18) ?? UIFont.systemFont(ofSize: 18),
.foregroundColor: UIColor(rgb: 0x00A8E8) // Blue color
.font: UIFont(name: "PingLCG-Bold", size: 16) ?? UIFont.systemFont(ofSize: 16),
.foregroundColor: UIColor(rgb: 0x1D2023) // Blue color
]
// Apply regular attributes to entire text
......
......@@ -4,7 +4,6 @@
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="24504"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
......@@ -30,12 +29,15 @@
<outlet property="couponQRImage" destination="Z9w-Ue-Lij" id="cIj-vB-EMz"/>
<outlet property="couponQRTitleLabel" destination="NZj-6a-KB7" id="Yr1-32-jxM"/>
<outlet property="detailsLabel" destination="X7C-0H-IhU" id="fvt-P2-urI"/>
<outlet property="expirationLabel" destination="HLR-Nk-7Gm" id="sRz-Ot-p9b"/>
<outlet property="expirationImage" destination="4eM-RK-Ea8" id="gmz-mL-1T1"/>
<outlet property="expirationLabel" destination="Tmg-cP-HoT" id="VUg-g6-08K"/>
<outlet property="expirationView" destination="UAA-HC-ugR" id="pqO-u1-BUY"/>
<outlet property="favoriteImage" destination="1Kx-s2-p1l" id="kMd-LA-04k"/>
<outlet property="infoImage" destination="tFA-1H-T5S" id="Pat-1s-nbE"/>
<outlet property="infoLabel" destination="K34-LM-bC1" id="wIV-dh-aQs"/>
<outlet property="infoView" destination="89U-JU-Imv" id="w8A-vj-7Lb"/>
<outlet property="mapButton" destination="j1U-rV-0FP" id="K5C-V5-ejo"/>
<outlet property="merchantNameLabel" destination="pox-mq-9AA" id="XP5-vR-AQx"/>
<outlet property="shareImage" destination="WjF-6P-8Wn" id="f7E-u8-Efc"/>
<outlet property="subtitleLabel" destination="VJr-Mc-WMf" id="D5i-m9-5pG"/>
<outlet property="termsButton" destination="Id4-Xw-01i" id="rZ1-hr-bSI"/>
......@@ -61,7 +63,7 @@
<rect key="frame" x="0.0" y="0.0" width="393" height="734"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qrm-40-JLT" userLabel="Scroll Content View">
<rect key="frame" x="0.0" y="0.0" width="393" height="1177"/>
<rect key="frame" x="0.0" y="0.0" width="393" height="1224.3333333333333"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Xiw-td-OMd" userLabel="Coupon Image View">
<rect key="frame" x="0.0" y="0.0" width="393" height="211"/>
......@@ -70,6 +72,12 @@
<constraint firstAttribute="height" constant="211" id="fMe-eO-hFu"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pox-mq-9AA" userLabel="Merchant Name Label">
<rect key="frame" x="24" y="235" width="273" height="20.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="89U-JU-Imv" userLabel="Info View">
<rect key="frame" x="239" y="17" width="138" height="20.666666666666671"/>
<subviews>
......@@ -98,7 +106,7 @@
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u54-xs-f5a" userLabel="Title Label">
<rect key="frame" x="24" y="234" width="249" height="20.333333333333343"/>
<rect key="frame" x="24" y="274.33333333333331" width="345" height="20.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
......@@ -112,45 +120,67 @@
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="WjF-6P-8Wn" userLabel="Share Image View">
<rect key="frame" x="335" y="228" width="40" height="40"/>
<rect key="frame" x="321" y="224" width="48" height="48"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="Hb1-K6-gef"/>
<constraint firstAttribute="width" constant="40" id="fIZ-xu-SFW"/>
<constraint firstAttribute="height" constant="48" id="Hb1-K6-gef"/>
<constraint firstAttribute="width" constant="48" id="fIZ-xu-SFW"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VJr-Mc-WMf" userLabel="Subtitle Label">
<rect key="frame" x="24" y="254.33333333333334" width="345" height="20.333333333333343"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HLR-Nk-7Gm" userLabel="Expiration Label">
<rect key="frame" x="24" y="288.66666666666669" width="345" height="20.333333333333314"/>
<rect key="frame" x="24" y="304.66666666666669" width="345" height="20.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UAA-HC-ugR" userLabel="Expiration View">
<rect key="frame" x="24" y="347" width="76.333333333333329" height="34.333333333333314"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4eM-RK-Ea8" userLabel="Expiration Image">
<rect key="frame" x="10" y="10.333333333333314" width="14" height="14"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="14" id="9Ue-xi-UMb"/>
<constraint firstAttribute="height" constant="14" id="ABs-vb-mU6"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tmg-cP-HoT" userLabel="Expiration Label">
<rect key="frame" x="28.000000000000004" y="6.9999999999999982" width="41.333333333333343" height="20.333333333333329"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="4eM-RK-Ea8" firstAttribute="centerY" secondItem="UAA-HC-ugR" secondAttribute="centerY" id="ISd-iY-iBi"/>
<constraint firstAttribute="trailing" secondItem="Tmg-cP-HoT" secondAttribute="trailing" constant="7" id="MoA-y4-soR"/>
<constraint firstItem="Tmg-cP-HoT" firstAttribute="top" secondItem="UAA-HC-ugR" secondAttribute="top" constant="7" id="PpE-ps-7BW"/>
<constraint firstAttribute="bottom" secondItem="Tmg-cP-HoT" secondAttribute="bottom" constant="7" id="ZUR-aj-Dwo"/>
<constraint firstItem="Tmg-cP-HoT" firstAttribute="leading" secondItem="4eM-RK-Ea8" secondAttribute="trailing" constant="4" id="djk-Om-fZS"/>
<constraint firstItem="4eM-RK-Ea8" firstAttribute="leading" secondItem="UAA-HC-ugR" secondAttribute="leading" constant="10" id="tjR-b3-maN"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="X7C-0H-IhU" userLabel="Details Label">
<rect key="frame" x="24" y="329" width="345" height="20.333333333333314"/>
<rect key="frame" x="24" y="418.33333333333337" width="345" height="20.333333333333314"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ElJ-Te-N4M" userLabel="CouponCodeContainerView">
<rect key="frame" x="24" y="383.33333333333331" width="345" height="134.33333333333331"/>
<rect key="frame" x="24" y="478.66666666666657" width="345" height="134.33333333333331"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cTO-BG-Gzi" userLabel="CouponCodeHeaderView">
<rect key="frame" x="0.0" y="0.0" width="345" height="54.333333333333336"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lEF-bh-hOi" userLabel="CouponCodeTitleLabel">
<rect key="frame" x="17" y="17.000000000000057" width="277" height="20.333333333333329"/>
<rect key="frame" x="17" y="17" width="277" height="20.333333333333329"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YoJ-w2-mm9" userLabel="CouponCodeArrowImage">
<rect key="frame" x="311" y="20.666666666666686" width="13" height="13"/>
<rect key="frame" x="311" y="20.666666666666742" width="13" height="13"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="627-N9-Nwq"/>
......@@ -181,7 +211,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wT1-HY-mg9" userLabel="CouponCodeContentView">
<rect key="frame" x="0.0" y="54.333333333333314" width="345" height="80"/>
<rect key="frame" x="0.0" y="54.333333333333371" width="345" height="80"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Fn-5d-j8v" userLabel="CouponCodeValueLabel">
<rect key="frame" x="16.999999999999996" y="26" width="56.666666666666657" height="28"/>
......@@ -190,7 +220,7 @@
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="AXc-Yh-5Ek" userLabel="CopyButtonImage">
<rect key="frame" x="84.666666666666671" y="23.666666666666742" width="33" height="33"/>
<rect key="frame" x="84.666666666666671" y="23.666666666666629" width="33" height="33"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="33" id="7ds-Ao-fBn"/>
......@@ -234,7 +264,7 @@
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cwz-uh-Zn5" userLabel="CouponQRContainerView">
<rect key="frame" x="24" y="540.66666666666663" width="345" height="305"/>
<rect key="frame" x="24" y="636" width="345" height="305"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eEy-8l-te2" userLabel="CouponQRHeaderView">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
......@@ -308,8 +338,24 @@
<constraint firstAttribute="bottom" secondItem="xqU-7k-Vxg" secondAttribute="bottom" id="wUN-aQ-c9t"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j1U-rV-0FP" userLabel="MapButton">
<rect key="frame" x="24" y="970" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="BZv-RS-JfU"/>
</constraints>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t8z-s1-rIA" userLabel="WebsiteButton">
<rect key="frame" x="24" y="1038" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="EUh-DN-fJh"/>
</constraints>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button"/>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HAh-BZ-4Ka" userLabel="TermsButtonView">
<rect key="frame" x="23.999999999999993" y="895.66666666666663" width="123.33333333333331" height="35"/>
<rect key="frame" x="135" y="1119" width="123.33333333333331" height="35"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Όροι Χρήσης" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Vj-gt-dKJ" userLabel="TermsButtonTitleLabel">
<rect key="frame" x="0.0" y="5" width="101.33333333333333" height="25"/>
......@@ -318,7 +364,7 @@
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="C8k-TU-LiL" userLabel="TermsButtonArrowImage">
<rect key="frame" x="109.33333333333334" y="15.000000000000114" width="9" height="5"/>
<rect key="frame" x="109.33333333333334" y="15" width="9" height="5"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="ERb-FD-j0Y"/>
......@@ -349,7 +395,7 @@
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ak8-Tc-k8X" userLabel="TermsLabel">
<rect key="frame" x="24" y="940.66666666666674" width="345" height="20.333333333333371"/>
<rect key="frame" x="24" y="1164" width="345" height="20.333333333333258"/>
<constraints>
<constraint firstAttribute="height" constant="20.329999999999998" id="ZA1-TX-m9Y"/>
</constraints>
......@@ -357,65 +403,57 @@
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j1U-rV-0FP" userLabel="MapButton">
<rect key="frame" x="24" y="1001" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="BZv-RS-JfU"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button"/>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t8z-s1-rIA" userLabel="WebsiteButton">
<rect key="frame" x="24" y="1076" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="EUh-DN-fJh"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button"/>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="t8z-s1-rIA" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="0ws-pJ-lPS"/>
<constraint firstItem="1Kx-s2-p1l" firstAttribute="leading" secondItem="u54-xs-f5a" secondAttribute="trailing" constant="11" id="22w-QH-w0I"/>
<constraint firstItem="Cwz-uh-Zn5" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="2Cq-bG-OqH"/>
<constraint firstItem="HLR-Nk-7Gm" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="3IS-pt-47I"/>
<constraint firstItem="HAh-BZ-4Ka" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="3wX-re-5mu"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="17" id="DTU-uH-exC"/>
<constraint firstItem="pox-mq-9AA" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="24" id="3n0-8Q-gTS"/>
<constraint firstItem="UAA-HC-ugR" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="9NB-IU-2Bh"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="13" id="DTU-uH-exC"/>
<constraint firstItem="Xiw-td-OMd" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" id="GFv-Mo-QN0"/>
<constraint firstAttribute="trailing" secondItem="t8z-s1-rIA" secondAttribute="trailing" constant="24" id="Hel-rG-nvJ"/>
<constraint firstItem="VJr-Mc-WMf" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="Hoa-qW-OtC"/>
<constraint firstItem="89U-JU-Imv" firstAttribute="top" secondItem="qrm-40-JLT" secondAttribute="top" constant="17" id="JQF-r7-v7p"/>
<constraint firstAttribute="trailing" secondItem="u54-xs-f5a" secondAttribute="trailing" constant="24" id="Kez-LB-yrq"/>
<constraint firstAttribute="trailing" secondItem="Cwz-uh-Zn5" secondAttribute="trailing" constant="24" id="MCe-c8-R0P"/>
<constraint firstAttribute="trailing" secondItem="89U-JU-Imv" secondAttribute="trailing" constant="16" id="QJ1-AA-bn9"/>
<constraint firstItem="u54-xs-f5a" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="ScM-kH-ZEe"/>
<constraint firstItem="VJr-Mc-WMf" firstAttribute="top" secondItem="u54-xs-f5a" secondAttribute="bottom" id="Ssw-da-ntM"/>
<constraint firstItem="HAh-BZ-4Ka" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="bottom" constant="50" id="Su5-M8-vrC"/>
<constraint firstItem="VJr-Mc-WMf" firstAttribute="top" secondItem="u54-xs-f5a" secondAttribute="bottom" constant="10" id="Ssw-da-ntM"/>
<constraint firstItem="HAh-BZ-4Ka" firstAttribute="top" secondItem="t8z-s1-rIA" secondAttribute="bottom" constant="26" id="Su5-M8-vrC"/>
<constraint firstAttribute="trailing" secondItem="Xiw-td-OMd" secondAttribute="trailing" id="TGH-lz-pn5"/>
<constraint firstItem="HAh-BZ-4Ka" firstAttribute="centerX" secondItem="qrm-40-JLT" secondAttribute="centerX" id="YTm-hC-NCZ"/>
<constraint firstItem="ElJ-Te-N4M" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="abd-4G-pI5"/>
<constraint firstItem="Xiw-td-OMd" firstAttribute="top" secondItem="qrm-40-JLT" secondAttribute="top" id="ajI-sR-3Pt"/>
<constraint firstAttribute="trailing" secondItem="j1U-rV-0FP" secondAttribute="trailing" constant="24" id="bBU-zw-nbU"/>
<constraint firstAttribute="bottom" secondItem="t8z-s1-rIA" secondAttribute="bottom" constant="46" id="bBi-iY-kAp"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="leading" secondItem="1Kx-s2-p1l" secondAttribute="trailing" constant="11" id="bI6-jl-1U8"/>
<constraint firstAttribute="trailing" secondItem="X7C-0H-IhU" secondAttribute="trailing" constant="24" id="cXA-ke-cJ7"/>
<constraint firstItem="X7C-0H-IhU" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="d5O-SJ-gva"/>
<constraint firstAttribute="trailing" secondItem="HLR-Nk-7Gm" secondAttribute="trailing" constant="24" id="eDk-HB-bk1"/>
<constraint firstItem="X7C-0H-IhU" firstAttribute="top" secondItem="UAA-HC-ugR" secondAttribute="bottom" constant="37" id="eWb-gJ-A7o"/>
<constraint firstItem="u54-xs-f5a" firstAttribute="top" secondItem="pox-mq-9AA" secondAttribute="bottom" constant="19" id="eeF-wJ-dof"/>
<constraint firstAttribute="trailing" secondItem="ElJ-Te-N4M" secondAttribute="trailing" constant="24" id="f9R-SZ-ReV"/>
<constraint firstItem="j1U-rV-0FP" firstAttribute="top" secondItem="Ak8-Tc-k8X" secondAttribute="bottom" constant="40" id="gym-1h-ewZ"/>
<constraint firstItem="HLR-Nk-7Gm" firstAttribute="top" secondItem="VJr-Mc-WMf" secondAttribute="bottom" constant="14" id="hfN-OE-fbk"/>
<constraint firstItem="Ak8-Tc-k8X" firstAttribute="top" secondItem="HAh-BZ-4Ka" secondAttribute="bottom" constant="9.9999999999998863" id="i4i-57-H76"/>
<constraint firstItem="j1U-rV-0FP" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="jac-wq-3ZZ"/>
<constraint firstItem="ElJ-Te-N4M" firstAttribute="top" secondItem="X7C-0H-IhU" secondAttribute="bottom" constant="34" id="jpp-m0-Hqs"/>
<constraint firstItem="t8z-s1-rIA" firstAttribute="top" secondItem="j1U-rV-0FP" secondAttribute="bottom" constant="20" id="lPW-dz-sru"/>
<constraint firstItem="X7C-0H-IhU" firstAttribute="top" secondItem="HLR-Nk-7Gm" secondAttribute="bottom" constant="20" id="mg0-Su-33x"/>
<constraint firstItem="ElJ-Te-N4M" firstAttribute="top" secondItem="X7C-0H-IhU" secondAttribute="bottom" constant="40" id="jpp-m0-Hqs"/>
<constraint firstItem="t8z-s1-rIA" firstAttribute="top" secondItem="j1U-rV-0FP" secondAttribute="bottom" constant="13" id="lPW-dz-sru"/>
<constraint firstAttribute="bottom" secondItem="Ak8-Tc-k8X" secondAttribute="bottom" constant="40" id="lPv-0M-v4h"/>
<constraint firstItem="WjF-6P-8Wn" firstAttribute="leading" secondItem="pox-mq-9AA" secondAttribute="trailing" constant="24" id="lgg-ay-v4j"/>
<constraint firstAttribute="trailing" secondItem="Ak8-Tc-k8X" secondAttribute="trailing" constant="24" id="oCu-13-6UV"/>
<constraint firstAttribute="trailing" secondItem="WjF-6P-8Wn" secondAttribute="trailing" constant="18" id="qhV-dn-76R"/>
<constraint firstItem="pox-mq-9AA" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="oER-m6-5cM"/>
<constraint firstAttribute="trailing" secondItem="WjF-6P-8Wn" secondAttribute="trailing" constant="24" id="qhV-dn-76R"/>
<constraint firstItem="Cwz-uh-Zn5" firstAttribute="top" secondItem="ElJ-Te-N4M" secondAttribute="bottom" constant="23" id="sxz-YM-etJ"/>
<constraint firstItem="UAA-HC-ugR" firstAttribute="top" secondItem="VJr-Mc-WMf" secondAttribute="bottom" constant="22" id="tdz-Pj-5Sm"/>
<constraint firstItem="j1U-rV-0FP" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="bottom" constant="29" id="u0z-wP-RQB"/>
<constraint firstItem="Ak8-Tc-k8X" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="v9m-et-nFd"/>
<constraint firstItem="u54-xs-f5a" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="23" id="w3l-OQ-ddG"/>
<constraint firstAttribute="trailing" secondItem="VJr-Mc-WMf" secondAttribute="trailing" constant="24" id="wJA-JP-ZWT"/>
<constraint firstItem="1Kx-s2-p1l" firstAttribute="top" secondItem="Xiw-td-OMd" secondAttribute="bottom" constant="17" id="zNT-Y8-JpJ"/>
</constraints>
<variation key="default">
<mask key="subviews">
<exclude reference="89U-JU-Imv"/>
<exclude reference="1Kx-s2-p1l"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
......@@ -430,7 +468,7 @@
<viewLayoutGuide key="frameLayoutGuide" id="zwi-OX-nWJ"/>
</scrollView>
</subviews>
<color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="YpC-uS-mhw" secondAttribute="bottom" id="8Cp-bx-YIo"/>
<constraint firstItem="YpC-uS-mhw" firstAttribute="top" secondItem="XaT-fU-eNh" secondAttribute="top" id="FzN-9C-IcE"/>
......@@ -441,7 +479,7 @@
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="XaT-fU-eNh" secondAttribute="trailing" id="8CQ-aq-Ezd"/>
<constraint firstItem="XaT-fU-eNh" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="DIL-gG-nA2"/>
......@@ -451,9 +489,4 @@
<point key="canvasLocation" x="12" y="-11"/>
</view>
</objects>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>
......