Manos Chorianopoulos

add dfy active code copy functionality

...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
18 1E87A9EF28C2021200C79F90 /* ContextualViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */; }; 18 1E87A9EF28C2021200C79F90 /* ContextualViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */; };
19 1EA1AF0A2835346A008998AA /* CouponsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */; }; 19 1EA1AF0A2835346A008998AA /* CouponsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */; };
20 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */; }; 20 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */; };
21 + 1EA771AC290977CA0030924C /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA771AB290977CA0030924C /* CopyableLabel.swift */; };
21 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AA28816B680063777A /* ShareViewController.swift */; }; 22 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AA28816B680063777A /* ShareViewController.swift */; };
22 1EB236AD28816C560063777A /* NumberPopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AC28816C560063777A /* NumberPopupViewController.swift */; }; 23 1EB236AD28816C560063777A /* NumberPopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AC28816C560063777A /* NumberPopupViewController.swift */; };
23 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */; }; 24 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */; };
...@@ -180,6 +181,7 @@ ...@@ -180,6 +181,7 @@
180 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextualViewController.swift; sourceTree = "<group>"; }; 181 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextualViewController.swift; sourceTree = "<group>"; };
181 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsTableViewCell.swift; sourceTree = "<group>"; }; 182 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponsTableViewCell.swift; sourceTree = "<group>"; };
182 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxTableViewCell.swift; sourceTree = "<group>"; }; 183 1EA2BB782865BFE8003F2AB0 /* InboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboxTableViewCell.swift; sourceTree = "<group>"; };
184 + 1EA771AB290977CA0030924C /* CopyableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyableLabel.swift; sourceTree = "<group>"; };
183 1EB236AA28816B680063777A /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; }; 185 1EB236AA28816B680063777A /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
184 1EB236AC28816C560063777A /* NumberPopupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberPopupViewController.swift; sourceTree = "<group>"; }; 186 1EB236AC28816C560063777A /* NumberPopupViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberPopupViewController.swift; sourceTree = "<group>"; };
185 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumbersTableViewCell.swift; sourceTree = "<group>"; }; 187 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumbersTableViewCell.swift; sourceTree = "<group>"; };
...@@ -464,6 +466,7 @@ ...@@ -464,6 +466,7 @@
464 E6A77A35282BB4CB0045BBA8 /* MakeItAPresentViewController.swift */, 466 E6A77A35282BB4CB0045BBA8 /* MakeItAPresentViewController.swift */,
465 E6A7785A282933E40045BBA8 /* Helpers */, 467 E6A7785A282933E40045BBA8 /* Helpers */,
466 E6A77861282933E50045BBA8 /* Main.storyboard */, 468 E6A77861282933E50045BBA8 /* Main.storyboard */,
469 + 1EA771AB290977CA0030924C /* CopyableLabel.swift */,
467 1E4410B028F5855000859F92 /* CampaignCategory.swift */, 470 1E4410B028F5855000859F92 /* CampaignCategory.swift */,
468 1EDCDFAB28DB29E8002ED8F0 /* AnalysisMoreViewCell.swift */, 471 1EDCDFAB28DB29E8002ED8F0 /* AnalysisMoreViewCell.swift */,
469 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */, 472 1E87A9EE28C2021200C79F90 /* ContextualViewController.swift */,
...@@ -940,6 +943,7 @@ ...@@ -940,6 +943,7 @@
940 E6A77A36282BB4CB0045BBA8 /* MakeItAPresentViewController.swift in Sources */, 943 E6A77A36282BB4CB0045BBA8 /* MakeItAPresentViewController.swift in Sources */,
941 E6A77947282933E70045BBA8 /* FMDatabaseQueue.m in Sources */, 944 E6A77947282933E70045BBA8 /* FMDatabaseQueue.m in Sources */,
942 E6A77922282933E60045BBA8 /* NSData+SSToolkitAdditions.m in Sources */, 945 E6A77922282933E60045BBA8 /* NSData+SSToolkitAdditions.m in Sources */,
946 + 1EA771AC290977CA0030924C /* CopyableLabel.swift in Sources */,
943 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */, 947 1EB236AB28816B680063777A /* ShareViewController.swift in Sources */,
944 E6A778E7282933E60045BBA8 /* DetailsViewController.swift in Sources */, 948 E6A778E7282933E60045BBA8 /* DetailsViewController.swift in Sources */,
945 1EB5F4CA285370C90016F36E /* LoyaltyAnalysisViewController.swift in Sources */, 949 1EB5F4CA285370C90016F36E /* LoyaltyAnalysisViewController.swift in Sources */,
......
1 +//
2 +// CopyableLabel.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 26/10/22.
6 +//
7 +
8 +import Foundation
9 +import UIKit
10 +
11 +class CopyableLabel: UILabel {
12 +
13 + override init(frame: CGRect) {
14 + super.init(frame: frame)
15 + sharedInit()
16 + }
17 +
18 + required init(coder aDecoder: NSCoder) {
19 + super.init(coder: aDecoder)!
20 + sharedInit()
21 + }
22 +
23 + func sharedInit() {
24 + isUserInteractionEnabled = true
25 + addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(showMenu(sender:))))
26 + }
27 +
28 + @objc
29 + func showMenu(sender: AnyObject?) {
30 + becomeFirstResponder()
31 + let menu = UIMenuController.shared
32 + if !menu.isMenuVisible {
33 + menu.setTargetRect(bounds, in: self)
34 + menu.setMenuVisible(true, animated: true)
35 + }
36 + }
37 +
38 + override var canBecomeFirstResponder: Bool {
39 + return true
40 + }
41 +
42 + override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
43 + if action == #selector(UIResponderStandardEditActions.copy(_:)) {
44 + return true
45 + }
46 + return false
47 + }
48 +
49 + override func copy(_ sender: Any?) {
50 + let board = UIPasteboard.general
51 + if var textToCopy = text {
52 + if (textToCopy.contains(", ")) {
53 + textToCopy = textToCopy.replacingOccurrences(of: ", ", with: "")
54 + }
55 + print(textToCopy)
56 + board.string = textToCopy
57 + }
58 +
59 +// board.string = text
60 + let menu = UIMenuController.shared
61 + menu.setMenuVisible(false, animated: true)
62 + }
63 +
64 +}
...@@ -944,7 +944,7 @@ ...@@ -944,7 +944,7 @@
944 <rect key="frame" x="10" y="475" width="394" height="100"/> 944 <rect key="frame" x="10" y="475" width="394" height="100"/>
945 <subviews> 945 <subviews>
946 <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg"> 946 <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg">
947 - <rect key="frame" x="20" y="23" width="254" height="54"/> 947 + <rect key="frame" x="20" y="32.5" width="254" height="35"/>
948 <subviews> 948 <subviews>
949 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL"> 949 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL">
950 <rect key="frame" x="0.0" y="0.0" width="254" height="19"/> 950 <rect key="frame" x="0.0" y="0.0" width="254" height="19"/>
...@@ -952,19 +952,52 @@ ...@@ -952,19 +952,52 @@
952 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> 952 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
953 <nil key="highlightedColor"/> 953 <nil key="highlightedColor"/>
954 </label> 954 </label>
955 + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vUM-ac-164">
956 + <rect key="frame" x="0.0" y="21" width="254" height="0.0"/>
957 + <subviews>
958 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cjr-c8-pL3">
959 + <rect key="frame" x="0.0" y="0.0" width="254" height="0.0"/>
960 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
961 + <constraints>
962 + <constraint firstAttribute="height" id="eQ1-yY-Dk0"/>
963 + </constraints>
964 + </view>
965 + </subviews>
966 + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
967 + <constraints>
968 + <constraint firstItem="Cjr-c8-pL3" firstAttribute="top" secondItem="gKJ-wy-UjY" secondAttribute="top" id="00U-6c-1f2"/>
969 + <constraint firstItem="Cjr-c8-pL3" firstAttribute="bottom" secondItem="gKJ-wy-UjY" secondAttribute="bottom" id="PDW-hq-mQs"/>
970 + <constraint firstItem="Cjr-c8-pL3" firstAttribute="trailing" secondItem="gKJ-wy-UjY" secondAttribute="trailing" id="S8N-x6-zh1"/>
971 + <constraint firstItem="Cjr-c8-pL3" firstAttribute="leading" secondItem="gKJ-wy-UjY" secondAttribute="leading" id="SbU-3v-rwK"/>
972 + <constraint firstItem="Cjr-c8-pL3" firstAttribute="width" secondItem="4rG-Ia-uel" secondAttribute="width" id="tMz-sE-6TW"/>
973 + <constraint firstAttribute="height" id="zkI-mG-qPM"/>
974 + </constraints>
975 + <viewLayoutGuide key="contentLayoutGuide" id="gKJ-wy-UjY"/>
976 + <viewLayoutGuide key="frameLayoutGuide" id="4rG-Ia-uel"/>
977 + </scrollView>
955 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx"> 978 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx">
956 <rect key="frame" x="0.0" y="21" width="254" height="19"/> 979 <rect key="frame" x="0.0" y="21" width="254" height="19"/>
980 + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
957 <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="19"/> 981 <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="19"/>
958 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> 982 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
959 <nil key="highlightedColor"/> 983 <nil key="highlightedColor"/>
960 </label> 984 </label>
961 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA"> 985 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA">
962 - <rect key="frame" x="0.0" y="42" width="254" height="12"/> 986 + <rect key="frame" x="0.0" y="23" width="254" height="12"/>
963 <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="12"/> 987 <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="12"/>
964 <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> 988 <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
965 <nil key="highlightedColor"/> 989 <nil key="highlightedColor"/>
966 </label> 990 </label>
967 </subviews> 991 </subviews>
992 + <constraints>
993 + <constraint firstItem="vUM-ac-164" firstAttribute="leading" secondItem="MCY-xv-vpg" secondAttribute="leading" id="eV5-RL-miL"/>
994 + <constraint firstAttribute="trailing" secondItem="vUM-ac-164" secondAttribute="trailing" id="u5q-oF-oPt"/>
995 + </constraints>
996 + <variation key="default">
997 + <mask key="subviews">
998 + <exclude reference="qBe-Jw-QUx"/>
999 + </mask>
1000 + </variation>
968 </stackView> 1001 </stackView>
969 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="active_code_logo" translatesAutoresizingMaskIntoConstraints="NO" id="xwu-AC-ij3"> 1002 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="active_code_logo" translatesAutoresizingMaskIntoConstraints="NO" id="xwu-AC-ij3">
970 <rect key="frame" x="294" y="10" width="80" height="80"/> 1003 <rect key="frame" x="294" y="10" width="80" height="80"/>
...@@ -1191,9 +1224,13 @@ ...@@ -1191,9 +1224,13 @@
1191 </constraints> 1224 </constraints>
1192 </view> 1225 </view>
1193 <connections> 1226 <connections>
1227 + <outlet property="activeCodeContentView" destination="Cjr-c8-pL3" id="KXI-Mq-PWS"/>
1228 + <outlet property="activeCodeContentViewHeight" destination="eQ1-yY-Dk0" id="J69-Hr-XD3"/>
1194 <outlet property="activeCodeExpirationLabel" destination="qL0-3b-eqA" id="XjP-lI-UtJ"/> 1229 <outlet property="activeCodeExpirationLabel" destination="qL0-3b-eqA" id="XjP-lI-UtJ"/>
1195 <outlet property="activeCodeImage" destination="xwu-AC-ij3" id="iU8-rU-Q07"/> 1230 <outlet property="activeCodeImage" destination="xwu-AC-ij3" id="iU8-rU-Q07"/>
1196 <outlet property="activeCodeLabel" destination="qBe-Jw-QUx" id="mlj-zT-T0Z"/> 1231 <outlet property="activeCodeLabel" destination="qBe-Jw-QUx" id="mlj-zT-T0Z"/>
1232 + <outlet property="activeCodeScrollView" destination="vUM-ac-164" id="kIA-4v-lGx"/>
1233 + <outlet property="activeCodeScrollViewHeight" destination="zkI-mG-qPM" id="hXL-Rp-DQz"/>
1197 <outlet property="activeCodeView" destination="zFT-By-XHL" id="M0w-Ln-iC9"/> 1234 <outlet property="activeCodeView" destination="zFT-By-XHL" id="M0w-Ln-iC9"/>
1198 <outlet property="activeCodeViewHeight" destination="7r0-fu-7H9" id="nDr-bk-ViP"/> 1235 <outlet property="activeCodeViewHeight" destination="7r0-fu-7H9" id="nDr-bk-ViP"/>
1199 <outlet property="activeCodesCountLabel" destination="ucC-u4-AQL" id="BCn-Ul-WqA"/> 1236 <outlet property="activeCodesCountLabel" destination="ucC-u4-AQL" id="BCn-Ul-WqA"/>
......
...@@ -40,6 +40,10 @@ import SwiftEventBus ...@@ -40,6 +40,10 @@ import SwiftEventBus
40 @IBOutlet weak var emptyView: UIView! 40 @IBOutlet weak var emptyView: UIView!
41 @IBOutlet weak var emptyImage: UIImageView! 41 @IBOutlet weak var emptyImage: UIImageView!
42 @IBOutlet weak var emptyLabel: UILabel! 42 @IBOutlet weak var emptyLabel: UILabel!
43 + @IBOutlet weak var activeCodeScrollView: UIScrollView!
44 + @IBOutlet weak var activeCodeScrollViewHeight: NSLayoutConstraint!
45 + @IBOutlet weak var activeCodeContentView: UIView!
46 + @IBOutlet weak var activeCodeContentViewHeight: NSLayoutConstraint!
43 47
44 public var coupons:Array<swiftApi.CouponItemModel> = swiftApi().getCouponList() 48 public var coupons:Array<swiftApi.CouponItemModel> = swiftApi().getCouponList()
45 public var dfyCoupons:Array<swiftApi.ActiveDFYCouponModel> = swiftApi().getActiveDFYCoupons() 49 public var dfyCoupons:Array<swiftApi.ActiveDFYCouponModel> = swiftApi().getActiveDFYCoupons()
...@@ -237,7 +241,21 @@ import SwiftEventBus ...@@ -237,7 +241,21 @@ import SwiftEventBus
237 } 241 }
238 242
239 activeCodesCountLabel.text = "Ενεργός κωδικός:" 243 activeCodesCountLabel.text = "Ενεργός κωδικός:"
240 - activeCodeLabel.text = dfyCoupons[0]._code 244 + // activeCodeLabel.text = dfyCoupons[0]._code
245 + let newLabel = CopyableLabel()
246 + newLabel.text = String(dfyCoupons[0]._code)
247 + newLabel.font = UIFont(name: "PFSquareSansPro-Bold", size: 19)
248 + newLabel.textColor = UIColor(rgb: 0x3C5365)
249 + newLabel.frame.size.width = newLabel.intrinsicContentSize.width
250 + newLabel.frame.size.height = newLabel.intrinsicContentSize.height // tagHeight
251 + activeCodeContentView.addSubview(newLabel)
252 + // set the btn frame origin
253 + newLabel.frame.origin.x = 0
254 + newLabel.frame.origin.y = 0
255 + let scrollHeight = newLabel.intrinsicContentSize.height
256 + activeCodeContentViewHeight.constant = scrollHeight
257 + activeCodeScrollViewHeight.constant = scrollHeight
258 +
241 activeCodeExpirationLabel.isHidden = false 259 activeCodeExpirationLabel.isHidden = false
242 if (daysFromNow == "1") { 260 if (daysFromNow == "1") {
243 activeCodeExpirationLabel.text = "Λήγει σε " + daysFromNow + " ημέρα" 261 activeCodeExpirationLabel.text = "Λήγει σε " + daysFromNow + " ημέρα"
...@@ -246,19 +264,61 @@ import SwiftEventBus ...@@ -246,19 +264,61 @@ import SwiftEventBus
246 } 264 }
247 265
248 } else { 266 } else {
249 - var couponCodesString = "" 267 + var tagHeight:CGFloat = 30
268 + let tagPadding: CGFloat = 0
269 + let tagSpacingX: CGFloat = 0
270 + let tagSpacingY: CGFloat = 2
271 +
272 + let containerWidth = activeCodeContentView.frame.size.width
273 +
274 + var currentOriginX: CGFloat = 0
275 + var currentOriginY: CGFloat = 0
276 +
277 + // var couponCodesString = ""
250 for (index, item) in dfyCoupons.enumerated() { 278 for (index, item) in dfyCoupons.enumerated() {
279 + let newLabel = CopyableLabel()
280 + newLabel.font = UIFont(name: "PFSquareSansPro-Bold", size: 19)
281 + newLabel.textColor = UIColor(rgb: 0x3C5365)
282 +
251 if (index == (dfyCoupons.endIndex - 1)) { 283 if (index == (dfyCoupons.endIndex - 1)) {
252 - couponCodesString += String(item._code) 284 + // couponCodesString += String(item._code)
285 + newLabel.text = String(item._code)
253 } else { 286 } else {
254 - couponCodesString += String(item._code) + ", " 287 + // couponCodesString += String(item._code) + ", "
288 + newLabel.text = String(item._code) + ", "
289 + }
290 +
291 + newLabel.frame.size.width = newLabel.intrinsicContentSize.width + tagPadding
292 + newLabel.frame.size.height = newLabel.intrinsicContentSize.height // tagHeight
293 + tagHeight = newLabel.intrinsicContentSize.height
294 + activeCodeContentView.addSubview(newLabel)
295 +
296 + // if current X + label width will be greater than container view width
297 + // "move to next row"
298 + if currentOriginX + newLabel.frame.width > containerWidth {
299 + currentOriginX = 0
300 + currentOriginY += tagHeight + tagSpacingY
255 } 301 }
256 302
303 + // set the btn frame origin
304 + newLabel.frame.origin.x = currentOriginX
305 + newLabel.frame.origin.y = currentOriginY
306 +
307 + // increment current X by btn width + spacing
308 + currentOriginX += newLabel.frame.width + tagSpacingX
257 } 309 }
258 310
259 activeCodesCountLabel.text = String(dfyCoupons.count) + " Ενεργοί κωδικοί:" 311 activeCodesCountLabel.text = String(dfyCoupons.count) + " Ενεργοί κωδικοί:"
260 - activeCodeLabel.text = couponCodesString 312 + // activeCodeLabel.text = couponCodesString
261 activeCodeExpirationLabel.isHidden = true 313 activeCodeExpirationLabel.isHidden = true
314 +
315 + // update container view height
316 + activeCodeContentViewHeight.constant = currentOriginY + tagHeight
317 + if ((currentOriginY + tagHeight) <= (2 * tagHeight + tagSpacingY)) {
318 + activeCodeScrollViewHeight.constant = currentOriginY + tagHeight
319 + } else {
320 + activeCodeScrollViewHeight.constant = 2 * tagHeight + tagSpacingY
321 + }
262 } 322 }
263 } else { 323 } else {
264 activeCodeLabel.text = "-" 324 activeCodeLabel.text = "-"
......