Manos Chorianopoulos

CouponViewController redesign part2

......@@ -38,39 +38,14 @@ import UIKit
@IBOutlet weak var expirationLabel: UILabel!
@IBOutlet weak var detailsLabel: UILabel!
// MARK: - IBOutlets for Coupon Code Section
@IBOutlet weak var couponCodeContainerView: UIView!
@IBOutlet weak var couponCodeHeaderView: UIView!
@IBOutlet weak var couponCodeContentView: UIView!
// Header elements
@IBOutlet weak var couponCodeTitleLabel: UILabel!
@IBOutlet weak var couponCodeArrowImage: UIImageView!
@IBOutlet weak var couponCodeButton: UIButton!
// Content elements (initially hidden)
@IBOutlet weak var couponCodeValueLabel: UILabel!
@IBOutlet weak var copyButtonImage: UIImageView!
@IBOutlet weak var copyButton: UIButton!
// Constraints for animation
@IBOutlet weak var couponCodeContentHeightConstraint: NSLayoutConstraint!
// MARK: - IBOutlets for Coupon Code Section
@IBOutlet weak var couponQRContainerView: UIView!
@IBOutlet weak var couponQRHeaderView: UIView!
@IBOutlet weak var couponQRContentView: UIView!
// Header elements
@IBOutlet weak var couponQRTitleLabel: UILabel!
@IBOutlet weak var couponQRArrowImage: UIImageView!
@IBOutlet weak var couponQRButton: UIButton!
// Content elements (initially hidden)
@IBOutlet weak var couponQRImage: UIImageView!
// Constraints for animation
@IBOutlet weak var couponQRContentHeightConstraint: NSLayoutConstraint!
// MARK: - IBOutlets for Unified Available Code Card
@IBOutlet weak var couponQRContainerView: UIView! // outer light-blue card
@IBOutlet weak var couponQRTitleLabel: UILabel! // "Available code"
@IBOutlet weak var couponQRContentView: UIView! // inner white card
@IBOutlet weak var couponQRImage: UIImageView! // barcode image
@IBOutlet weak var couponCodeValueLabel: UILabel! // code text
@IBOutlet weak var copyButtonImage: UIImageView! // copy icon
@IBOutlet weak var copyButton: UIButton! // invisible tap target
@IBOutlet weak var termsButtonView: UIView!
@IBOutlet weak var termsButtonTitleLabel: UILabel!
......@@ -85,8 +60,6 @@ import UIKit
var coupon: CouponItemModel?
private var isDetailsExpanded = false
private var isCouponCodeExpanded = false
private var isCouponQRExpanded = false
private var isTermsExpanded = false
public override func viewDidLoad() {
......@@ -113,10 +86,8 @@ import UIKit
infoView.layer.borderColor = UIColor(red: 0.01, green: 0.05, blue: 0.11, alpha: 0.19).cgColor
infoImage.image = UIImage(named: "info", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
shareImage.image = UIImage(named: "share", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
couponCodeArrowImage.image = UIImage(named: "arrow_down", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
copyButtonImage.image = UIImage(named: "copy", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
couponQRArrowImage.image = UIImage(named: "arrow_down", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
shareImage.image = UIImage(named: "share_circle", in: Bundle.frameworkResourceBundle, compatibleWith: nil)
copyButtonImage.image = UIImage(named: "copy_circle", 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)
......@@ -125,19 +96,15 @@ import UIKit
infoLabel.textColor = UIColor(rgb: 0x020E1C)
infoLabel.text = "Περισσότερα"
couponCodeContainerView.backgroundColor = UIColor(rgb: 0xFFFFFF)
couponCodeContainerView.layer.cornerRadius = 8.0
couponCodeContainerView.clipsToBounds = true
couponCodeButton.addTarget(self, action: #selector(toggleCouponCode), for: .touchUpInside)
couponCodeContentHeightConstraint.constant = 0
couponCodeContentView.isHidden = true
couponQRContainerView.backgroundColor = UIColor(rgb: 0xFFFFFF)
couponQRContainerView.layer.cornerRadius = 8.0
// Unified Available Code card — outer container
couponQRContainerView.backgroundColor = UIColor(rgb: 0xDDEFFB)
couponQRContainerView.layer.cornerRadius = 12.0
couponQRContainerView.clipsToBounds = true
couponQRButton.addTarget(self, action: #selector(toggleCouponQR), for: .touchUpInside)
couponQRContentHeightConstraint.constant = 0
couponQRContentView.isHidden = true
// Inner white card
couponQRContentView.backgroundColor = UIColor(rgb: 0xFFFFFF)
couponQRContentView.layer.cornerRadius = 10.0
couponQRContentView.clipsToBounds = true
expirationView.backgroundColor = UIColor(rgb: 0xDDEFFB)
expirationView.layer.cornerRadius = 6.0
......@@ -252,21 +219,16 @@ import UIKit
// Description — from couponset_data description
setupExpandableDetails(with: coupon)
// Coupon Code section
couponCodeTitleLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
couponCodeTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponCodeTitleLabel.text = "Κωδικός Κουπονιού"
// Unified Available Code section
couponQRTitleLabel.font = UIFont(name: "PingLCG-Bold", size: 14)
couponQRTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponQRTitleLabel.text = "Available code"
couponCodeValueLabel.font = UIFont(name: "PingLCG-Bold", size: 24)
couponCodeValueLabel.font = UIFont(name: "PingLCG-Bold", size: 18)
couponCodeValueLabel.textColor = UIColor(rgb: 0x000F1E)
couponCodeValueLabel.text = coupon.coupon ?? ""
copyButton.addTarget(self, action: #selector(copyButtonTapped), for: .touchUpInside)
// QR Code section
couponQRTitleLabel.font = UIFont(name: "PingLCG-Regular", size: 16)
couponQRTitleLabel.textColor = UIColor(rgb: 0x000F1E)
couponQRTitleLabel.text = "Barcode Κουπονιού"
// Terms — from couponset_data terms
termsLabel.font = UIFont(name: "PingLCG-Regular", size: 15)
termsLabel.textColor = UIColor(rgb: 0x5C6369)
......@@ -398,80 +360,6 @@ import UIKit
}
}
@objc private func toggleCouponCode() {
isCouponCodeExpanded.toggle()
// Calculate the target height before animation
let targetHeight: CGFloat = isCouponCodeExpanded ? 80.67 : 0 // Set a fixed height instead of intrinsicContentSize
// Show content immediately if expanding
if isCouponCodeExpanded {
couponCodeContentView.isHidden = false
couponCodeContentView.alpha = 0
}
UIView.animate(withDuration: 0.3, animations: {
// // Update arrow image
// self.couponCodeArrowImage.image = UIImage(named: self.isCouponCodeExpanded ? "arrow_up" : "arrow_down", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
// Update arrow with rotation
let rotation = self.isCouponCodeExpanded ? CGAffineTransform(rotationAngle: .pi) : .identity
self.couponCodeArrowImage.transform = rotation
// Update height constraint
self.couponCodeContentHeightConstraint.constant = targetHeight
// Update alpha for smooth fade
self.couponCodeContentView.alpha = self.isCouponCodeExpanded ? 1.0 : 0.0
// Force layout update
self.view.layoutIfNeeded()
}) { _ in
// Hide content after animation completes if collapsing
if !self.isCouponCodeExpanded {
self.couponCodeContentView.isHidden = true
}
}
}
@objc private func toggleCouponQR() {
isCouponQRExpanded.toggle()
// Calculate the target height before animation
let targetHeight: CGFloat = isCouponQRExpanded ? 250 : 0 // Set a fixed height for QR code
// Show content immediately if expanding
if isCouponQRExpanded {
couponQRContentView.isHidden = false
couponQRContentView.alpha = 0
}
UIView.animate(withDuration: 0.3, animations: {
// Update arrow image
// self.couponQRArrowImage.image = UIImage(named: self.isCouponQRExpanded ? "arrow_up" : "arrow_down", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)
// Update arrow with rotation
let rotation = self.isCouponQRExpanded ? CGAffineTransform(rotationAngle: .pi) : .identity
self.couponQRArrowImage.transform = rotation
// Update height constraint
self.couponQRContentHeightConstraint.constant = targetHeight
// Update alpha for smooth fade
self.couponQRContentView.alpha = self.isCouponQRExpanded ? 1.0 : 0.0
// Force layout update
self.view.layoutIfNeeded()
}) { _ in
// Hide content after animation completes if collapsing
if !self.isCouponQRExpanded {
self.couponQRContentView.isHidden = true
}
}
}
@objc private func toggleTerms() {
isTermsExpanded.toggle()
......
......@@ -11,21 +11,10 @@
<connections>
<outlet property="copyButton" destination="uPp-hJ-U97" id="99c-QK-4uC"/>
<outlet property="copyButtonImage" destination="AXc-Yh-5Ek" id="4VG-c1-zbJ"/>
<outlet property="couponCodeArrowImage" destination="YoJ-w2-mm9" id="oQm-Mm-FL8"/>
<outlet property="couponCodeButton" destination="5sx-2G-cCM" id="vuv-NX-y5I"/>
<outlet property="couponCodeContainerView" destination="ElJ-Te-N4M" id="84s-Ab-iAG"/>
<outlet property="couponCodeContentHeightConstraint" destination="ky8-Xs-cjh" id="P1b-xY-vde"/>
<outlet property="couponCodeContentView" destination="wT1-HY-mg9" id="PEK-wT-l4v"/>
<outlet property="couponCodeHeaderView" destination="cTO-BG-Gzi" id="6Xm-p8-F13"/>
<outlet property="couponCodeTitleLabel" destination="lEF-bh-hOi" id="dVH-Zs-Rbg"/>
<outlet property="couponCodeValueLabel" destination="2Fn-5d-j8v" id="Dlf-7P-qlY"/>
<outlet property="couponImage" destination="Xiw-td-OMd" id="OxY-cx-CHa"/>
<outlet property="couponQRArrowImage" destination="OXW-Jx-8wp" id="ijU-6O-hcN"/>
<outlet property="couponQRButton" destination="xd4-3b-eOl" id="ElE-cn-nPX"/>
<outlet property="couponQRContainerView" destination="Cwz-uh-Zn5" id="igH-cb-FMa"/>
<outlet property="couponQRContentHeightConstraint" destination="odW-jh-UiA" id="LfK-Hl-1Ks"/>
<outlet property="couponQRContentView" destination="xqU-7k-Vxg" id="t1n-V2-Tv3"/>
<outlet property="couponQRHeaderView" destination="eEy-8l-te2" id="0U3-5V-9BB"/>
<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"/>
......@@ -63,7 +52,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="1224.3333333333333"/>
<rect key="frame" x="0.0" y="0.0" width="393" height="940"/>
<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"/>
......@@ -167,68 +156,55 @@
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ElJ-Te-N4M" userLabel="CouponCodeContainerView">
<rect key="frame" x="24" y="478.66666666666657" width="345" height="134.33333333333331"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cwz-uh-Zn5" userLabel="CouponQRContainerView">
<rect key="frame" x="24" y="478.66666666666663" width="345" height="178"/>
<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"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available code" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NZj-6a-KB7" userLabel="CouponQRTitleLabel">
<rect key="frame" x="18.000000000000007" y="10" width="98.666666666666686" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xqU-7k-Vxg" userLabel="CouponQRContentView">
<rect key="frame" x="4" y="38" width="337" height="136"/>
<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" 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.666666666666742" width="13" height="13"/>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Z9w-Ue-Lij" userLabel="CouponQRImage">
<rect key="frame" x="55.333333333333329" y="11" width="226.66666666666669" height="83"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="627-N9-Nwq"/>
<constraint firstAttribute="height" constant="13" id="MqD-PS-KVR"/>
<constraint firstAttribute="height" constant="83" id="YkU-3H-rpb"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5sx-2G-cCM" userLabel="CouponCodeButton">
<rect key="frame" x="0.0" y="0.0" width="345" height="54.333333333333336"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
<color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</buttonConfiguration>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="5sx-2G-cCM" secondAttribute="bottom" id="5b7-2R-dAJ"/>
<constraint firstAttribute="trailing" secondItem="5sx-2G-cCM" secondAttribute="trailing" id="CI1-1e-hkQ"/>
<constraint firstItem="lEF-bh-hOi" firstAttribute="leading" secondItem="cTO-BG-Gzi" secondAttribute="leading" constant="17" id="Gld-ir-1gP"/>
<constraint firstItem="5sx-2G-cCM" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="top" id="MVC-wv-Mpz"/>
<constraint firstItem="YoJ-w2-mm9" firstAttribute="centerY" secondItem="cTO-BG-Gzi" secondAttribute="centerY" id="UcW-oq-76N"/>
<constraint firstAttribute="bottom" secondItem="lEF-bh-hOi" secondAttribute="bottom" constant="17" id="WvU-KU-XPP"/>
<constraint firstItem="lEF-bh-hOi" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="top" constant="17" id="a9J-3H-Fxg"/>
<constraint firstItem="5sx-2G-cCM" firstAttribute="leading" secondItem="cTO-BG-Gzi" secondAttribute="leading" id="eSr-hy-hgk"/>
<constraint firstAttribute="trailing" secondItem="YoJ-w2-mm9" secondAttribute="trailing" constant="21" id="fle-ul-e4O"/>
<constraint firstItem="YoJ-w2-mm9" firstAttribute="leading" secondItem="lEF-bh-hOi" secondAttribute="trailing" constant="17" id="wG0-2i-Ums"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wT1-HY-mg9" userLabel="CouponCodeContentView">
<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"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<nil key="textColor"/>
<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.666666666666629" width="33" height="33"/>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xRl-hz-0dM" userLabel="CopyButtonView">
<rect key="frame" x="129" y="100" width="79" height="25"/>
<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="0.0" y="0.66666666666674246" width="48" height="24"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/>
<nil key="textColor"/>
<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="54" y="0.0" width="25" height="25"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="7ds-Ao-fBn"/>
<constraint firstAttribute="width" constant="25" id="CQY-h3-dmj"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="33" id="7ds-Ao-fBn"/>
<constraint firstAttribute="width" constant="33" id="CQY-h3-dmj"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="centerY" secondItem="xRl-hz-0dM" secondAttribute="centerY" id="3fD-Jw-KCV"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="leading" secondItem="2Fn-5d-j8v" secondAttribute="trailing" constant="6" id="H9C-aS-75L"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="leading" secondItem="xRl-hz-0dM" secondAttribute="leading" id="S8P-FL-qaN"/>
<constraint firstAttribute="trailing" secondItem="AXc-Yh-5Ek" secondAttribute="trailing" id="eHD-Vo-ghg"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="top" secondItem="xRl-hz-0dM" secondAttribute="top" id="sTS-Fa-2yZ"/>
<constraint firstAttribute="bottom" secondItem="AXc-Yh-5Ek" secondAttribute="bottom" id="xwm-DA-udX"/>
</constraints>
</imageView>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uPp-hJ-U97" userLabel="CouponCopyButton">
<rect key="frame" x="0.0" y="0.0" width="117.66666666666667" height="80"/>
<rect key="frame" x="0.0" y="94" width="337" height="42"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
......@@ -238,108 +214,33 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="trailing" secondItem="uPp-hJ-U97" secondAttribute="trailing" id="3aJ-yL-aQu"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="leading" secondItem="wT1-HY-mg9" secondAttribute="leading" id="6Jl-oE-u2d"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="AXc-Yh-5Ek" secondAttribute="trailing" constant="17" id="7Pr-rr-Awn"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="centerY" secondItem="wT1-HY-mg9" secondAttribute="centerY" id="FdP-94-Drs"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="leading" secondItem="wT1-HY-mg9" secondAttribute="leading" constant="17" id="HYO-ML-C8b"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="top" secondItem="wT1-HY-mg9" secondAttribute="top" id="RGx-ep-QGw"/>
<constraint firstItem="2Fn-5d-j8v" firstAttribute="top" secondItem="wT1-HY-mg9" secondAttribute="top" constant="26" id="XpY-aU-BzN"/>
<constraint firstAttribute="bottom" secondItem="2Fn-5d-j8v" secondAttribute="bottom" constant="26" id="Y10-PC-eP5"/>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="top" secondItem="xqU-7k-Vxg" secondAttribute="top" constant="11" id="3jb-mY-gez"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Z9w-Ue-Lij" secondAttribute="trailing" constant="14" id="4Wr-Ld-HWz"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="leading" secondItem="xqU-7k-Vxg" secondAttribute="leading" id="6Jl-oE-u2d"/>
<constraint firstAttribute="trailing" secondItem="uPp-hJ-U97" secondAttribute="trailing" id="7Pr-rr-Awn"/>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="xqU-7k-Vxg" secondAttribute="leading" constant="14" id="DoG-pU-Ipv"/>
<constraint firstItem="uPp-hJ-U97" firstAttribute="top" secondItem="Z9w-Ue-Lij" secondAttribute="bottom" id="RGx-ep-QGw"/>
<constraint firstAttribute="bottom" secondItem="xRl-hz-0dM" secondAttribute="bottom" constant="11" id="U08-AQ-7Y9"/>
<constraint firstItem="xRl-hz-0dM" firstAttribute="top" secondItem="Z9w-Ue-Lij" secondAttribute="bottom" constant="6" id="ZTV-8l-bWE"/>
<constraint firstAttribute="bottom" secondItem="uPp-hJ-U97" secondAttribute="bottom" id="b9r-2I-hhe"/>
<constraint firstAttribute="height" constant="80" id="ky8-Xs-cjh"/>
<constraint firstItem="AXc-Yh-5Ek" firstAttribute="leading" secondItem="2Fn-5d-j8v" secondAttribute="trailing" constant="11" id="vuS-Bk-Q0J"/>
<constraint firstItem="xRl-hz-0dM" firstAttribute="centerX" secondItem="xqU-7k-Vxg" secondAttribute="centerX" id="gGH-IS-9xX"/>
<constraint firstAttribute="height" secondItem="Z9w-Ue-Lij" secondAttribute="width" multiplier="0.6" id="itM-bK-4dv"/>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="centerX" secondItem="xqU-7k-Vxg" secondAttribute="centerX" id="kBI-yN-j8Y"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="wT1-HY-mg9" firstAttribute="leading" secondItem="ElJ-Te-N4M" secondAttribute="leading" id="1fU-8Q-kc5"/>
<constraint firstItem="cTO-BG-Gzi" firstAttribute="leading" secondItem="ElJ-Te-N4M" secondAttribute="leading" id="827-rg-YnF"/>
<constraint firstItem="cTO-BG-Gzi" firstAttribute="top" secondItem="ElJ-Te-N4M" secondAttribute="top" id="DCX-hf-OZ5"/>
<constraint firstAttribute="bottom" secondItem="wT1-HY-mg9" secondAttribute="bottom" id="NTj-Gv-gK2"/>
<constraint firstAttribute="trailing" secondItem="wT1-HY-mg9" secondAttribute="trailing" id="ssf-Xv-Bxx"/>
<constraint firstAttribute="trailing" secondItem="cTO-BG-Gzi" secondAttribute="trailing" id="umy-qN-JFu"/>
<constraint firstItem="wT1-HY-mg9" firstAttribute="top" secondItem="cTO-BG-Gzi" secondAttribute="bottom" id="wkk-WM-rVY"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cwz-uh-Zn5" userLabel="CouponQRContainerView">
<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"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NZj-6a-KB7" userLabel="CouponQRTitleLabel">
<rect key="frame" x="17" y="17" width="277" height="21"/>
<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="OXW-Jx-8wp" userLabel="CouponQRArrowImage">
<rect key="frame" x="311" y="21" width="13" height="13"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="13" id="G7f-Pn-WhD"/>
<constraint firstAttribute="height" constant="13" id="zVL-H5-ijW"/>
</constraints>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xd4-3b-eOl" userLabel="CouponQRButton">
<rect key="frame" x="0.0" y="0.0" width="345" height="55"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Button">
<color key="baseForegroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</buttonConfiguration>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="xd4-3b-eOl" secondAttribute="bottom" id="1yG-EQ-krt"/>
<constraint firstAttribute="trailing" secondItem="xd4-3b-eOl" secondAttribute="trailing" id="4cA-IG-MEv"/>
<constraint firstAttribute="trailing" secondItem="OXW-Jx-8wp" secondAttribute="trailing" constant="21" id="61o-1d-G8i"/>
<constraint firstAttribute="bottom" secondItem="NZj-6a-KB7" secondAttribute="bottom" constant="17" id="7Nq-qK-srn"/>
<constraint firstItem="xd4-3b-eOl" firstAttribute="leading" secondItem="eEy-8l-te2" secondAttribute="leading" id="BBO-lA-FMd"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="leading" secondItem="eEy-8l-te2" secondAttribute="leading" constant="17" id="C9L-Ez-BxU"/>
<constraint firstItem="xd4-3b-eOl" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="top" id="Omk-77-XDb"/>
<constraint firstItem="OXW-Jx-8wp" firstAttribute="leading" secondItem="NZj-6a-KB7" secondAttribute="trailing" constant="17" id="gAd-xN-NrH"/>
<constraint firstItem="OXW-Jx-8wp" firstAttribute="centerY" secondItem="eEy-8l-te2" secondAttribute="centerY" id="gFQ-3l-Vyc"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="top" constant="17" id="x3M-GO-42H"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xqU-7k-Vxg" userLabel="CouponQRContentView">
<rect key="frame" x="0.0" y="55" width="345" height="250"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Z9w-Ue-Lij" userLabel="CouponQRImage">
<rect key="frame" x="72.666666666666686" y="20" width="200" height="200"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="UHz-Fg-n1x"/>
<constraint firstAttribute="height" constant="200" id="itM-bK-4dv"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="centerX" secondItem="xqU-7k-Vxg" secondAttribute="centerX" id="3jb-mY-gez"/>
<constraint firstAttribute="bottom" secondItem="Z9w-Ue-Lij" secondAttribute="bottom" constant="30" id="4Wr-Ld-HWz"/>
<constraint firstItem="Z9w-Ue-Lij" firstAttribute="top" secondItem="xqU-7k-Vxg" secondAttribute="top" constant="20" id="DoG-pU-Ipv"/>
<constraint firstAttribute="height" constant="250" id="odW-jh-UiA"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="backgroundColor" red="0.8666666666666667" green="0.93725490196078431" blue="0.98431372549019602" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="xqU-7k-Vxg" secondAttribute="trailing" id="JEa-Zg-JIu"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="top" secondItem="eEy-8l-te2" secondAttribute="bottom" id="Jf6-P1-9qS"/>
<constraint firstItem="eEy-8l-te2" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" id="iZp-kc-tZ2"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" id="nxQ-kb-BhT"/>
<constraint firstItem="eEy-8l-te2" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="top" id="qho-3x-oyY"/>
<constraint firstAttribute="trailing" secondItem="eEy-8l-te2" secondAttribute="trailing" id="sg9-Jq-q2G"/>
<constraint firstAttribute="bottom" secondItem="xqU-7k-Vxg" secondAttribute="bottom" id="wUN-aQ-c9t"/>
<constraint firstAttribute="trailing" secondItem="xqU-7k-Vxg" secondAttribute="trailing" constant="4" id="JEa-Zg-JIu"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="top" secondItem="NZj-6a-KB7" secondAttribute="bottom" constant="10" id="Jf6-P1-9qS"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" constant="18" id="iZp-kc-tZ2"/>
<constraint firstItem="xqU-7k-Vxg" firstAttribute="leading" secondItem="Cwz-uh-Zn5" secondAttribute="leading" constant="4" id="nxQ-kb-BhT"/>
<constraint firstItem="NZj-6a-KB7" firstAttribute="top" secondItem="Cwz-uh-Zn5" secondAttribute="top" constant="10" id="qho-3x-oyY"/>
<constraint firstAttribute="bottom" secondItem="xqU-7k-Vxg" secondAttribute="bottom" constant="4" 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"/>
<rect key="frame" x="24" y="685.66666666666663" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="BZv-RS-JfU"/>
</constraints>
......@@ -347,7 +248,7 @@
<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"/>
<rect key="frame" x="24" y="753.66666666666663" width="345" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="EUh-DN-fJh"/>
</constraints>
......@@ -355,7 +256,7 @@
<state key="normal" title="Button"/>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HAh-BZ-4Ka" userLabel="TermsButtonView">
<rect key="frame" x="135" y="1119" width="123.33333333333331" height="35"/>
<rect key="frame" x="135" y="834.66666666666663" 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"/>
......@@ -395,7 +296,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="1164" width="345" height="20.333333333333258"/>
<rect key="frame" x="24" y="879.66666666666663" width="345" height="20.333333333333371"/>
<constraints>
<constraint firstAttribute="height" constant="20.329999999999998" id="ZA1-TX-m9Y"/>
</constraints>
......@@ -423,7 +324,6 @@
<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 firstItem="WjF-6P-8Wn" firstAttribute="leading" secondItem="1Kx-s2-p1l" secondAttribute="trailing" constant="11" id="bI6-jl-1U8"/>
......@@ -431,17 +331,15 @@
<constraint firstItem="X7C-0H-IhU" firstAttribute="leading" secondItem="qrm-40-JLT" secondAttribute="leading" constant="24" id="d5O-SJ-gva"/>
<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="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="40" id="jpp-m0-Hqs"/>
<constraint firstItem="Cwz-uh-Zn5" 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 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"/>
......