Showing
12 changed files
with
800 additions
and
15 deletions
... | @@ -17,6 +17,10 @@ | ... | @@ -17,6 +17,10 @@ |
17 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BD2DDF427A00CD3418 /* PingLCG-Bold.otf */; }; | 17 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BD2DDF427A00CD3418 /* PingLCG-Bold.otf */; }; |
18 | 1EA8E5C12DDF427A00CD3418 /* PingLCG-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BE2DDF427A00CD3418 /* PingLCG-Light.otf */; }; | 18 | 1EA8E5C12DDF427A00CD3418 /* PingLCG-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BE2DDF427A00CD3418 /* PingLCG-Light.otf */; }; |
19 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BF2DDF427A00CD3418 /* PingLCG-Regular.otf */; }; | 19 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1EA8E5BF2DDF427A00CD3418 /* PingLCG-Regular.otf */; }; |
20 | + 1EB4F4252DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EB4F4242DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib */; }; | ||
21 | + 1EB4F4262DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB4F4232DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.swift */; }; | ||
22 | + 1EB4F42B2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1EB4F42A2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib */; }; | ||
23 | + 1EB4F42C2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB4F4292DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.swift */; }; | ||
20 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; | 24 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; |
21 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; | 25 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; |
22 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; | 26 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; |
... | @@ -151,6 +155,10 @@ | ... | @@ -151,6 +155,10 @@ |
151 | 1EA8E5BD2DDF427A00CD3418 /* PingLCG-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Bold.otf"; path = "fonts/PingLCG-Bold.otf"; sourceTree = "<group>"; }; | 155 | 1EA8E5BD2DDF427A00CD3418 /* PingLCG-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Bold.otf"; path = "fonts/PingLCG-Bold.otf"; sourceTree = "<group>"; }; |
152 | 1EA8E5BE2DDF427A00CD3418 /* PingLCG-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Light.otf"; path = "fonts/PingLCG-Light.otf"; sourceTree = "<group>"; }; | 156 | 1EA8E5BE2DDF427A00CD3418 /* PingLCG-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Light.otf"; path = "fonts/PingLCG-Light.otf"; sourceTree = "<group>"; }; |
153 | 1EA8E5BF2DDF427A00CD3418 /* PingLCG-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Regular.otf"; path = "fonts/PingLCG-Regular.otf"; sourceTree = "<group>"; }; | 157 | 1EA8E5BF2DDF427A00CD3418 /* PingLCG-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "PingLCG-Regular.otf"; path = "fonts/PingLCG-Regular.otf"; sourceTree = "<group>"; }; |
158 | + 1EB4F4232DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsBannerOffersScrollTableViewCell.swift; sourceTree = "<group>"; }; | ||
159 | + 1EB4F4242DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsBannerOffersScrollTableViewCell.xib; sourceTree = "<group>"; }; | ||
160 | + 1EB4F4292DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyRewardsOffersScrollTableViewCell.swift; sourceTree = "<group>"; }; | ||
161 | + 1EB4F42A2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MyRewardsOffersScrollTableViewCell.xib; sourceTree = "<group>"; }; | ||
154 | A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; | 162 | A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; |
155 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; | 163 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; |
156 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; | 164 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; |
... | @@ -290,6 +298,13 @@ | ... | @@ -290,6 +298,13 @@ |
290 | /* End PBXFrameworksBuildPhase section */ | 298 | /* End PBXFrameworksBuildPhase section */ |
291 | 299 | ||
292 | /* Begin PBXGroup section */ | 300 | /* Begin PBXGroup section */ |
301 | + 1E00E6A22DDF71BD0012F164 /* models */ = { | ||
302 | + isa = PBXGroup; | ||
303 | + children = ( | ||
304 | + ); | ||
305 | + path = models; | ||
306 | + sourceTree = "<group>"; | ||
307 | + }; | ||
293 | 1E108A8B28A3F8FF0008B8E7 /* Resources */ = { | 308 | 1E108A8B28A3F8FF0008B8E7 /* Resources */ = { |
294 | isa = PBXGroup; | 309 | isa = PBXGroup; |
295 | children = ( | 310 | children = ( |
... | @@ -349,10 +364,30 @@ | ... | @@ -349,10 +364,30 @@ |
349 | 1EA8E5BC2DDF34FB00CD3418 /* cells */ = { | 364 | 1EA8E5BC2DDF34FB00CD3418 /* cells */ = { |
350 | isa = PBXGroup; | 365 | isa = PBXGroup; |
351 | children = ( | 366 | children = ( |
367 | + 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */, | ||
368 | + 1EB4F4222DE09A4300D934C0 /* MyRewardsBannerOffersScrollTableViewCell */, | ||
352 | ); | 369 | ); |
353 | path = cells; | 370 | path = cells; |
354 | sourceTree = "<group>"; | 371 | sourceTree = "<group>"; |
355 | }; | 372 | }; |
373 | + 1EB4F4222DE09A4300D934C0 /* MyRewardsBannerOffersScrollTableViewCell */ = { | ||
374 | + isa = PBXGroup; | ||
375 | + children = ( | ||
376 | + 1EB4F4232DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.swift */, | ||
377 | + 1EB4F4242DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib */, | ||
378 | + ); | ||
379 | + path = MyRewardsBannerOffersScrollTableViewCell; | ||
380 | + sourceTree = "<group>"; | ||
381 | + }; | ||
382 | + 1EB4F4282DE0A09500D934C0 /* MyRewardsOffersScrollTableViewCell */ = { | ||
383 | + isa = PBXGroup; | ||
384 | + children = ( | ||
385 | + 1EB4F4292DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.swift */, | ||
386 | + 1EB4F42A2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib */, | ||
387 | + ); | ||
388 | + path = MyRewardsOffersScrollTableViewCell; | ||
389 | + sourceTree = "<group>"; | ||
390 | + }; | ||
356 | 98AD36FA62350CEABCD961A7 /* Frameworks */ = { | 391 | 98AD36FA62350CEABCD961A7 /* Frameworks */ = { |
357 | isa = PBXGroup; | 392 | isa = PBXGroup; |
358 | children = ( | 393 | children = ( |
... | @@ -402,6 +437,7 @@ | ... | @@ -402,6 +437,7 @@ |
402 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */, | 437 | 1E108A9728A3FA9B0008B8E7 /* Info.plist */, |
403 | 1EA8E5B42DDF315600CD3418 /* screens */, | 438 | 1EA8E5B42DDF315600CD3418 /* screens */, |
404 | 1EA8E5BC2DDF34FB00CD3418 /* cells */, | 439 | 1EA8E5BC2DDF34FB00CD3418 /* cells */, |
440 | + 1E00E6A22DDF71BD0012F164 /* models */, | ||
405 | 1E108A8B28A3F8FF0008B8E7 /* Resources */, | 441 | 1E108A8B28A3F8FF0008B8E7 /* Resources */, |
406 | A07936742885E96A00064122 /* utilities */, | 442 | A07936742885E96A00064122 /* utilities */, |
407 | E6A7785A282933E40045BBA8 /* Helpers */, | 443 | E6A7785A282933E40045BBA8 /* Helpers */, |
... | @@ -769,10 +805,12 @@ | ... | @@ -769,10 +805,12 @@ |
769 | E6A778F3282933E60045BBA8 /* WLNativeAdTableViewCell.xib in Resources */, | 805 | E6A778F3282933E60045BBA8 /* WLNativeAdTableViewCell.xib in Resources */, |
770 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, | 806 | E6A77A38282BC3530045BBA8 /* Media.xcassets in Resources */, |
771 | E6A77905282933E60045BBA8 /* warp_white_back_button@2x.png in Resources */, | 807 | E6A77905282933E60045BBA8 /* warp_white_back_button@2x.png in Resources */, |
808 | + 1EB4F4252DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.xib in Resources */, | ||
772 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */, | 809 | 1EA8E5C02DDF427A00CD3418 /* PingLCG-Bold.otf in Resources */, |
773 | 1EA8E5C12DDF427A00CD3418 /* PingLCG-Light.otf in Resources */, | 810 | 1EA8E5C12DDF427A00CD3418 /* PingLCG-Light.otf in Resources */, |
774 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */, | 811 | 1EA8E5C22DDF427A00CD3418 /* PingLCG-Regular.otf in Resources */, |
775 | E6A77908282933E60045BBA8 /* warp_white_close_button@2x.png in Resources */, | 812 | E6A77908282933E60045BBA8 /* warp_white_close_button@2x.png in Resources */, |
813 | + 1EB4F42B2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.xib in Resources */, | ||
776 | 1E917CDB2DDF68C7002221D8 /* CouponViewController.xib in Resources */, | 814 | 1E917CDB2DDF68C7002221D8 /* CouponViewController.xib in Resources */, |
777 | E6A77909282933E60045BBA8 /* warp_white_forward_button@2x.png in Resources */, | 815 | E6A77909282933E60045BBA8 /* warp_white_forward_button@2x.png in Resources */, |
778 | E6A77906282933E60045BBA8 /* warp_white_forward_button.png in Resources */, | 816 | E6A77906282933E60045BBA8 /* warp_white_forward_button.png in Resources */, |
... | @@ -836,6 +874,7 @@ | ... | @@ -836,6 +874,7 @@ |
836 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, | 874 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, |
837 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */, | 875 | A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */, |
838 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, | 876 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, |
877 | + 1EB4F42C2DE0A0AF00D934C0 /* MyRewardsOffersScrollTableViewCell.swift in Sources */, | ||
839 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, | 878 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, |
840 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, | 879 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, |
841 | E6A77944282933E70045BBA8 /* AFSecurityPolicy.m in Sources */, | 880 | E6A77944282933E70045BBA8 /* AFSecurityPolicy.m in Sources */, |
... | @@ -861,6 +900,7 @@ | ... | @@ -861,6 +900,7 @@ |
861 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, | 900 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, |
862 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | 901 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, |
863 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, | 902 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, |
903 | + 1EB4F4262DE09AAC00D934C0 /* MyRewardsBannerOffersScrollTableViewCell.swift in Sources */, | ||
864 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, | 904 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, |
865 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, | 905 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, |
866 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, | 906 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, | ... | ... |
No preview for this file type
SwiftWarplyFramework/SwiftWarplyFramework/Media.xcassets/profile_pic_default.imageset/Contents.json
0 → 100644
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "filename" : "profile_pic_default.png", | ||
5 | + "idiom" : "universal", | ||
6 | + "scale" : "1x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "filename" : "profile_pic_default 1.png", | ||
10 | + "idiom" : "universal", | ||
11 | + "scale" : "2x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "filename" : "profile_pic_default 2.png", | ||
15 | + "idiom" : "universal", | ||
16 | + "scale" : "3x" | ||
17 | + } | ||
18 | + ], | ||
19 | + "info" : { | ||
20 | + "author" : "xcode", | ||
21 | + "version" : 1 | ||
22 | + } | ||
23 | +} |

2.29 KB

2.29 KB

2.29 KB
1 | +// | ||
2 | +// MyRewardsBannerOffersScrollTableViewCell.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 23/5/25. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +@objc public class MyRewardsBannerOffersScrollTableViewCell: UITableViewCell { | ||
11 | + @IBOutlet weak var tagView1: UIView! | ||
12 | + @IBOutlet weak var tagLabel1: UILabel! | ||
13 | + @IBOutlet weak var tagView2: UIView! | ||
14 | + @IBOutlet weak var tagLabel2: UILabel! | ||
15 | + @IBOutlet weak var profileImage: UIImageView! | ||
16 | + | ||
17 | + var section: SectionModel? | ||
18 | + | ||
19 | + public override func awakeFromNib() { | ||
20 | + super.awakeFromNib() | ||
21 | + // Initialization code | ||
22 | + | ||
23 | + profileImage.image = UIImage(named: "profile_pic_default", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | ||
24 | + | ||
25 | + tagView1.backgroundColor = UIColor(rgb: 0x09914E) | ||
26 | + tagView1.layer.cornerRadius = 4.0 | ||
27 | + tagLabel1.font = UIFont(name: "PingLCG-Regular", size: 17) | ||
28 | + tagLabel1.textColor = UIColor(rgb: 0xFFFFFF) | ||
29 | + | ||
30 | + tagView2.backgroundColor = UIColor(rgb: 0xFC9F25) | ||
31 | + tagView2.layer.cornerRadius = 4.0 | ||
32 | + tagLabel2.font = UIFont(name: "PingLCG-Regular", size: 17) | ||
33 | + tagLabel2.textColor = UIColor(rgb: 0xFFFFFF) | ||
34 | + } | ||
35 | + | ||
36 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
37 | + super.setSelected(selected, animated: animated) | ||
38 | + | ||
39 | + // Configure the view for the selected state | ||
40 | + } | ||
41 | + | ||
42 | + func configureCell(data: SectionModel?) { | ||
43 | + self.section = data | ||
44 | + } | ||
45 | +} |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
4 | + <dependencies> | ||
5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
7 | + <capability name="System colors in document resources" minToolsVersion="11.0"/> | ||
8 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
9 | + </dependencies> | ||
10 | + <objects> | ||
11 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
12 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
13 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="MyRewardsBannerOffersScrollTableViewCell" rowHeight="119" id="KGk-i7-Jjw" customClass="MyRewardsBannerOffersScrollTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
14 | + <rect key="frame" x="0.0" y="0.0" width="388" height="119"/> | ||
15 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
16 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" ambiguous="YES" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
17 | + <rect key="frame" x="0.0" y="0.0" width="388" height="119"/> | ||
18 | + <autoresizingMask key="autoresizingMask"/> | ||
19 | + <subviews> | ||
20 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VzF-dQ-3Wa" userLabel="Parent View"> | ||
21 | + <rect key="frame" x="0.0" y="0.0" width="388" height="298"/> | ||
22 | + <subviews> | ||
23 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JTs-J5-DO2" userLabel="Top View"> | ||
24 | + <rect key="frame" x="24" y="36" width="340" height="43"/> | ||
25 | + <subviews> | ||
26 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="h09-MS-XKy"> | ||
27 | + <rect key="frame" x="128.33333333333334" y="8.6666666666666643" width="58" height="26"/> | ||
28 | + <subviews> | ||
29 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Green" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4m7-JY-MDY"> | ||
30 | + <rect key="frame" x="6" y="3" width="46" height="20"/> | ||
31 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
32 | + <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/> | ||
33 | + <nil key="textColor"/> | ||
34 | + <nil key="highlightedColor"/> | ||
35 | + </label> | ||
36 | + </subviews> | ||
37 | + <color key="backgroundColor" red="0.035294117647058823" green="0.56862745098039214" blue="0.30588235294117649" alpha="1" colorSpace="calibratedRGB"/> | ||
38 | + <constraints> | ||
39 | + <constraint firstAttribute="bottom" secondItem="4m7-JY-MDY" secondAttribute="bottom" constant="3" id="lbW-sK-uoN"/> | ||
40 | + <constraint firstItem="4m7-JY-MDY" firstAttribute="leading" secondItem="h09-MS-XKy" secondAttribute="leading" constant="6" id="oRk-5c-ko2"/> | ||
41 | + <constraint firstAttribute="trailing" secondItem="4m7-JY-MDY" secondAttribute="trailing" constant="6" id="rOt-tf-dSS"/> | ||
42 | + <constraint firstItem="4m7-JY-MDY" firstAttribute="top" secondItem="h09-MS-XKy" secondAttribute="top" constant="3" id="tui-5x-ntO"/> | ||
43 | + </constraints> | ||
44 | + </view> | ||
45 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="H5g-xq-68p"> | ||
46 | + <rect key="frame" x="194.33333333333337" y="8.6666666666666643" width="61.666666666666629" height="26"/> | ||
47 | + <subviews> | ||
48 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Family" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WN9-wM-hV8"> | ||
49 | + <rect key="frame" x="5.9999999999999716" y="3" width="49.666666666666664" height="20"/> | ||
50 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
51 | + <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/> | ||
52 | + <nil key="textColor"/> | ||
53 | + <nil key="highlightedColor"/> | ||
54 | + </label> | ||
55 | + </subviews> | ||
56 | + <color key="backgroundColor" red="0.9882352941176471" green="0.62352941176470589" blue="0.14509803921568626" alpha="1" colorSpace="calibratedRGB"/> | ||
57 | + <constraints> | ||
58 | + <constraint firstAttribute="bottom" secondItem="WN9-wM-hV8" secondAttribute="bottom" constant="3" id="12P-zS-ZRM"/> | ||
59 | + <constraint firstItem="WN9-wM-hV8" firstAttribute="leading" secondItem="H5g-xq-68p" secondAttribute="leading" constant="6" id="O5x-bk-yjz"/> | ||
60 | + <constraint firstAttribute="trailing" secondItem="WN9-wM-hV8" secondAttribute="trailing" constant="6" id="lnW-mb-d4H"/> | ||
61 | + <constraint firstItem="WN9-wM-hV8" firstAttribute="top" secondItem="H5g-xq-68p" secondAttribute="top" constant="3" id="pwW-Ed-yv2"/> | ||
62 | + </constraints> | ||
63 | + </view> | ||
64 | + <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cf-tr-Vjf"> | ||
65 | + <rect key="frame" x="297" y="0.0" width="43" height="43"/> | ||
66 | + <subviews> | ||
67 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fZO-NB-UyL"> | ||
68 | + <rect key="frame" x="0.0" y="0.0" width="43" height="43"/> | ||
69 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
70 | + <constraints> | ||
71 | + <constraint firstAttribute="width" constant="43" id="Obc-SE-A5u"/> | ||
72 | + <constraint firstAttribute="height" constant="43" id="lZJ-VG-4fl"/> | ||
73 | + </constraints> | ||
74 | + </imageView> | ||
75 | + </subviews> | ||
76 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
77 | + <constraints> | ||
78 | + <constraint firstItem="fZO-NB-UyL" firstAttribute="leading" secondItem="5cf-tr-Vjf" secondAttribute="leading" id="Bfw-5S-wqz"/> | ||
79 | + <constraint firstItem="fZO-NB-UyL" firstAttribute="top" secondItem="5cf-tr-Vjf" secondAttribute="top" id="WCt-TJ-XQc"/> | ||
80 | + <constraint firstAttribute="trailing" secondItem="fZO-NB-UyL" secondAttribute="trailing" id="Z0D-wE-fgE"/> | ||
81 | + <constraint firstAttribute="bottom" secondItem="fZO-NB-UyL" secondAttribute="bottom" id="nuy-88-N5B"/> | ||
82 | + </constraints> | ||
83 | + </view> | ||
84 | + </subviews> | ||
85 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
86 | + <constraints> | ||
87 | + <constraint firstItem="5cf-tr-Vjf" firstAttribute="top" secondItem="JTs-J5-DO2" secondAttribute="top" id="GGh-C1-OfA"/> | ||
88 | + <constraint firstItem="H5g-xq-68p" firstAttribute="centerY" secondItem="JTs-J5-DO2" secondAttribute="centerY" id="Lwo-5b-tgm"/> | ||
89 | + <constraint firstAttribute="trailing" secondItem="5cf-tr-Vjf" secondAttribute="trailing" id="PBw-4p-3qC"/> | ||
90 | + <constraint firstItem="5cf-tr-Vjf" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5g-xq-68p" secondAttribute="trailing" constant="8" id="Wot-lB-jmI"/> | ||
91 | + <constraint firstAttribute="bottom" secondItem="5cf-tr-Vjf" secondAttribute="bottom" id="geG-Wp-p9Z"/> | ||
92 | + <constraint firstItem="h09-MS-XKy" firstAttribute="centerY" secondItem="JTs-J5-DO2" secondAttribute="centerY" id="j5f-Os-TZ0"/> | ||
93 | + <constraint firstItem="H5g-xq-68p" firstAttribute="leading" secondItem="h09-MS-XKy" secondAttribute="trailing" constant="8" id="wqx-Hc-3YH"/> | ||
94 | + </constraints> | ||
95 | + </view> | ||
96 | + </subviews> | ||
97 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
98 | + <constraints> | ||
99 | + <constraint firstItem="JTs-J5-DO2" firstAttribute="top" secondItem="VzF-dQ-3Wa" secondAttribute="top" constant="36" id="Ac5-fx-J3w"/> | ||
100 | + <constraint firstItem="JTs-J5-DO2" firstAttribute="leading" secondItem="VzF-dQ-3Wa" secondAttribute="leading" constant="24" id="B98-id-FLf"/> | ||
101 | + <constraint firstAttribute="trailing" secondItem="JTs-J5-DO2" secondAttribute="trailing" constant="24" id="Rdi-FK-2Ft"/> | ||
102 | + <constraint firstAttribute="bottom" secondItem="JTs-J5-DO2" secondAttribute="bottom" constant="20" id="Ubp-Qg-xtv"/> | ||
103 | + </constraints> | ||
104 | + </view> | ||
105 | + </subviews> | ||
106 | + <constraints> | ||
107 | + <constraint firstItem="VzF-dQ-3Wa" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="7Ut-VE-YGv"/> | ||
108 | + <constraint firstAttribute="trailing" secondItem="VzF-dQ-3Wa" secondAttribute="trailing" id="Hic-ok-g96"/> | ||
109 | + <constraint firstItem="VzF-dQ-3Wa" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" id="PZE-CV-H0c"/> | ||
110 | + <constraint firstAttribute="bottom" secondItem="VzF-dQ-3Wa" secondAttribute="bottom" id="hVw-ot-Ywc"/> | ||
111 | + </constraints> | ||
112 | + </tableViewCellContentView> | ||
113 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
114 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
115 | + <connections> | ||
116 | + <outlet property="profileImage" destination="fZO-NB-UyL" id="l05-qG-DJv"/> | ||
117 | + <outlet property="tagLabel1" destination="4m7-JY-MDY" id="Min-YW-AN2"/> | ||
118 | + <outlet property="tagLabel2" destination="WN9-wM-hV8" id="yWk-1S-4Zk"/> | ||
119 | + <outlet property="tagView1" destination="h09-MS-XKy" id="Hxa-cN-6i4"/> | ||
120 | + <outlet property="tagView2" destination="H5g-xq-68p" id="Vcv-Si-g68"/> | ||
121 | + </connections> | ||
122 | + <point key="canvasLocation" x="53.435114503816791" y="14.43661971830986"/> | ||
123 | + </tableViewCell> | ||
124 | + </objects> | ||
125 | + <resources> | ||
126 | + <systemColor name="systemBackgroundColor"> | ||
127 | + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
128 | + </systemColor> | ||
129 | + </resources> | ||
130 | +</document> |
1 | +// | ||
2 | +// MyRewardsOffersScrollTableViewCell.swift | ||
3 | +// SwiftWarplyFramework | ||
4 | +// | ||
5 | +// Created by Manos Chorianopoulos on 23/5/25. | ||
6 | +// | ||
7 | + | ||
8 | +import UIKit | ||
9 | + | ||
10 | +@objc public class MyRewardsOffersScrollTableViewCell: UITableViewCell { | ||
11 | + var section: SectionModel? | ||
12 | + | ||
13 | + public override func awakeFromNib() { | ||
14 | + super.awakeFromNib() | ||
15 | + // Initialization code | ||
16 | + } | ||
17 | + | ||
18 | + public override func setSelected(_ selected: Bool, animated: Bool) { | ||
19 | + super.setSelected(selected, animated: animated) | ||
20 | + | ||
21 | + // Configure the view for the selected state | ||
22 | + } | ||
23 | + | ||
24 | + func configureCell(data: SectionModel?) { | ||
25 | + | ||
26 | + } | ||
27 | +} |
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | ||
3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
4 | + <dependencies> | ||
5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> | ||
6 | + <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||
7 | + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
8 | + </dependencies> | ||
9 | + <objects> | ||
10 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
11 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
12 | + <tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" reuseIdentifier="MyRewardsOffersScrollTableViewCell" id="KGk-i7-Jjw" customClass="MyRewardsOffersScrollTableViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
13 | + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> | ||
14 | + <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> | ||
15 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> | ||
16 | + <rect key="frame" x="0.0" y="0.0" width="320" height="44"/> | ||
17 | + <autoresizingMask key="autoresizingMask"/> | ||
18 | + </tableViewCellContentView> | ||
19 | + <viewLayoutGuide key="safeArea" id="njF-e1-oar"/> | ||
20 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
21 | + <point key="canvasLocation" x="37" y="-11"/> | ||
22 | + </tableViewCell> | ||
23 | + </objects> | ||
24 | +</document> |
... | @@ -7,23 +7,480 @@ | ... | @@ -7,23 +7,480 @@ |
7 | 7 | ||
8 | import UIKit | 8 | import UIKit |
9 | 9 | ||
10 | -@objc public class MyRewardsViewController: UIViewController { | 10 | +struct SectionModel { |
11 | + let title: String | ||
12 | + let count: Int | ||
13 | + let offers: [OfferModel] | ||
14 | +} | ||
15 | + | ||
16 | +struct OfferModel { | ||
17 | + let category: String | ||
18 | + let title: String | ||
19 | + let description: String | ||
20 | + let discount: String | ||
21 | + let discountType: String // e.g., "price", "percentage", "free", "buyOneGetOne", etc. | ||
22 | + let bannerImage: String | ||
23 | + let merchantLogo: String | ||
24 | + let expirationDate: String | ||
25 | + let color: String | ||
26 | + var isFavorite: Bool | ||
27 | +} | ||
11 | 28 | ||
29 | +@objc public class MyRewardsViewController: UIViewController { | ||
30 | + @IBOutlet weak var tableView: UITableView! | ||
31 | + | ||
32 | + // MARK: - Dummy Data | ||
33 | + let allOffers: [OfferModel] = [ | ||
34 | + // Banner Offers | ||
35 | + OfferModel( | ||
36 | + category: "Διαγωνισμός", | ||
37 | + title: "Διαγωνισμός Κού-πονς!", | ||
38 | + description: "13 Απίθανα ΔΩΡΑ σε περιμένουν!", | ||
39 | + discount: "", | ||
40 | + discountType: "contest", | ||
41 | + bannerImage: "contest_banner", | ||
42 | + merchantLogo: "contest_logo", | ||
43 | + expirationDate: "30/06/2025", | ||
44 | + color: "#8A2BE2", // Purple | ||
45 | + isFavorite: false | ||
46 | + ), | ||
47 | + OfferModel( | ||
48 | + category: "Διαγωνισμός", | ||
49 | + title: "Διαγωνισμός Κού-πονς!", | ||
50 | + description: "13 Απίθανα ΔΩΡΑ σε περιμένουν!", | ||
51 | + discount: "", | ||
52 | + discountType: "contest", | ||
53 | + bannerImage: "contest_banner", | ||
54 | + merchantLogo: "contest_logo", | ||
55 | + expirationDate: "30/06/2025", | ||
56 | + color: "#8A2BE2", // Purple | ||
57 | + isFavorite: false | ||
58 | + ), | ||
59 | + OfferModel( | ||
60 | + category: "Διαγωνισμός", | ||
61 | + title: "Διαγωνισμός Κού-πονς!", | ||
62 | + description: "13 Απίθανα ΔΩΡΑ σε περιμένουν!", | ||
63 | + discount: "", | ||
64 | + discountType: "contest", | ||
65 | + bannerImage: "contest_banner", | ||
66 | + merchantLogo: "contest_logo", | ||
67 | + expirationDate: "30/06/2025", | ||
68 | + color: "#8A2BE2", // Purple | ||
69 | + isFavorite: false | ||
70 | + ), | ||
71 | + // Top offers | ||
72 | + OfferModel( | ||
73 | + category: "Top offers", | ||
74 | + title: "Μόνο 17.95", | ||
75 | + description: "2 πίτσες & Coca-COLA 1,5lt", | ||
76 | + discount: "17.95€", | ||
77 | + discountType: "price", | ||
78 | + bannerImage: "pizza_banner", | ||
79 | + merchantLogo: "dominos_logo", | ||
80 | + expirationDate: "έως 30/09", | ||
81 | + color: "#E91E63", // Pink | ||
82 | + isFavorite: true | ||
83 | + ), | ||
84 | + OfferModel( | ||
85 | + category: "Top offers", | ||
86 | + title: "20% έκπτωση", | ||
87 | + description: "για όλες τις online αγορές σας", | ||
88 | + discount: "20%", | ||
89 | + discountType: "percentage", | ||
90 | + bannerImage: "furniture_banner", | ||
91 | + merchantLogo: "ikea_logo", | ||
92 | + expirationDate: "έως 30/09", | ||
93 | + color: "#E91E63", // Pink | ||
94 | + isFavorite: false | ||
95 | + ), | ||
96 | + // OfferModel( | ||
97 | + // category: "Top offers", | ||
98 | + // title: "Δωρεάν μεταφορικά", | ||
99 | + // description: "για αγορές άνω των 50€", | ||
100 | + // discount: "Δωρεάν", | ||
101 | + // discountType: "free", | ||
102 | + // bannerImage: "delivery_banner", | ||
103 | + // merchantLogo: "skroutz_logo", | ||
104 | + // expirationDate: "έως 30/09", | ||
105 | + // color: "#E91E63", // Pink | ||
106 | + // isFavorite: false | ||
107 | + // ), | ||
108 | + | ||
109 | + // Αγαπημένα | ||
110 | + // OfferModel( | ||
111 | + // category: "Αγαπημένα", | ||
112 | + // title: "15% έκπτωση", | ||
113 | + // description: "στην ενοικίαση αυτοκινήτου", | ||
114 | + // discount: "15%", | ||
115 | + // discountType: "percentage", | ||
116 | + // bannerImage: "car_rental_banner", | ||
117 | + // merchantLogo: "avis_logo", | ||
118 | + // expirationDate: "έως 30/09", | ||
119 | + // color: "#E91E63", // Pink | ||
120 | + // isFavorite: true | ||
121 | + // ), | ||
122 | + // OfferModel( | ||
123 | + // category: "Αγαπημένα", | ||
124 | + // title: "20€ έως και", | ||
125 | + // description: "έκπτωση στα πακέτα", | ||
126 | + // discount: "20€", | ||
127 | + // discountType: "amount", | ||
128 | + // bannerImage: "hotel_banner", | ||
129 | + // merchantLogo: "booking_logo", | ||
130 | + // expirationDate: "έως 30/09", | ||
131 | + // color: "#E91E63", // Pink | ||
132 | + // isFavorite: true | ||
133 | + // ), | ||
134 | + | ||
135 | + // Βιωσιμότητα | ||
136 | + OfferModel( | ||
137 | + category: "Βιωσιμότητα", | ||
138 | + title: "15% έκπτωση", | ||
139 | + description: "σε όλα τα προϊόντα", | ||
140 | + discount: "15%", | ||
141 | + discountType: "percentage", | ||
142 | + bannerImage: "sustainable_fashion_banner", | ||
143 | + merchantLogo: "ww_logo", | ||
144 | + expirationDate: "έως 30/09", | ||
145 | + color: "#4CAF50", // Green | ||
146 | + isFavorite: false | ||
147 | + ), | ||
148 | + OfferModel( | ||
149 | + category: "Βιωσιμότητα", | ||
150 | + title: "20% έκπτωση", | ||
151 | + description: "στην παραγγελία", | ||
152 | + discount: "20%", | ||
153 | + discountType: "percentage", | ||
154 | + bannerImage: "sustainable_food_banner", | ||
155 | + merchantLogo: "biomarket_logo", | ||
156 | + expirationDate: "έως 30/09", | ||
157 | + color: "#4CAF50", // Green | ||
158 | + isFavorite: true | ||
159 | + ), | ||
160 | + | ||
161 | + // Family | ||
162 | + OfferModel( | ||
163 | + category: "Family", | ||
164 | + title: "10% έκπτωση", | ||
165 | + description: "στην κατασκήνωση στο The Ranch", | ||
166 | + discount: "10%", | ||
167 | + discountType: "percentage", | ||
168 | + bannerImage: "ranch_banner", | ||
169 | + merchantLogo: "ranch_logo", | ||
170 | + expirationDate: "έως 30/09", | ||
171 | + color: "#FF9800", // Orange | ||
172 | + isFavorite: false | ||
173 | + ), | ||
174 | + OfferModel( | ||
175 | + category: "Family", | ||
176 | + title: "1+1 εισιτήριο", | ||
177 | + description: "δώρο στην είσοδο του παιδότοπου", | ||
178 | + discount: "1+1", | ||
179 | + discountType: "buyOneGetOne", | ||
180 | + bannerImage: "playground_banner", | ||
181 | + merchantLogo: "playground_logo", | ||
182 | + expirationDate: "έως 30/09", | ||
183 | + color: "#FF9800", // Orange | ||
184 | + isFavorite: false | ||
185 | + ), | ||
186 | + | ||
187 | + // Φαγητό και καφές | ||
188 | + OfferModel( | ||
189 | + category: "Φαγητό και καφές", | ||
190 | + title: "2€ έκπτωση", | ||
191 | + description: "στην αγορά σου", | ||
192 | + discount: "2€", | ||
193 | + discountType: "amount", | ||
194 | + bannerImage: "coffee_banner", | ||
195 | + merchantLogo: "mikel_logo", | ||
196 | + expirationDate: "έως 30/09", | ||
197 | + color: "#F44336", // Red | ||
198 | + isFavorite: false | ||
199 | + ), | ||
200 | + OfferModel( | ||
201 | + category: "Φαγητό και καφές", | ||
202 | + title: "10% έκπτωση", | ||
203 | + description: "σε γλυκά & πεϊνιρλιδες", | ||
204 | + discount: "10%", | ||
205 | + discountType: "percentage", | ||
206 | + bannerImage: "pastry_banner", | ||
207 | + merchantLogo: "bakery_logo", | ||
208 | + expirationDate: "έως 30/09", | ||
209 | + color: "#F44336", // Red | ||
210 | + isFavorite: false | ||
211 | + ), | ||
212 | + | ||
213 | + // Απόδραση | ||
214 | + OfferModel( | ||
215 | + category: "Απόδραση", | ||
216 | + title: "10% έκπτωση", | ||
217 | + description: "στην διαμονή/διασκέδαση σου", | ||
218 | + discount: "10%", | ||
219 | + discountType: "percentage", | ||
220 | + bannerImage: "resort_banner", | ||
221 | + merchantLogo: "agrafa_logo", | ||
222 | + expirationDate: "έως 30/09", | ||
223 | + color: "#2196F3", // Blue | ||
224 | + isFavorite: true | ||
225 | + ), | ||
226 | + OfferModel( | ||
227 | + category: "Απόδραση", | ||
228 | + title: "10% έκπτωση", | ||
229 | + description: "σε όλες τις υπηρεσίες", | ||
230 | + discount: "10%", | ||
231 | + discountType: "percentage", | ||
232 | + bannerImage: "services_banner", | ||
233 | + merchantLogo: "services_logo", | ||
234 | + expirationDate: "έως 30/09", | ||
235 | + color: "#2196F3", // Blue | ||
236 | + isFavorite: false | ||
237 | + ), | ||
238 | + | ||
239 | + // Παιδί | ||
240 | + OfferModel( | ||
241 | + category: "Παιδί", | ||
242 | + title: "10% έκπτωση", | ||
243 | + description: "για αγορές από τα φυσικά καταστήματα", | ||
244 | + discount: "10%", | ||
245 | + discountType: "percentage", | ||
246 | + bannerImage: "toys_banner", | ||
247 | + merchantLogo: "jumbo_logo", | ||
248 | + expirationDate: "έως 30/09", | ||
249 | + color: "#9C27B0", // Purple | ||
250 | + isFavorite: false | ||
251 | + ), | ||
252 | + OfferModel( | ||
253 | + category: "Παιδί", | ||
254 | + title: "1+1 Δώρο", | ||
255 | + description: "στην είσοδο του παιδότοπου", | ||
256 | + discount: "1+1", | ||
257 | + discountType: "buyOneGetOne", | ||
258 | + bannerImage: "playarea_banner", | ||
259 | + merchantLogo: "playarea_logo", | ||
260 | + expirationDate: "έως 30/09", | ||
261 | + color: "#9C27B0", // Purple | ||
262 | + isFavorite: false | ||
263 | + ), | ||
264 | + | ||
265 | + // Αγορές | ||
266 | + OfferModel( | ||
267 | + category: "Αγορές", | ||
268 | + title: "15€ έκπτωση", | ||
269 | + description: "για αγορές", | ||
270 | + discount: "15€", | ||
271 | + discountType: "amount", | ||
272 | + bannerImage: "fashion_banner", | ||
273 | + merchantLogo: "migato_logo", | ||
274 | + expirationDate: "έως 30/09", | ||
275 | + color: "#FF5722", // Deep Orange | ||
276 | + isFavorite: false | ||
277 | + ), | ||
278 | + OfferModel( | ||
279 | + category: "Αγορές", | ||
280 | + title: "Έως 30% έκπτωση", | ||
281 | + description: "στις αγορές σου", | ||
282 | + discount: "Έως 30%", | ||
283 | + discountType: "percentage", | ||
284 | + bannerImage: "shopping_banner", | ||
285 | + merchantLogo: "shopping_logo", | ||
286 | + expirationDate: "έως 30/09", | ||
287 | + color: "#FF5722", // Deep Orange | ||
288 | + isFavorite: false | ||
289 | + ) | ||
290 | + ] | ||
291 | + | ||
292 | + var bannerOffersSection: SectionModel? | ||
293 | + var topOffersSection: SectionModel? | ||
294 | + var favoriteOffersSection: SectionModel? | ||
295 | + var sustainableOffersSection: SectionModel? | ||
296 | + var familyOffersSection: SectionModel? | ||
297 | + var foodOffersSection: SectionModel? | ||
298 | + var escapeOffersSection: SectionModel? | ||
299 | + var childOffersSection: SectionModel? | ||
300 | + var shoppingOffersSection: SectionModel? | ||
301 | + | ||
12 | public override func viewDidLoad() { | 302 | public override func viewDidLoad() { |
13 | super.viewDidLoad() | 303 | super.viewDidLoad() |
304 | + | ||
305 | + // Register XIBs for table view cells | ||
306 | + tableView.register(UINib(nibName: "MyRewardsBannerOffersScrollTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "BannerCell") | ||
307 | + tableView.register(UINib(nibName: "MyRewardsOffersScrollTableViewCell", bundle: Bundle(for: MyEmptyClass.self)), forCellReuseIdentifier: "OffersCell") | ||
308 | + | ||
309 | + // Set up table view | ||
310 | + tableView.delegate = self | ||
311 | + tableView.dataSource = self | ||
312 | + tableView.separatorStyle = .none | ||
313 | + tableView.estimatedRowHeight = 200 | ||
314 | + tableView.rowHeight = UITableView.automaticDimension | ||
315 | + | ||
316 | + initializeSections() | ||
317 | + } | ||
318 | + | ||
319 | + // MARK: Function | ||
320 | + func initializeSections() { | ||
321 | + // Banner Offers (for the promotional banner at the top) | ||
322 | + let bannerOffers = allOffers.filter { $0.category == "Διαγωνισμός" } | ||
323 | + bannerOffersSection = SectionModel( | ||
324 | + title: "Διαγωνισμός", | ||
325 | + count: bannerOffers.count, | ||
326 | + offers: bannerOffers | ||
327 | + ) | ||
328 | + | ||
329 | + // Top Offers | ||
330 | + let topOffers = allOffers.filter { $0.category == "Top offers" } | ||
331 | + topOffersSection = SectionModel( | ||
332 | + title: "Top offers", | ||
333 | + count: topOffers.count, | ||
334 | + offers: topOffers | ||
335 | + ) | ||
336 | + | ||
337 | + // Favorite Offers | ||
338 | + let favoriteOffers = allOffers.filter { $0.isFavorite } | ||
339 | + favoriteOffersSection = SectionModel( | ||
340 | + title: "Αγαπημένα", | ||
341 | + count: favoriteOffers.count, | ||
342 | + offers: favoriteOffers | ||
343 | + ) | ||
344 | + | ||
345 | + // Sustainable Offers | ||
346 | + let sustainableOffers = allOffers.filter { $0.category == "Βιωσιμότητα" } | ||
347 | + sustainableOffersSection = SectionModel( | ||
348 | + title: "Βιωσιμότητα", | ||
349 | + count: sustainableOffers.count, | ||
350 | + offers: sustainableOffers | ||
351 | + ) | ||
352 | + | ||
353 | + // Family Offers | ||
354 | + let familyOffers = allOffers.filter { $0.category == "Family" } | ||
355 | + familyOffersSection = SectionModel( | ||
356 | + title: "Family", | ||
357 | + count: familyOffers.count, | ||
358 | + offers: familyOffers | ||
359 | + ) | ||
360 | + | ||
361 | + // Food Offers | ||
362 | + let foodOffers = allOffers.filter { $0.category == "Φαγητό και καφές" } | ||
363 | + foodOffersSection = SectionModel( | ||
364 | + title: "Φαγητό και καφές", | ||
365 | + count: foodOffers.count, | ||
366 | + offers: foodOffers | ||
367 | + ) | ||
368 | + | ||
369 | + // Escape Offers | ||
370 | + let escapeOffers = allOffers.filter { $0.category == "Απόδραση" } | ||
371 | + escapeOffersSection = SectionModel( | ||
372 | + title: "Απόδραση", | ||
373 | + count: escapeOffers.count, | ||
374 | + offers: escapeOffers | ||
375 | + ) | ||
14 | 376 | ||
15 | - // Do any additional setup after loading the view. | 377 | + // Child Offers |
378 | + let childOffers = allOffers.filter { $0.category == "Παιδί" } | ||
379 | + childOffersSection = SectionModel( | ||
380 | + title: "Παιδί", | ||
381 | + count: childOffers.count, | ||
382 | + offers: childOffers | ||
383 | + ) | ||
384 | + | ||
385 | + // Shopping Offers | ||
386 | + let shoppingOffers = allOffers.filter { $0.category == "Αγορές" } | ||
387 | + shoppingOffersSection = SectionModel( | ||
388 | + title: "Αγορές", | ||
389 | + count: shoppingOffers.count, | ||
390 | + offers: shoppingOffers | ||
391 | + ) | ||
392 | + | ||
393 | + self.tableView.reloadData() | ||
16 | } | 394 | } |
17 | 395 | ||
396 | +} | ||
18 | 397 | ||
19 | - /* | 398 | +// MARK: - TableView |
20 | - // MARK: - Navigation | 399 | +extension MyRewardsViewController: UITableViewDelegate, UITableViewDataSource{ |
400 | + | ||
401 | + public func numberOfSections(in tableView: UITableView) -> Int { | ||
402 | + return 9 | ||
403 | + } | ||
404 | + | ||
405 | + public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
406 | + return 1 | ||
407 | + } | ||
408 | + | ||
409 | + public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
410 | + return UITableView.automaticDimension | ||
411 | + } | ||
412 | + | ||
413 | + public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { | ||
414 | + return nil | ||
415 | + } | ||
21 | 416 | ||
22 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | 417 | + public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { |
23 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | 418 | + return 0.0 |
24 | - // Get the new view controller using segue.destination. | ||
25 | - // Pass the selected object to the new view controller. | ||
26 | } | 419 | } |
27 | - */ | ||
28 | 420 | ||
421 | + public func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { | ||
422 | +// return CGFloat.leastNormalMagnitude | ||
423 | + return 0.0 | ||
424 | + } | ||
425 | + | ||
426 | + public func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { | ||
427 | + return nil | ||
428 | + } | ||
429 | + | ||
430 | + public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
431 | + if (indexPath.section == 0) { | ||
432 | + let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsBannerOffersScrollTableViewCell", for: indexPath) as! MyRewardsBannerOffersScrollTableViewCell | ||
433 | + let smCount = 1 | ||
434 | + cell.configureCell(data: self.bannerOffersSection) | ||
435 | +// cell.parent = self | ||
436 | + return cell | ||
437 | + | ||
438 | + } else { | ||
439 | + let cell = tableView.dequeueReusableCell(withIdentifier: "MyRewardsOffersScrollTableViewCell", for: indexPath) as! MyRewardsOffersScrollTableViewCell | ||
440 | + | ||
441 | + if (indexPath.section == 1) { | ||
442 | + cell.configureCell(data: self.topOffersSection) | ||
443 | + } else if (indexPath.section == 2) { | ||
444 | + cell.configureCell(data: self.favoriteOffersSection) | ||
445 | + } else if (indexPath.section == 3) { | ||
446 | + cell.configureCell(data: self.sustainableOffersSection) | ||
447 | + } else if (indexPath.section == 4) { | ||
448 | + cell.configureCell(data: self.familyOffersSection) | ||
449 | + } else if (indexPath.section == 5) { | ||
450 | + cell.configureCell(data: self.foodOffersSection) | ||
451 | + } else if (indexPath.section == 6) { | ||
452 | + cell.configureCell(data: self.escapeOffersSection) | ||
453 | + } else if (indexPath.section == 7) { | ||
454 | + cell.configureCell(data: self.childOffersSection) | ||
455 | + } else { | ||
456 | + cell.configureCell(data: self.shoppingOffersSection) | ||
457 | + } | ||
458 | + | ||
459 | + return cell | ||
460 | + } | ||
461 | + | ||
462 | + } | ||
463 | + | ||
464 | + public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
465 | + if (indexPath.section == 0) { | ||
466 | + // Do nothing - Each button is handled differently | ||
467 | + | ||
468 | + } else if (indexPath.section == 1) { | ||
469 | + // Do nothing | ||
470 | + } else if (indexPath.section == 2) { | ||
471 | + // Do nothing | ||
472 | + } else if (indexPath.section == 3) { | ||
473 | + // Do nothing | ||
474 | + } else if (indexPath.section == 4) { | ||
475 | + // Do nothing | ||
476 | + } else if (indexPath.section == 5) { | ||
477 | + // Do nothing | ||
478 | + } else if (indexPath.section == 6) { | ||
479 | + // Do nothing | ||
480 | + } else if (indexPath.section == 7) { | ||
481 | + // Do nothing | ||
482 | + } else { | ||
483 | + // Do nothing | ||
484 | + } | ||
485 | + } | ||
29 | } | 486 | } | ... | ... |
1 | -<?xml version="1.0" encoding="UTF-8" standalone="no"?> | 1 | +<?xml version="1.0" encoding="UTF-8"?> |
2 | -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> | 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> |
3 | + <device id="retina6_12" orientation="portrait" appearance="light"/> | ||
3 | <dependencies> | 4 | <dependencies> |
4 | - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/> | 5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/> |
5 | <capability name="Safe area layout guides" minToolsVersion="9.0"/> | 6 | <capability name="Safe area layout guides" minToolsVersion="9.0"/> |
7 | + <capability name="System colors in document resources" minToolsVersion="11.0"/> | ||
6 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | 8 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
7 | </dependencies> | 9 | </dependencies> |
8 | <objects> | 10 | <objects> |
9 | - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MyRewardsViewController" customModuleProvider="target"> | 11 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MyRewardsViewController" customModule="SwiftWarplyFramework" customModuleProvider="target"> |
10 | <connections> | 12 | <connections> |
13 | + <outlet property="tableView" destination="2it-5M-CR6" id="uM3-ZJ-zKB"/> | ||
11 | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> | 14 | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
12 | </connections> | 15 | </connections> |
13 | </placeholder> | 16 | </placeholder> |
14 | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | 17 | <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |
15 | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> | 18 | <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> |
16 | - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | 19 | + <rect key="frame" x="0.0" y="0.0" width="393" height="852"/> |
17 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | 20 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
18 | - <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | 21 | + <subviews> |
22 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="scR-yg-okd" userLabel="Main View"> | ||
23 | + <rect key="frame" x="0.0" y="59" width="393" height="793"/> | ||
24 | + <subviews> | ||
25 | + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="1" estimatedSectionFooterHeight="-1" contentViewInsetsToSafeArea="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2it-5M-CR6"> | ||
26 | + <rect key="frame" x="0.0" y="0.0" width="393" height="793"/> | ||
27 | + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
28 | + <color key="separatorColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
29 | + <color key="sectionIndexBackgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
30 | + <connections> | ||
31 | + <outlet property="dataSource" destination="-1" id="avy-hE-15l"/> | ||
32 | + <outlet property="delegate" destination="-1" id="tmq-4b-xNt"/> | ||
33 | + </connections> | ||
34 | + </tableView> | ||
35 | + </subviews> | ||
36 | + <color key="backgroundColor" red="0.94901960780000005" green="0.94901960780000005" blue="0.94901960780000005" alpha="1" colorSpace="calibratedRGB"/> | ||
37 | + <constraints> | ||
38 | + <constraint firstItem="2it-5M-CR6" firstAttribute="top" secondItem="scR-yg-okd" secondAttribute="top" id="8Qy-L0-5ab"/> | ||
39 | + <constraint firstAttribute="trailing" secondItem="2it-5M-CR6" secondAttribute="trailing" id="AXe-zP-ef8"/> | ||
40 | + <constraint firstItem="2it-5M-CR6" firstAttribute="leading" secondItem="scR-yg-okd" secondAttribute="leading" id="NeU-gh-skU"/> | ||
41 | + <constraint firstAttribute="bottom" secondItem="2it-5M-CR6" secondAttribute="bottom" id="bpx-U5-A8r"/> | ||
42 | + </constraints> | ||
43 | + </view> | ||
44 | + </subviews> | ||
19 | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> | 45 | <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> |
46 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
47 | + <constraints> | ||
48 | + <constraint firstItem="scR-yg-okd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="Nwv-jZ-0HT"/> | ||
49 | + <constraint firstItem="scR-yg-okd" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="OFK-BH-zlp"/> | ||
50 | + <constraint firstAttribute="trailing" secondItem="scR-yg-okd" secondAttribute="trailing" id="Wgk-0e-fYU"/> | ||
51 | + <constraint firstAttribute="bottom" secondItem="scR-yg-okd" secondAttribute="bottom" id="ogA-sg-Lij"/> | ||
52 | + </constraints> | ||
53 | + <point key="canvasLocation" x="11" y="-11"/> | ||
20 | </view> | 54 | </view> |
21 | </objects> | 55 | </objects> |
56 | + <resources> | ||
57 | + <systemColor name="systemBackgroundColor"> | ||
58 | + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> | ||
59 | + </systemColor> | ||
60 | + </resources> | ||
22 | </document> | 61 | </document> | ... | ... |
-
Please register or login to post a comment