Manos Chorianopoulos

add clickable links to CouponViewController

...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>0</integer> 10 + <integer>1</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>1</integer> 10 + <integer>0</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
8 import UIKit 8 import UIKit
9 import SwiftEventBus 9 import SwiftEventBus
10 10
11 -@objc public class CouponViewController: UIViewController { 11 +@objc public class CouponViewController: UIViewController, UITextViewDelegate {
12 @IBOutlet weak var mainView: UIView! 12 @IBOutlet weak var mainView: UIView!
13 @IBOutlet weak var backgroundImage: UIImageView! 13 @IBOutlet weak var backgroundImage: UIImageView!
14 @IBOutlet weak var scrollView: UIScrollView! 14 @IBOutlet weak var scrollView: UIScrollView!
...@@ -16,10 +16,11 @@ import SwiftEventBus ...@@ -16,10 +16,11 @@ import SwiftEventBus
16 @IBOutlet weak var couponImage: UIImageView! 16 @IBOutlet weak var couponImage: UIImageView!
17 @IBOutlet weak var couponImageHeight: NSLayoutConstraint! 17 @IBOutlet weak var couponImageHeight: NSLayoutConstraint!
18 @IBOutlet weak var nameLabel: UILabel! 18 @IBOutlet weak var nameLabel: UILabel!
19 - @IBOutlet weak var descriptionLabel: UILabel! 19 + @IBOutlet weak var descriptionTextView: UnselectableTappableTextView!
20 + @IBOutlet weak var descriptionTextViewHeight: NSLayoutConstraint!
20 @IBOutlet weak var redeemButton: UIButton! 21 @IBOutlet weak var redeemButton: UIButton!
21 @IBOutlet weak var termsButton: UIButton! 22 @IBOutlet weak var termsButton: UIButton!
22 - @IBOutlet weak var termsTextView: UITextView! 23 + @IBOutlet weak var termsTextView: UnselectableTappableTextView!
23 @IBOutlet weak var termsTextViewHeight: NSLayoutConstraint! 24 @IBOutlet weak var termsTextViewHeight: NSLayoutConstraint!
24 @IBOutlet weak var topBorderLine: UIImageView! 25 @IBOutlet weak var topBorderLine: UIImageView!
25 26
...@@ -39,6 +40,8 @@ import SwiftEventBus ...@@ -39,6 +40,8 @@ import SwiftEventBus
39 super.viewDidLoad() 40 super.viewDidLoad()
40 41
41 self.hidesBottomBarWhenPushed = true 42 self.hidesBottomBarWhenPushed = true
43 + descriptionTextView.delegate = self
44 + termsTextView.delegate = self
42 45
43 // Do any additional setup after loading the view. 46 // Do any additional setup after loading the view.
44 setBackButton() 47 setBackButton()
...@@ -78,7 +81,19 @@ import SwiftEventBus ...@@ -78,7 +81,19 @@ import SwiftEventBus
78 81
79 nameLabel.text = couponset?.name ?? "" 82 nameLabel.text = couponset?.name ?? ""
80 let htmlDescrText = couponset?.description ?? "" 83 let htmlDescrText = couponset?.description ?? ""
81 - descriptionLabel.text = htmlDescrText.htmlToString 84 +
85 + descriptionTextView.attributedText = htmlDescrText.htmlToAttributedString
86 + descriptionTextView.font = UIFont(name: "PFSquareSansPro-Regular", size: 17)
87 + descriptionTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00)
88 + descriptionTextView.textAlignment = .center
89 + descriptionTextView.isScrollEnabled = false
90 + descriptionTextView.isUserInteractionEnabled = true
91 + descriptionTextView.isEditable = false
92 + descriptionTextView.isSelectable = true
93 + descriptionTextView.dataDetectorTypes = [.link]
94 +
95 + let targetSize = CGSize(width: descriptionTextView.frame.width, height: CGFloat(MAXFLOAT))
96 + descriptionTextViewHeight.constant = descriptionTextView.sizeThatFits(targetSize).height
82 97
83 redeemButton.setTitle("Απόκτησέ το", for: .normal) 98 redeemButton.setTitle("Απόκτησέ το", for: .normal)
84 redeemButton.setTitleColor(.white, for: .normal) 99 redeemButton.setTitleColor(.white, for: .normal)
...@@ -114,6 +129,10 @@ import SwiftEventBus ...@@ -114,6 +129,10 @@ import SwiftEventBus
114 termsTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00) 129 termsTextView.textColor = UIColor(red: 0.25, green: 0.33, blue: 0.39, alpha: 1.00)
115 termsTextView.textAlignment = .center 130 termsTextView.textAlignment = .center
116 termsTextView.isScrollEnabled = false 131 termsTextView.isScrollEnabled = false
132 + termsTextView.isUserInteractionEnabled = true
133 + termsTextView.isEditable = false
134 + termsTextView.isSelectable = true
135 + termsTextView.dataDetectorTypes = [.link]
117 136
118 toggleTerms() 137 toggleTerms()
119 138
...@@ -126,6 +145,13 @@ import SwiftEventBus ...@@ -126,6 +145,13 @@ import SwiftEventBus
126 145
127 } 146 }
128 147
148 + public func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
149 + UIApplication.shared.open(URL)
150 +
151 + // Disable `.preview` by 3D Touch and other interactions
152 + return false
153 + }
154 +
129 // MARK: - Functions 155 // MARK: - Functions
130 func nonTelcoDialog(_ alertTitle: String, _ alertSubTitle: String) -> Void { 156 func nonTelcoDialog(_ alertTitle: String, _ alertSubTitle: String) -> Void {
131 157
......
...@@ -1384,7 +1384,7 @@ ...@@ -1384,7 +1384,7 @@
1384 <!--Coupon Barcode View Controller--> 1384 <!--Coupon Barcode View Controller-->
1385 <scene sceneID="7Dn-sf-iEB"> 1385 <scene sceneID="7Dn-sf-iEB">
1386 <objects> 1386 <objects>
1387 - <viewController storyboardIdentifier="CouponBarcodeViewController" hidesBottomBarWhenPushed="YES" id="CDt-eI-msA" customClass="CouponBarcodeViewController" customModule="ResourcesBundle" customModuleProvider="target" sceneMemberID="viewController"> 1387 + <viewController storyboardIdentifier="CouponBarcodeViewController" hidesBottomBarWhenPushed="YES" id="CDt-eI-msA" customClass="CouponBarcodeViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController">
1388 <view key="view" contentMode="scaleToFill" id="p8P-DP-0kH"> 1388 <view key="view" contentMode="scaleToFill" id="p8P-DP-0kH">
1389 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> 1389 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
1390 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 1390 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
...@@ -1438,7 +1438,7 @@ ...@@ -1438,7 +1438,7 @@
1438 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zdf-1r-FdJ" userLabel="Coupon View"> 1438 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Zdf-1r-FdJ" userLabel="Coupon View">
1439 <rect key="frame" x="152.5" y="397" width="109" height="55"/> 1439 <rect key="frame" x="152.5" y="397" width="109" height="55"/>
1440 <subviews> 1440 <subviews>
1441 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BJS-kk-CBZ" customClass="CopyableLabel" customModule="ResourcesBundle" customModuleProvider="target"> 1441 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BJS-kk-CBZ" customClass="CopyableLabel" customModule="SwiftWarplyFramework" customModuleProvider="target">
1442 <rect key="frame" x="20" y="13.5" width="69" height="28"/> 1442 <rect key="frame" x="20" y="13.5" width="69" height="28"/>
1443 <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="28"/> 1443 <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="28"/>
1444 <color key="textColor" red="0.25490196078431371" green="0.33333333333333331" blue="0.39215686274509803" alpha="1" colorSpace="calibratedRGB"/> 1444 <color key="textColor" red="0.25490196078431371" green="0.33333333333333331" blue="0.39215686274509803" alpha="1" colorSpace="calibratedRGB"/>
...@@ -2073,7 +2073,7 @@ ...@@ -2073,7 +2073,7 @@
2073 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 2073 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
2074 <subviews> 2074 <subviews>
2075 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jqu-cp-CWU"> 2075 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jqu-cp-CWU">
2076 - <rect key="frame" x="0.0" y="44" width="414" height="852"/> 2076 + <rect key="frame" x="0.0" y="48" width="414" height="848"/>
2077 <subviews> 2077 <subviews>
2078 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupons_scrollview_white" translatesAutoresizingMaskIntoConstraints="NO" id="Oep-XD-blB"> 2078 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="coupons_scrollview_white" translatesAutoresizingMaskIntoConstraints="NO" id="Oep-XD-blB">
2079 <rect key="frame" x="0.0" y="0.0" width="414" height="852"/> 2079 <rect key="frame" x="0.0" y="0.0" width="414" height="852"/>
...@@ -2096,14 +2096,18 @@ ...@@ -2096,14 +2096,18 @@
2096 <color key="textColor" red="0.25490196078431371" green="0.33333333333333331" blue="0.39215686274509803" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> 2096 <color key="textColor" red="0.25490196078431371" green="0.33333333333333331" blue="0.39215686274509803" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
2097 <nil key="highlightedColor"/> 2097 <nil key="highlightedColor"/>
2098 </label> 2098 </label>
2099 - <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="dSA-lM-N5v"> 2099 + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YG-ey-cyw" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework">
2100 - <rect key="frame" x="20" y="269" width="374" height="51"/> 2100 + <rect key="frame" x="20" y="269" width="374" height="0.0"/>
2101 - <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="17"/> 2101 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2102 - <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/> 2102 + <constraints>
2103 - <nil key="highlightedColor"/> 2103 + <constraint firstAttribute="height" id="GaK-QZ-z7W"/>
2104 - </label> 2104 + </constraints>
2105 + <color key="textColor" red="0.25490196079999999" green="0.33333333329999998" blue="0.3921568627" alpha="1" colorSpace="calibratedRGB"/>
2106 + <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="15"/>
2107 + <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
2108 + </textView>
2105 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FCd-hv-dHg"> 2109 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FCd-hv-dHg">
2106 - <rect key="frame" x="165" y="420" width="84" height="44"/> 2110 + <rect key="frame" x="165" y="369" width="84" height="44"/>
2107 <constraints> 2111 <constraints>
2108 <constraint firstAttribute="height" constant="44" id="n2w-Tx-hhO"/> 2112 <constraint firstAttribute="height" constant="44" id="n2w-Tx-hhO"/>
2109 </constraints> 2113 </constraints>
...@@ -2117,7 +2121,7 @@ ...@@ -2117,7 +2121,7 @@
2117 </connections> 2121 </connections>
2118 </button> 2122 </button>
2119 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KvN-fk-rlm"> 2123 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KvN-fk-rlm">
2120 - <rect key="frame" x="103.5" y="484" width="207" height="50"/> 2124 + <rect key="frame" x="103.5" y="433" width="207" height="50"/>
2121 <constraints> 2125 <constraints>
2122 <constraint firstAttribute="height" constant="50" id="O7T-ug-rTB"/> 2126 <constraint firstAttribute="height" constant="50" id="O7T-ug-rTB"/>
2123 </constraints> 2127 </constraints>
...@@ -2131,8 +2135,8 @@ ...@@ -2131,8 +2135,8 @@
2131 <action selector="termsButtonAction:" destination="S8k-2D-tGT" eventType="touchUpInside" id="Cdz-mV-gqb"/> 2135 <action selector="termsButtonAction:" destination="S8k-2D-tGT" eventType="touchUpInside" id="Cdz-mV-gqb"/>
2132 </connections> 2136 </connections>
2133 </button> 2137 </button>
2134 - <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="siA-c8-Ub8"> 2138 + <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="center" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="siA-c8-Ub8" customClass="UnselectableTappableTextView" customModule="SwiftWarplyFramework">
2135 - <rect key="frame" x="20" y="544" width="374" height="0.0"/> 2139 + <rect key="frame" x="20" y="493" width="374" height="0.0"/>
2136 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 2140 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2137 <constraints> 2141 <constraints>
2138 <constraint firstAttribute="height" id="BWJ-i6-UeO"/> 2142 <constraint firstAttribute="height" id="BWJ-i6-UeO"/>
...@@ -2144,13 +2148,13 @@ ...@@ -2144,13 +2148,13 @@
2144 </subviews> 2148 </subviews>
2145 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 2149 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
2146 <constraints> 2150 <constraints>
2151 + <constraint firstItem="FCd-hv-dHg" firstAttribute="top" secondItem="2YG-ey-cyw" secondAttribute="bottom" constant="100" id="0ya-Ww-UPb"/>
2147 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="KvN-fk-rlm" secondAttribute="bottom" constant="30" id="2Md-hq-rQl"/> 2152 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="KvN-fk-rlm" secondAttribute="bottom" constant="30" id="2Md-hq-rQl"/>
2148 <constraint firstItem="KvN-fk-rlm" firstAttribute="width" secondItem="uTN-Qr-wBi" secondAttribute="width" multiplier="0.5" id="2R9-MN-w6g"/> 2153 <constraint firstItem="KvN-fk-rlm" firstAttribute="width" secondItem="uTN-Qr-wBi" secondAttribute="width" multiplier="0.5" id="2R9-MN-w6g"/>
2149 - <constraint firstItem="dSA-lM-N5v" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="6B9-Tx-YcO"/> 2154 + <constraint firstAttribute="trailing" secondItem="2YG-ey-cyw" secondAttribute="trailing" constant="20" id="6S5-EO-Gwn"/>
2150 <constraint firstAttribute="trailing" secondItem="isU-Qv-94G" secondAttribute="trailing" constant="20" id="7cL-ob-hXY"/> 2155 <constraint firstAttribute="trailing" secondItem="isU-Qv-94G" secondAttribute="trailing" constant="20" id="7cL-ob-hXY"/>
2151 <constraint firstAttribute="trailing" secondItem="siA-c8-Ub8" secondAttribute="trailing" constant="20" id="C8g-1f-Ef3"/> 2156 <constraint firstAttribute="trailing" secondItem="siA-c8-Ub8" secondAttribute="trailing" constant="20" id="C8g-1f-Ef3"/>
2152 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="siA-c8-Ub8" secondAttribute="bottom" constant="30" id="FOo-d7-zvC"/> 2157 <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="siA-c8-Ub8" secondAttribute="bottom" constant="30" id="FOo-d7-zvC"/>
2153 - <constraint firstAttribute="trailing" secondItem="dSA-lM-N5v" secondAttribute="trailing" constant="20" id="LZq-UM-EE3"/>
2154 <constraint firstItem="siA-c8-Ub8" firstAttribute="top" secondItem="KvN-fk-rlm" secondAttribute="bottom" constant="10" id="MHv-4j-YYr"/> 2158 <constraint firstItem="siA-c8-Ub8" firstAttribute="top" secondItem="KvN-fk-rlm" secondAttribute="bottom" constant="10" id="MHv-4j-YYr"/>
2155 <constraint firstItem="FCd-hv-dHg" firstAttribute="centerX" secondItem="uTN-Qr-wBi" secondAttribute="centerX" id="OFE-Xc-Ui3"/> 2159 <constraint firstItem="FCd-hv-dHg" firstAttribute="centerX" secondItem="uTN-Qr-wBi" secondAttribute="centerX" id="OFE-Xc-Ui3"/>
2156 <constraint firstItem="isU-Qv-94G" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="PR6-tJ-tw0"/> 2160 <constraint firstItem="isU-Qv-94G" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="PR6-tJ-tw0"/>
...@@ -2158,11 +2162,11 @@ ...@@ -2158,11 +2162,11 @@
2158 <constraint firstAttribute="trailing" secondItem="3SX-fR-ph2" secondAttribute="trailing" id="WJj-1Q-Erx"/> 2162 <constraint firstAttribute="trailing" secondItem="3SX-fR-ph2" secondAttribute="trailing" id="WJj-1Q-Erx"/>
2159 <constraint firstItem="siA-c8-Ub8" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="cpX-xa-q0z"/> 2163 <constraint firstItem="siA-c8-Ub8" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="cpX-xa-q0z"/>
2160 <constraint firstItem="KvN-fk-rlm" firstAttribute="top" secondItem="FCd-hv-dHg" secondAttribute="bottom" constant="20" id="fAV-Vc-ICH"/> 2164 <constraint firstItem="KvN-fk-rlm" firstAttribute="top" secondItem="FCd-hv-dHg" secondAttribute="bottom" constant="20" id="fAV-Vc-ICH"/>
2161 - <constraint firstItem="dSA-lM-N5v" firstAttribute="top" secondItem="isU-Qv-94G" secondAttribute="bottom" constant="15" id="k8m-Rf-p7u"/> 2165 + <constraint firstItem="2YG-ey-cyw" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" constant="20" id="h4k-WL-Eo1"/>
2166 + <constraint firstItem="2YG-ey-cyw" firstAttribute="top" secondItem="isU-Qv-94G" secondAttribute="bottom" constant="15" id="mbx-ls-aMK"/>
2162 <constraint firstItem="3SX-fR-ph2" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" id="nBV-nm-wOq"/> 2167 <constraint firstItem="3SX-fR-ph2" firstAttribute="leading" secondItem="uTN-Qr-wBi" secondAttribute="leading" id="nBV-nm-wOq"/>
2163 <constraint firstItem="3SX-fR-ph2" firstAttribute="top" secondItem="uTN-Qr-wBi" secondAttribute="top" id="oaX-KH-TEh"/> 2168 <constraint firstItem="3SX-fR-ph2" firstAttribute="top" secondItem="uTN-Qr-wBi" secondAttribute="top" id="oaX-KH-TEh"/>
2164 <constraint firstItem="isU-Qv-94G" firstAttribute="top" secondItem="3SX-fR-ph2" secondAttribute="bottom" constant="20" id="vQf-lC-GgG"/> 2169 <constraint firstItem="isU-Qv-94G" firstAttribute="top" secondItem="3SX-fR-ph2" secondAttribute="bottom" constant="20" id="vQf-lC-GgG"/>
2165 - <constraint firstItem="FCd-hv-dHg" firstAttribute="top" secondItem="dSA-lM-N5v" secondAttribute="bottom" constant="100" id="x3c-xH-QFZ"/>
2166 </constraints> 2170 </constraints>
2167 </view> 2171 </view>
2168 </subviews> 2172 </subviews>
...@@ -2215,7 +2219,8 @@ ...@@ -2215,7 +2219,8 @@
2215 <outlet property="backgroundImage" destination="Oep-XD-blB" id="YaT-qr-rry"/> 2219 <outlet property="backgroundImage" destination="Oep-XD-blB" id="YaT-qr-rry"/>
2216 <outlet property="couponImage" destination="3SX-fR-ph2" id="Ov2-Bw-eWL"/> 2220 <outlet property="couponImage" destination="3SX-fR-ph2" id="Ov2-Bw-eWL"/>
2217 <outlet property="couponImageHeight" destination="zUx-Yd-in7" id="7vo-8L-d8o"/> 2221 <outlet property="couponImageHeight" destination="zUx-Yd-in7" id="7vo-8L-d8o"/>
2218 - <outlet property="descriptionLabel" destination="dSA-lM-N5v" id="v6k-3l-uaA"/> 2222 + <outlet property="descriptionTextView" destination="2YG-ey-cyw" id="YAv-KA-iaX"/>
2223 + <outlet property="descriptionTextViewHeight" destination="GaK-QZ-z7W" id="ilM-IK-1sd"/>
2219 <outlet property="mainView" destination="Jqu-cp-CWU" id="Q0Z-dO-MXL"/> 2224 <outlet property="mainView" destination="Jqu-cp-CWU" id="Q0Z-dO-MXL"/>
2220 <outlet property="nameLabel" destination="isU-Qv-94G" id="Vc8-gh-Cth"/> 2225 <outlet property="nameLabel" destination="isU-Qv-94G" id="Vc8-gh-Cth"/>
2221 <outlet property="redeemButton" destination="FCd-hv-dHg" id="3Jw-Yn-uNr"/> 2226 <outlet property="redeemButton" destination="FCd-hv-dHg" id="3Jw-Yn-uNr"/>
......