- Added google ad banner for webseries.
- Added google ad for karaoke - Added google ad for karaoke record ui - Added google ad for fm - Made a delegate function to handle the ad received or failure - Added ads to games webview bottom banner
This commit is contained in:
@@ -112,6 +112,8 @@
|
||||
527AC6FE2C173A5100434FB7 /* SongListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 527AC6FC2C173A5100434FB7 /* SongListCell.xib */; };
|
||||
527AC7012C182DCE00434FB7 /* TimeStringToSeconds.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527AC7002C182DCE00434FB7 /* TimeStringToSeconds.swift */; };
|
||||
5282DB292C92D73B00465BA1 /* GoogleInteractiveMediaAds in Frameworks */ = {isa = PBXBuildFile; productRef = 5282DB282C92D73B00465BA1 /* GoogleInteractiveMediaAds */; };
|
||||
5282DB2C2C9816C600465BA1 /* WOKA.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5282DB2A2C9816C600465BA1 /* WOKA.xcdatamodeld */; };
|
||||
5282DB2F2C981EAD00465BA1 /* AdReusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5282DB2E2C981EAD00465BA1 /* AdReusable.swift */; };
|
||||
528BEF602C2C372900FFDAB8 /* ContinueWatchingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528BEF5F2C2C372900FFDAB8 /* ContinueWatchingVC.swift */; };
|
||||
528E5F1B2C24531200E33E4E /* SeasonListingDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */; };
|
||||
528E5F222C24660F00E33E4E /* SeasonCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */; };
|
||||
@@ -282,7 +284,6 @@
|
||||
9C27E1722BDB86B600EC1DA9 /* OnBoardCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C27E1702BDB86B600EC1DA9 /* OnBoardCell.swift */; };
|
||||
9C27E1732BDB86B600EC1DA9 /* OnBoardCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9C27E1712BDB86B600EC1DA9 /* OnBoardCell.xib */; };
|
||||
9C3E14472C517E8F00D06C10 /* TopViewEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3E14462C517E8F00D06C10 /* TopViewEnum.swift */; };
|
||||
9C416B242C94249400C03A10 /* WOKA.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9C416B222C94249400C03A10 /* WOKA.xcdatamodeld */; };
|
||||
9C535DB52C005A6D00DA6DCD /* KeyWindowFix.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C535DB42C005A6C00DA6DCD /* KeyWindowFix.swift */; };
|
||||
9C535DB82C0089B400DA6DCD /* ViewButtonAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C535DB72C0089B400DA6DCD /* ViewButtonAnimation.swift */; };
|
||||
9C535DC02C00B36000DA6DCD /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C535DBF2C00B36000DA6DCD /* HomeVC.swift */; };
|
||||
@@ -517,6 +518,8 @@
|
||||
527AC6FB2C173A5100434FB7 /* SongListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SongListCell.swift; sourceTree = "<group>"; };
|
||||
527AC6FC2C173A5100434FB7 /* SongListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SongListCell.xib; sourceTree = "<group>"; };
|
||||
527AC7002C182DCE00434FB7 /* TimeStringToSeconds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeStringToSeconds.swift; sourceTree = "<group>"; };
|
||||
5282DB2B2C9816C600465BA1 /* WOKA.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = WOKA.xcdatamodel; sourceTree = "<group>"; };
|
||||
5282DB2E2C981EAD00465BA1 /* AdReusable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdReusable.swift; sourceTree = "<group>"; };
|
||||
528BEF5F2C2C372900FFDAB8 /* ContinueWatchingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContinueWatchingVC.swift; sourceTree = "<group>"; };
|
||||
528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonListingDM.swift; sourceTree = "<group>"; };
|
||||
528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonCategoryCell.swift; sourceTree = "<group>"; };
|
||||
@@ -690,7 +693,6 @@
|
||||
9C27E1702BDB86B600EC1DA9 /* OnBoardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnBoardCell.swift; sourceTree = "<group>"; };
|
||||
9C27E1712BDB86B600EC1DA9 /* OnBoardCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = OnBoardCell.xib; sourceTree = "<group>"; };
|
||||
9C3E14462C517E8F00D06C10 /* TopViewEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopViewEnum.swift; sourceTree = "<group>"; };
|
||||
9C416B232C94249400C03A10 /* WOKA.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = WOKA.xcdatamodel; sourceTree = "<group>"; };
|
||||
9C535DB42C005A6C00DA6DCD /* KeyWindowFix.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyWindowFix.swift; sourceTree = "<group>"; };
|
||||
9C535DB72C0089B400DA6DCD /* ViewButtonAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewButtonAnimation.swift; sourceTree = "<group>"; };
|
||||
9C535DBF2C00B36000DA6DCD /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = "<group>"; };
|
||||
@@ -970,7 +972,7 @@
|
||||
9C535DC82C00C34000DA6DCD /* Theme */,
|
||||
52DAC6462C21761700E2F85B /* WebSeries */,
|
||||
9C834ED92C1C20EC00B29A9C /* WOKA.entitlements */,
|
||||
9C416B222C94249400C03A10 /* WOKA.xcdatamodeld */,
|
||||
5282DB2A2C9816C600465BA1 /* WOKA.xcdatamodeld */,
|
||||
52ACC1292C610EC900791528 /* PersistentStorage.swift */,
|
||||
);
|
||||
path = WOKA;
|
||||
@@ -1302,6 +1304,14 @@
|
||||
path = Timer;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5282DB2D2C981E9300465BA1 /* AdResuable */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5282DB2E2C981EAD00465BA1 /* AdReusable.swift */,
|
||||
);
|
||||
path = AdResuable;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
528F26E02C6B7B30003E4D99 /* OneSignalNotificationServiceExtension */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -1493,6 +1503,7 @@
|
||||
52C8B0512BDA4B51003B51D0 /* Helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5282DB2D2C981E9300465BA1 /* AdResuable */,
|
||||
5201D4272C7F22DD008E3211 /* Network */,
|
||||
9CDAEB0F2C53F12800890C47 /* Shadows */,
|
||||
9C834EDA2C1C26C000B29A9C /* HTML */,
|
||||
@@ -2372,7 +2383,7 @@
|
||||
52B8D4DC2C04A25E00ED65F3 /* Delegate.swift in Sources */,
|
||||
52CA28FC2BE11A0400708B49 /* UserIntrestVM.swift in Sources */,
|
||||
52B8D4DB2C04A25E00ED65F3 /* TransitionContext.swift in Sources */,
|
||||
9C416B242C94249400C03A10 /* WOKA.xcdatamodeld in Sources */,
|
||||
5282DB2C2C9816C600465BA1 /* WOKA.xcdatamodeld in Sources */,
|
||||
9C27E1602BDB6ECA00EC1DA9 /* UserDefaultsStruct.swift in Sources */,
|
||||
52A3F6AD2BECC0340000BB0B /* TypeAlias.swift in Sources */,
|
||||
52D6A24C2C21B43300145908 /* WebSeriesCell.swift in Sources */,
|
||||
@@ -2413,6 +2424,7 @@
|
||||
52A6DCA02C4E3AA600F63C51 /* ShopListingCell.swift in Sources */,
|
||||
525954192BE8CC3400191286 /* ConstantString.swift in Sources */,
|
||||
52D774EB2BDFC0BF001D87DE /* OTPVC.swift in Sources */,
|
||||
5282DB2F2C981EAD00465BA1 /* AdReusable.swift in Sources */,
|
||||
9C8446872C40FC6E003E3E53 /* AVPlayerTesting.swift in Sources */,
|
||||
52AF71F42C36C40B00BC5972 /* GamesWebViewVC.swift in Sources */,
|
||||
9C007F202C255DF200F798C2 /* EpisodeListingDM.swift in Sources */,
|
||||
@@ -2861,7 +2873,7 @@
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
INFOPLIST_KEY_UIStatusBarHidden = NO;
|
||||
INFOPLIST_KEY_UIStatusBarStyle = "";
|
||||
INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
||||
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
@@ -2904,7 +2916,7 @@
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
INFOPLIST_KEY_UIStatusBarHidden = NO;
|
||||
INFOPLIST_KEY_UIStatusBarStyle = "";
|
||||
INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
|
||||
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||
@@ -3225,14 +3237,14 @@
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
|
||||
/* Begin XCVersionGroup section */
|
||||
9C416B222C94249400C03A10 /* WOKA.xcdatamodeld */ = {
|
||||
5282DB2A2C9816C600465BA1 /* WOKA.xcdatamodeld */ = {
|
||||
isa = XCVersionGroup;
|
||||
children = (
|
||||
9C416B232C94249400C03A10 /* WOKA.xcdatamodel */,
|
||||
5282DB2B2C9816C600465BA1 /* WOKA.xcdatamodel */,
|
||||
);
|
||||
currentVersion = 9C416B232C94249400C03A10 /* WOKA.xcdatamodel */;
|
||||
currentVersion = 5282DB2B2C9816C600465BA1 /* WOKA.xcdatamodel */;
|
||||
name = WOKA.xcdatamodeld;
|
||||
path = /Users/bilal/Desktop/woka_native_ios_swift/WOKA/WOKA.xcdatamodeld;
|
||||
path = /Users/macbookpro/Desktop/WOKA/WOKA/WOKA.xcdatamodeld;
|
||||
sourceTree = "<group>";
|
||||
versionGroupType = wrapper.xcdatamodel;
|
||||
};
|
||||
|
||||
@@ -138,23 +138,23 @@
|
||||
<rect key="frame" x="0.0" y="59" width="414" height="803"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="4FL-Qu-GXb">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="364.33333333333331"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="363"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Order Summary" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fbh-Ve-yLY" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="5" y="5" width="404" height="24"/>
|
||||
<rect key="frame" x="5" y="4.9999999999999982" width="404" height="23.333333333333329"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="20"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="qGY-nv-azT">
|
||||
<rect key="frame" x="5" y="39" width="404" height="100"/>
|
||||
<rect key="frame" x="5" y="38.333333333333329" width="404" height="99.999999999999986"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="100" id="cQ3-vj-QS5"/>
|
||||
</constraints>
|
||||
</tableView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="ZuF-hT-QwS">
|
||||
<rect key="frame" x="5" y="149" width="404" height="50"/>
|
||||
<rect key="frame" x="5" y="148.33333333333334" width="404" height="50"/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter coupon code" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="0cZ-tT-3PH" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="5" y="0.0" width="294" height="50"/>
|
||||
@@ -209,14 +209,14 @@
|
||||
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0M5-Sk-NNP">
|
||||
<rect key="frame" x="5" y="209" width="404" height="0.66666666666665719"/>
|
||||
<rect key="frame" x="5" y="208.33333333333331" width="404" height="0.66666666666665719"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="0.69999999999999996" id="euT-bu-DWE"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hjo-i3-vzd">
|
||||
<rect key="frame" x="5" y="219.66666666666669" width="404" height="34.333333333333343"/>
|
||||
<rect key="frame" x="5" y="219" width="404" height="34.333333333333343"/>
|
||||
<color key="tintColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="All Offers & Coupons" image="chevron.forward.circle.fill" catalog="system"/>
|
||||
@@ -226,39 +226,39 @@
|
||||
</connections>
|
||||
</button>
|
||||
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" No Coupon Found!" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yYe-w7-xHF" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="5" y="259" width="404" height="0.0"/>
|
||||
<rect key="frame" x="5" y="258.33333333333331" width="404" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="kB1-D9-Jpc">
|
||||
<rect key="frame" x="5" y="259" width="404" height="0.0"/>
|
||||
<rect key="frame" x="5" y="258.33333333333331" width="404" height="0.0"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" id="Uhk-ez-kna"/>
|
||||
</constraints>
|
||||
</tableView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PfV-Yj-8cg">
|
||||
<rect key="frame" x="5" y="264" width="404" height="0.66666666666668561"/>
|
||||
<rect key="frame" x="5" y="263.33333333333331" width="404" height="0.66666666666668561"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="0.69999999999999996" id="4xH-CV-oza"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView hidden="YES" opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="IIC-eN-1kV">
|
||||
<rect key="frame" x="5" y="269.66666666666669" width="404" height="40.666666666666686"/>
|
||||
<rect key="frame" x="5" y="269" width="404" height="40.666666666666686"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="0fF-q8-366">
|
||||
<rect key="frame" x="0.0" y="0.0" width="404" height="0.0"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Subtotal: " textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="X02-Xy-T6S" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="82" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="78" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rs. 0" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VJO-dL-zw7" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="363" y="0.0" width="41" height="0.0"/>
|
||||
<rect key="frame" x="362.33333333333331" y="0.0" width="41.666666666666686" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -269,13 +269,13 @@
|
||||
<rect key="frame" x="0.0" y="20" width="404" height="0.0"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Discount: " textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SjJ-9G-tNV" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="84" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="81.666666666666671" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rs. 0" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Aru-WM-a5c" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="363" y="0.0" width="41" height="0.0"/>
|
||||
<rect key="frame" x="362.33333333333331" y="0.0" width="41.666666666666686" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -292,19 +292,19 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="13" translatesAutoresizingMaskIntoConstraints="NO" id="qF1-U6-f3P">
|
||||
<rect key="frame" x="5" y="274.66666666666669" width="404" height="84.666666666666686"/>
|
||||
<rect key="frame" x="5" y="274" width="404" height="84"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="YSF-eO-Ree">
|
||||
<rect key="frame" x="0.0" y="0.0" width="404" height="21.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="404" height="21"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Amount: " textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mDO-yI-336" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="122" height="21.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="116.33333333333333" height="21"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rs. 0" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lH2-35-Ttu" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="363" y="0.0" width="41" height="21.666666666666668"/>
|
||||
<rect key="frame" x="362.33333333333331" y="0.0" width="41.666666666666686" height="21"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -312,7 +312,7 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rp4-qX-3OH" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="34.666666666666629" width="404" height="50"/>
|
||||
<rect key="frame" x="0.0" y="34" width="404" height="50"/>
|
||||
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="UFU-ci-N8q">
|
||||
@@ -388,7 +388,7 @@
|
||||
</scenes>
|
||||
<designables>
|
||||
<designable name="0cZ-tT-3PH">
|
||||
<size key="intrinsicContentSize" width="134.33333333333334" height="21"/>
|
||||
<size key="intrinsicContentSize" width="186.66666666666666" height="20.333333333333332"/>
|
||||
</designable>
|
||||
</designables>
|
||||
<resources>
|
||||
@@ -398,7 +398,7 @@
|
||||
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</namedColor>
|
||||
<systemColor name="systemGreenColor">
|
||||
<color red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
import UIKit
|
||||
import WebKit
|
||||
import GoogleMobileAds
|
||||
|
||||
class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizerDelegate {
|
||||
|
||||
@@ -18,12 +19,14 @@ class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizer
|
||||
@IBOutlet weak var clickView: UIView!
|
||||
|
||||
@IBOutlet weak var webView: WKWebView!
|
||||
@IBOutlet weak var adView: UIView!
|
||||
|
||||
var startTimeStamp = Date()
|
||||
|
||||
typealias btnTappedBlock = () -> Void
|
||||
var btnTapped : btnTappedBlock?
|
||||
|
||||
var bottomBannerView = GADBannerView()
|
||||
|
||||
override var prefersStatusBarHidden: Bool {
|
||||
return true
|
||||
}
|
||||
@@ -39,9 +42,11 @@ class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizer
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
|
||||
DispatchQueue.main.async { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self)
|
||||
|
||||
if let orientation, orientation == .landscape{
|
||||
appDelegate.deviceOrientation = .landscapeRight
|
||||
let value = UIInterfaceOrientation.landscapeRight.rawValue
|
||||
@@ -162,3 +167,37 @@ class GamesWebViewVC: UIViewController, WKNavigationDelegate,UIGestureRecognizer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Google Ad Banner Delegate
|
||||
|
||||
extension GamesWebViewVC : GADBannerViewDelegate{
|
||||
|
||||
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidReceiveAd")
|
||||
bannerView.alpha = 0
|
||||
bannerView.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
|
||||
UIView.animate(withDuration: 1, animations: {
|
||||
bannerView.alpha = 1
|
||||
})
|
||||
}
|
||||
|
||||
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
|
||||
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidRecordImpression")
|
||||
}
|
||||
|
||||
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillPresentScreen")
|
||||
}
|
||||
|
||||
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillDIsmissScreen")
|
||||
}
|
||||
|
||||
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidDismissScreen")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -588,7 +588,7 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<subviews>
|
||||
<wkWebView contentMode="scaleToFill" allowsLinkPreview="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k9t-dv-nhb">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="744"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<wkWebViewConfiguration key="configuration" allowsAirPlayForMediaPlayback="NO" allowsPictureInPictureMediaPlayback="NO">
|
||||
<dataDetectorTypes key="dataDetectorTypes" none="YES"/>
|
||||
@@ -596,13 +596,18 @@
|
||||
<wkPreferences key="preferences" javaScriptCanOpenWindowsAutomatically="YES"/>
|
||||
</wkWebViewConfiguration>
|
||||
</wkWebView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kme-E0-ysm">
|
||||
<rect key="frame" x="0.0" y="746" width="414" height="150"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="k9t-dv-nhb" secondAttribute="trailing" id="280-OD-igM"/>
|
||||
<constraint firstAttribute="bottom" secondItem="k9t-dv-nhb" secondAttribute="bottom" id="LwL-cf-cGz"/>
|
||||
<constraint firstItem="k9t-dv-nhb" firstAttribute="top" secondItem="UBq-Ug-nVj" secondAttribute="top" id="OLz-JE-Ule"/>
|
||||
<constraint firstItem="k9t-dv-nhb" firstAttribute="leading" secondItem="UBq-Ug-nVj" secondAttribute="leading" id="XhR-Si-hmd"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Kme-E0-ysm" secondAttribute="bottom" id="jmT-2e-teQ"/>
|
||||
<constraint firstItem="Kme-E0-ysm" firstAttribute="top" secondItem="k9t-dv-nhb" secondAttribute="bottom" constant="2" id="uKZ-yF-y2X"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7Qp-yb-i2l">
|
||||
@@ -631,12 +636,16 @@
|
||||
<constraint firstItem="UBq-Ug-nVj" firstAttribute="top" secondItem="8Dy-BS-4tC" secondAttribute="top" id="9CL-yd-6Hq"/>
|
||||
<constraint firstItem="UBq-Ug-nVj" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" id="9hb-Yg-ACx"/>
|
||||
<constraint firstItem="7Qp-yb-i2l" firstAttribute="top" secondItem="UAe-my-8xP" secondAttribute="top" constant="10" id="Oxh-34-kbI"/>
|
||||
<constraint firstItem="Kme-E0-ysm" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" id="VYI-NP-6PJ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="UBq-Ug-nVj" secondAttribute="bottom" id="lOx-rP-1sz"/>
|
||||
<constraint firstItem="7Qp-yb-i2l" firstAttribute="leading" secondItem="UAe-my-8xP" secondAttribute="leading" constant="7" id="otO-uz-8gX"/>
|
||||
<constraint firstItem="UAe-my-8xP" firstAttribute="trailing" secondItem="Kme-E0-ysm" secondAttribute="trailing" id="vVM-pz-oEN"/>
|
||||
<constraint firstItem="Kme-E0-ysm" firstAttribute="height" secondItem="8Dy-BS-4tC" secondAttribute="height" multiplier="0.167411" id="w7p-w4-jTu"/>
|
||||
<constraint firstItem="UBq-Ug-nVj" firstAttribute="trailing" secondItem="UAe-my-8xP" secondAttribute="trailing" id="xcS-Cj-AOE"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="adView" destination="Kme-E0-ysm" id="Tgg-so-4PW"/>
|
||||
<outlet property="clickView" destination="UBq-Ug-nVj" id="AR4-7x-xFq"/>
|
||||
<outlet property="webView" destination="k9t-dv-nhb" id="3fK-U0-3Dd"/>
|
||||
</connections>
|
||||
|
||||
61
WOKA/Helpers/AdResuable/AdReusable.swift
Normal file
61
WOKA/Helpers/AdResuable/AdReusable.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// AdReusable.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by MacBook Pro on 16/09/24.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import GoogleMobileAds
|
||||
|
||||
class AdReusable {
|
||||
|
||||
// Singleton instance
|
||||
static let sharedInstance = AdReusable()
|
||||
|
||||
// Private init to prevent creating additional instances
|
||||
private init() {}
|
||||
|
||||
// Function to set up banner ads with an existing banner view
|
||||
func setupBannerAd(bannerView: GADBannerView, in containerView: UIView, adUnitID: String, viewController: GADBannerViewDelegate & UIViewController, height: CGFloat? = 0.0, width: CGFloat? = 0.0) {
|
||||
|
||||
// Adjust the view width and height based on provided values
|
||||
let viewWidth = containerView.frame.inset(by: containerView.safeAreaInsets).width - (width ?? 0)
|
||||
let viewHeight = containerView.frame.height - (height ?? 0)
|
||||
|
||||
// Create the adaptive banner size
|
||||
// let adaptiveSize = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
|
||||
let adaptiveSize = GADPortraitInlineAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
bannerView.adSize = adaptiveSize
|
||||
|
||||
// Set the delegate to handle banner events
|
||||
bannerView.delegate = viewController
|
||||
|
||||
// Adjust the banner's frame
|
||||
bannerView.frame = CGRect(x: 0, y: 0, width: viewWidth, height: viewHeight)
|
||||
|
||||
// Center the banner within the containerView
|
||||
bannerView.center = CGPoint(x: containerView.frame.width / 2, y: containerView.frame.height / 2)
|
||||
|
||||
// If height is provided, add rounded corners
|
||||
if let heightValue = height, heightValue > 0 {
|
||||
bannerView.layer.cornerRadius = 2
|
||||
bannerView.clipsToBounds = true
|
||||
}
|
||||
|
||||
// Add the banner view to the container
|
||||
containerView.addSubview(bannerView)
|
||||
|
||||
// Set the ad unit ID and root view controller for the banner
|
||||
bannerView.adUnitID = adUnitID
|
||||
bannerView.rootViewController = viewController
|
||||
|
||||
// Load the ad request
|
||||
bannerView.load(GADRequest())
|
||||
|
||||
// Ensure the layout is updated
|
||||
bannerView.layoutIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<true/>
|
||||
<key>API_KEY_ID</key>
|
||||
<string>$(API_KEY_ID)</string>
|
||||
<key>API_KEY_PASS</key>
|
||||
|
||||
@@ -9,6 +9,7 @@ import UIKit
|
||||
import JWPlayerKit
|
||||
import AVFAudio
|
||||
import AVFoundation
|
||||
import GoogleMobileAds
|
||||
|
||||
class JWKaraokePlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate {
|
||||
|
||||
@@ -22,6 +23,8 @@ class JWKaraokePlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate
|
||||
@IBOutlet weak var outerStack : UIStackView!
|
||||
@IBOutlet weak var retryKaraokeBtn: LocalisedElementsButton!
|
||||
|
||||
@IBOutlet weak var adView: UIView!
|
||||
|
||||
var config: JWPlayerConfiguration!
|
||||
var dismissTapped: (() -> Void)?
|
||||
|
||||
@@ -51,6 +54,7 @@ class JWKaraokePlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate
|
||||
playerView.captionStyle = .none
|
||||
self.view.bringSubviewToFront(outerStack)
|
||||
self.view.bringSubviewToFront(backButton)
|
||||
self.view.bringSubviewToFront(adView)
|
||||
|
||||
// Add observers
|
||||
NotificationCenter.default.addObserver(self,selector: #selector(appDidEnterBackground),name: UIApplication.didEnterBackgroundNotification,object: nil)
|
||||
@@ -347,6 +351,34 @@ extension JWKaraokePlayerVC {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Google Ad Banner Delegate
|
||||
|
||||
extension JWKaraokePlayerVC : GADBannerViewDelegate{
|
||||
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidReceiveAd")
|
||||
bannerView.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
|
||||
}
|
||||
|
||||
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
|
||||
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidRecordImpression")
|
||||
}
|
||||
|
||||
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillPresentScreen")
|
||||
}
|
||||
|
||||
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillDIsmissScreen")
|
||||
}
|
||||
|
||||
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidDismissScreen")
|
||||
}
|
||||
}
|
||||
|
||||
//OLD Code
|
||||
//private var audioEngine: AVAudioEngine!
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import GoogleMobileAds
|
||||
|
||||
class KaraokeListingVC: UIViewController {
|
||||
|
||||
@@ -129,8 +130,14 @@ class KaraokeListingVC: UIViewController {
|
||||
*/
|
||||
vm.pageNo = 0
|
||||
noDataStack.isHidden = true
|
||||
headerTitleLabel.isHidden = false
|
||||
headerBtn.isHidden = false
|
||||
vm.startShimmer()
|
||||
vm.getKaraokeListing()
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
vm.checkAds()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,6 +319,55 @@ extension KaraokeListingVC : ReloadSeriesFavLike{
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Google Ad Banner Delegate
|
||||
|
||||
extension KaraokeListingVC : GADBannerViewDelegate{
|
||||
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
|
||||
switch bannerView{
|
||||
case vm.headerBannerView:
|
||||
headerView.stopShimmer()
|
||||
case vm.headerBannerBottomView:
|
||||
headerBtn.alpha = 0
|
||||
headerBtn.isEnabled = false
|
||||
selectedShowView.stopShimmer()
|
||||
default:
|
||||
break
|
||||
}
|
||||
print("bannerViewDidReceiveAd")
|
||||
bannerView.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
|
||||
}
|
||||
|
||||
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
|
||||
switch bannerView{
|
||||
case vm.headerBannerView:
|
||||
headerView.stopShimmer()
|
||||
case vm.headerBannerBottomView:
|
||||
headerTitleLabel.isHidden = true
|
||||
headerBtn.isHidden = true
|
||||
selectedShowView.stopShimmer()
|
||||
default:
|
||||
break
|
||||
}
|
||||
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidRecordImpression")
|
||||
}
|
||||
|
||||
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillPresentScreen")
|
||||
}
|
||||
|
||||
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillDIsmissScreen")
|
||||
}
|
||||
|
||||
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidDismissScreen")
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Animating scrollView
|
||||
|
||||
extension KaraokeListingVC: UIScrollViewDelegate {
|
||||
|
||||
@@ -763,6 +763,13 @@
|
||||
</stackView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XDD-DO-5GP">
|
||||
<rect key="frame" x="5" y="128" width="404" height="140"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="140" id="WCG-7C-BhF"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="fhs-yV-fEZ"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
@@ -770,11 +777,15 @@
|
||||
<constraint firstItem="yek-VM-Cus" firstAttribute="centerY" secondItem="fhs-yV-fEZ" secondAttribute="centerY" constant="200" id="0CQ-IK-CSM"/>
|
||||
<constraint firstItem="yek-VM-Cus" firstAttribute="leading" secondItem="fhs-yV-fEZ" secondAttribute="leading" constant="20" id="0qJ-R4-ZTb"/>
|
||||
<constraint firstItem="Nuf-TE-5LZ" firstAttribute="top" secondItem="fhs-yV-fEZ" secondAttribute="top" constant="15" id="7jB-UT-Xqq"/>
|
||||
<constraint firstItem="XDD-DO-5GP" firstAttribute="top" secondItem="Nuf-TE-5LZ" secondAttribute="bottom" constant="20" id="LGq-aG-tZc"/>
|
||||
<constraint firstItem="fhs-yV-fEZ" firstAttribute="trailing" secondItem="yek-VM-Cus" secondAttribute="trailing" constant="20" id="Omt-Ig-58p"/>
|
||||
<constraint firstItem="Nuf-TE-5LZ" firstAttribute="leading" secondItem="fhs-yV-fEZ" secondAttribute="leading" constant="10" id="Tcl-yf-D2V"/>
|
||||
<constraint firstItem="XDD-DO-5GP" firstAttribute="leading" secondItem="fhs-yV-fEZ" secondAttribute="leading" constant="5" id="U0b-N4-Qqs"/>
|
||||
<constraint firstItem="fhs-yV-fEZ" firstAttribute="trailing" secondItem="XDD-DO-5GP" secondAttribute="trailing" constant="5" id="rIF-aH-16u"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="adView" destination="XDD-DO-5GP" id="5LU-xH-njl"/>
|
||||
<outlet property="backButton" destination="Nuf-TE-5LZ" id="syG-po-xEv"/>
|
||||
<outlet property="downloadRecordingBtn" destination="3Ui-AF-Hlc" id="9TA-QY-4xw"/>
|
||||
<outlet property="karaokeLoading" destination="Vsm-wu-cKE" id="GBV-UM-lT7"/>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import UIKit
|
||||
import AVFAudio
|
||||
import AVFoundation
|
||||
import GoogleMobileAds
|
||||
|
||||
class JWKaraokePlayerVM{
|
||||
|
||||
@@ -27,8 +28,11 @@ class JWKaraokePlayerVM{
|
||||
var endTime : TimeInterval?
|
||||
|
||||
var startTimeStamp = Date()
|
||||
|
||||
var headerBannerView = GADBannerView()
|
||||
|
||||
func initView(){
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
|
||||
startTimeStamp = Date()
|
||||
vc.downloadRecordingBtn.isEnabled = false
|
||||
hideShowKaraoke(isLoading: true)
|
||||
@@ -47,7 +51,7 @@ class JWKaraokePlayerVM{
|
||||
|
||||
func setupKaraoke(){
|
||||
guard let videoUrl else{return}
|
||||
let avURL = URL(string: videoUrl)!
|
||||
let avURL = URL(string: "https://content.jwplatform.com/videos/699dmCGz-UwFX5S0R.mp4")!
|
||||
let asset = AVAsset(url: avURL)
|
||||
hideShowKaraoke(isLoading: true)
|
||||
let outputURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("\(videoTitle?.trimmingCharacters(in: .whitespaces) ?? "extractedAudio").m4a")
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
import UIKit
|
||||
import Alamofire
|
||||
import GoogleMobileAds
|
||||
|
||||
class KaraokeListingVM{
|
||||
|
||||
@@ -19,6 +20,9 @@ class KaraokeListingVM{
|
||||
var pageNo = 0
|
||||
var maxHeaderHeight = 0.0
|
||||
|
||||
var headerBannerView = GADBannerView()
|
||||
var headerBannerBottomView = GADBannerView()
|
||||
|
||||
func initView(){
|
||||
setupCell()
|
||||
vc.scrollView.indicatorStyle = .white // or .white
|
||||
@@ -33,6 +37,11 @@ class KaraokeListingVM{
|
||||
//Set banner height
|
||||
maxHeaderHeight = UIScreen.main.bounds.width * 0.55
|
||||
vc.headerHeight.constant = maxHeaderHeight
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
checkAds()
|
||||
})
|
||||
}
|
||||
|
||||
func setupCell(){
|
||||
@@ -67,6 +76,40 @@ class KaraokeListingVM{
|
||||
}
|
||||
}
|
||||
|
||||
func checkAds(){
|
||||
|
||||
/*
|
||||
This is test ad.
|
||||
*/
|
||||
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData, let webSeriesAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first{
|
||||
// check if ads data contains ad for webseries
|
||||
if let bannerImage = webSeriesAd.bannerImage, let buttonImage = webSeriesAd.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
vc.headerViewLabelHeight.constant = 10
|
||||
vc.headerBtn.backgroundColor = .clear
|
||||
vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
|
||||
vc.headerImage.addTapGesture {
|
||||
if let adID = webSeriesAd.id{
|
||||
PersistentStorage.shared.addAdsCount(adID: adID ,clicks: 1)
|
||||
}
|
||||
if let adLink = webSeriesAd.adLink ,let url = URL(string: adLink), UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerBottomView, in: vc.selectedShowView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - GetKaraoke Listing
|
||||
|
||||
func getContinueWatching(){
|
||||
@@ -145,27 +188,27 @@ class KaraokeListingVM{
|
||||
/*
|
||||
MAke logic for ads
|
||||
*/
|
||||
if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// check if ads data contains ad for webseries
|
||||
if let karaokeAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first, let bannerImage = karaokeAd.bannerImage, let buttonImage = karaokeAd.buttonImage{
|
||||
vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
vc.headerBtn.setTitle("", for: .normal)
|
||||
vc.headerTitleLabel.text = ""
|
||||
vc.headerViewLabelHeight.constant = 10
|
||||
vc.headerBtn.backgroundColor = .clear
|
||||
vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
}else{
|
||||
if !isBtnClick{
|
||||
self.headerData = self.karaokeListData.first
|
||||
setHeaderData()
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if !isBtnClick{
|
||||
self.headerData = self.karaokeListData.first
|
||||
setHeaderData()
|
||||
}
|
||||
}
|
||||
// if let adsData = AuthFunc.shareInstance.adsData{
|
||||
// // check if ads data contains ad for webseries
|
||||
// if let karaokeAd = adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first, let bannerImage = karaokeAd.bannerImage, let buttonImage = karaokeAd.buttonImage{
|
||||
// vc.headerImage.imageURL(bannerImage, color: .white)
|
||||
// vc.headerBtn.setTitle("", for: .normal)
|
||||
// vc.headerTitleLabel.text = ""
|
||||
// vc.headerViewLabelHeight.constant = 10
|
||||
// vc.headerBtn.backgroundColor = .clear
|
||||
// vc.headerBtn.sd_setBackgroundImage(with: URL(string:buttonImage), for: .normal)
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.karaokeListData.first
|
||||
// setHeaderData()
|
||||
// }
|
||||
// }
|
||||
// }else{
|
||||
// if !isBtnClick{
|
||||
// self.headerData = self.karaokeListData.first
|
||||
// setHeaderData()
|
||||
// }
|
||||
// }
|
||||
|
||||
self.stopShimmer()
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import UIKit
|
||||
import AVFoundation
|
||||
import Alamofire
|
||||
import GoogleMobileAds
|
||||
|
||||
class WokaFMVC: UIViewController {
|
||||
|
||||
@@ -219,6 +220,38 @@ extension UIButton {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Google Ad Banner Delegate
|
||||
|
||||
extension WokaFMVC : GADBannerViewDelegate{
|
||||
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidReceiveAd")
|
||||
bannerView.alpha = 0
|
||||
bannerView.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
|
||||
UIView.animate(withDuration: 1, animations: {
|
||||
bannerView.alpha = 1
|
||||
})
|
||||
}
|
||||
|
||||
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
|
||||
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidRecordImpression")
|
||||
}
|
||||
|
||||
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillPresentScreen")
|
||||
}
|
||||
|
||||
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillDIsmissScreen")
|
||||
}
|
||||
|
||||
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidDismissScreen")
|
||||
}
|
||||
}
|
||||
|
||||
////Update system volume
|
||||
//extension MPVolumeView {
|
||||
|
||||
@@ -17,7 +17,8 @@ class WokaFMVM{
|
||||
var playerItem: AVPlayerItem!
|
||||
|
||||
var startTimeStamp = Date()
|
||||
|
||||
var bottomBannerView = GADBannerView()
|
||||
|
||||
func initView(){
|
||||
startTimeStamp = Date()
|
||||
vc.mainView.roundCorners(radius: 10, corners: [.topLeft, .topRight])
|
||||
@@ -43,26 +44,15 @@ class WokaFMVM{
|
||||
self.vc.dismiss(animated: true)
|
||||
}
|
||||
|
||||
var bannerView = GADBannerView()
|
||||
|
||||
let viewWidth = vc.adView.frame.inset(by: vc.adView.safeAreaInsets).width
|
||||
|
||||
// Here the current interface orientation is used. Use
|
||||
// GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// particular orientation,
|
||||
let adaptiveSize = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
bannerView = GADBannerView(adSize: adaptiveSize)
|
||||
|
||||
bannerView.center = vc.adView.center
|
||||
|
||||
bannerView.frame = CGRect(x: 0, y: 0, width: vc.adView.frame.width, height: vc.adView.frame.height)
|
||||
vc.adView.addSubview(bannerView)
|
||||
bannerView.adUnitID = K.GoogleAdIDs.themeTwo
|
||||
bannerView.rootViewController = self.vc
|
||||
bannerView.load(GADRequest())
|
||||
bannerView.layoutIfNeeded()
|
||||
vc.adView.isHidden = false
|
||||
/*
|
||||
Show google ads with dispatch queue.
|
||||
*/
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.bottomBannerView, in: vc.adView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
vc.adView.isHidden = false
|
||||
})
|
||||
}
|
||||
|
||||
// MARK: - Setup AV & Player
|
||||
|
||||
@@ -133,9 +133,9 @@
|
||||
<constraint firstItem="QCY-ib-bFw" firstAttribute="top" secondItem="hI6-1V-MUR" secondAttribute="top" constant="4" id="xPq-57-EFe"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IEh-tF-XpP">
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IEh-tF-XpP">
|
||||
<rect key="frame" x="0.0" y="280" width="393" height="100"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="100" id="qDR-Bj-46Y"/>
|
||||
</constraints>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import GoogleMobileAds
|
||||
|
||||
protocol ReloadSeriesFavLike{
|
||||
func updateRows(index : Int, type : FavCellCLick, isFav : Bool? , isLike : Bool?, id : Int?)
|
||||
@@ -149,6 +150,9 @@ class WebSeriesVC: UIViewController {
|
||||
PersistentStorage.shared.addOthersCount()
|
||||
noDataView.isHidden = true
|
||||
// for the first load always send hindi as it is default category
|
||||
headerViewLabel.isHidden = false
|
||||
headerBtn.isHidden = false
|
||||
|
||||
vm.startShimmer()
|
||||
vm.checkAds()
|
||||
// showListingTableView.reloadData()
|
||||
@@ -419,6 +423,56 @@ extension WebSeriesVC : UICollectionViewDelegateFlowLayout{
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Google Ad Banner Delegate
|
||||
|
||||
extension WebSeriesVC : GADBannerViewDelegate{
|
||||
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
|
||||
switch bannerView{
|
||||
case vm.headerBannerView:
|
||||
headerView.stopShimmer()
|
||||
case vm.masilaBannerView:
|
||||
headerBtn.alpha = 0
|
||||
headerBtn.isEnabled = false
|
||||
masilaTrailerView.stopShimmer()
|
||||
default:
|
||||
break
|
||||
}
|
||||
print("bannerViewDidReceiveAd")
|
||||
bannerView.backgroundColor = #colorLiteral(red: 0.01960784314, green: 0, blue: 0.2196078431, alpha: 1)
|
||||
}
|
||||
|
||||
func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
|
||||
switch bannerView{
|
||||
case vm.headerBannerView:
|
||||
headerView.stopShimmer()
|
||||
case vm.masilaBannerView:
|
||||
headerViewLabel.isHidden = true
|
||||
headerBtn.isHidden = true
|
||||
masilaTrailerView.stopShimmer()
|
||||
default:
|
||||
break
|
||||
}
|
||||
print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)")
|
||||
}
|
||||
|
||||
func bannerViewDidRecordImpression(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidRecordImpression")
|
||||
}
|
||||
|
||||
func bannerViewWillPresentScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillPresentScreen")
|
||||
}
|
||||
|
||||
func bannerViewWillDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewWillDIsmissScreen")
|
||||
}
|
||||
|
||||
func bannerViewDidDismissScreen(_ bannerView: GADBannerView) {
|
||||
print("bannerViewDidDismissScreen")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Animating scrollView
|
||||
|
||||
extension WebSeriesVC: UIScrollViewDelegate {
|
||||
|
||||
@@ -29,6 +29,9 @@ class WebSeriesVM{
|
||||
|
||||
var maxHeaderHeight = 0.0
|
||||
|
||||
var headerBannerView = GADBannerView()
|
||||
var masilaBannerView = GADBannerView()
|
||||
|
||||
func initView(){
|
||||
|
||||
// let heightMultiplier: CGFloat = 0.257511
|
||||
@@ -115,25 +118,49 @@ class WebSeriesVM{
|
||||
}
|
||||
}
|
||||
}else{
|
||||
var bannerView = GADBannerView()
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { [weak self] in
|
||||
guard let self else{return}
|
||||
|
||||
let viewWidth = vc.headerView.frame.inset(by: vc.headerView.safeAreaInsets).width
|
||||
|
||||
// Here the current interface orientation is used. Use
|
||||
// GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// particular orientation,
|
||||
let adaptiveSize = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
bannerView = GADBannerView(adSize: adaptiveSize)
|
||||
|
||||
bannerView.center = vc.headerView.center
|
||||
|
||||
bannerView.frame = CGRect(x: 0, y: 0, width: vc.headerView.frame.width, height: vc.headerView.frame.height)
|
||||
vc.headerView.addSubview(bannerView)
|
||||
bannerView.adUnitID = K.GoogleAdIDs.themeTwo
|
||||
bannerView.rootViewController = self.vc
|
||||
bannerView.load(GADRequest())
|
||||
bannerView.layoutIfNeeded()
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.headerBannerView, in: vc.headerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc)
|
||||
AdReusable.sharedInstance.setupBannerAd(bannerView: self.masilaBannerView, in: vc.masilaTrailerView, adUnitID: K.GoogleAdIDs.themeTwo, viewController: self.vc, height: 8, width: 15)
|
||||
})
|
||||
// let viewWidth = vc.headerView.frame.inset(by: vc.headerView.safeAreaInsets).width
|
||||
//
|
||||
// // Here the current interface orientation is used. Use
|
||||
// // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// // particular orientation,
|
||||
// let adaptiveSize = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
|
||||
// headerBannerView = GADBannerView(adSize: adaptiveSize)
|
||||
// headerBannerView.delegate = self.vc
|
||||
// headerBannerView.center = vc.headerView.center
|
||||
//
|
||||
// headerBannerView.frame = CGRect(x: 0, y: 0, width: vc.headerView.frame.width, height: vc.headerView.frame.height)
|
||||
// vc.headerView.addSubview(headerBannerView)
|
||||
// headerBannerView.adUnitID = "K.GoogleAdIDs.themeTwo"
|
||||
// headerBannerView.rootViewController = self.vc
|
||||
// headerBannerView.load(GADRequest())
|
||||
// headerBannerView.layoutIfNeeded()
|
||||
//
|
||||
// var bannerView2 = GADBannerView()
|
||||
//
|
||||
// let viewWidth2 = vc.masilaTrailerView.frame.inset(by: vc.masilaTrailerView.safeAreaInsets).width
|
||||
//
|
||||
// // Here the current interface orientation is used. Use
|
||||
// // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or
|
||||
// // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a
|
||||
// // particular orientation,
|
||||
// let adaptiveSize2 = GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth2)
|
||||
// bannerView2 = GADBannerView(adSize: adaptiveSize2)
|
||||
//
|
||||
// bannerView2.center = vc.masilaTrailerView.center
|
||||
//
|
||||
// bannerView2.frame = CGRect(x: 0, y: 0, width: vc.masilaTrailerView.frame.width, height: vc.masilaTrailerView.frame.height)
|
||||
// vc.masilaTrailerView.addSubview(bannerView2)
|
||||
// bannerView2.adUnitID = K.GoogleAdIDs.themeTwo
|
||||
// bannerView2.rootViewController = self.vc
|
||||
// bannerView2.load(GADRequest())
|
||||
// bannerView2.layoutIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
<rect key="frame" x="377.66666666666669" y="0.0" width="32.333333333333314" height="49"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="hand.thumbsup.fill" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="eng-oC-d9H">
|
||||
<rect key="frame" x="0.0" y="0.66666666666666785" width="20" height="47.666666666666657"/>
|
||||
<rect key="frame" x="0.0" y="0.66666666666666785" width="20" height="47.666666666666671"/>
|
||||
<color key="tintColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Egv-Cu-aPK">
|
||||
|
||||
Reference in New Issue
Block a user