Commit 130bcfd22f52ac1b0530af3b8a03ad55d2e286ee

Authored by liushiyu
1 parent 830caff1

提交积分界面布局

Showing 65 changed files with 1368 additions and 84 deletions
@@ -35,6 +35,13 @@ target 'metaCode' do @@ -35,6 +35,13 @@ target 'metaCode' do
35 pod 'Qiniu' 35 pod 'Qiniu'
36 #加载GIF 36 #加载GIF
37 pod 'SwiftGifOrigin', '~> 1.7.0' 37 pod 'SwiftGifOrigin', '~> 1.7.0'
  38 + #分类滚动切换视图
  39 + pod 'JXSegmentedView', :git => 'https://gitee.com/mirrors/JXSegmentedView.git'
  40 + pod 'JXPagingView/Paging'
  41 +
  42 +
  43 + #应用调试工具
  44 + pod 'FWDebug', :configurations => ['Debug']
38 45
39 target 'metaCodeTests' do 46 target 'metaCodeTests' do
40 inherit! :search_paths 47 inherit! :search_paths
metaCode.xcodeproj/project.pbxproj
@@ -28,11 +28,14 @@ @@ -28,11 +28,14 @@
28 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */; }; 28 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */; };
29 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */; }; 29 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */; };
30 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792E57DA2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift */; }; 30 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792E57DA2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift */; };
31 - 79396EED2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79396EEC2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift */; }; 31 + 79396EED2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79396EEC2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift */; };
32 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */; }; 32 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */; };
33 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; }; 33 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; };
34 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; }; 34 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; };
35 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */; }; 35 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */; };
  36 + 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */; };
  37 + 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */; };
  38 + 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */; };
36 798A44E82A30134400815935 /* CNLiveMineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */; }; 39 798A44E82A30134400815935 /* CNLiveMineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */; };
37 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */; }; 40 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */; };
38 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */; }; 41 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */; };
@@ -122,11 +125,14 @@ @@ -122,11 +125,14 @@
122 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewController.swift; sourceTree = "<group>"; }; 125 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewController.swift; sourceTree = "<group>"; };
123 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveCommonBaseModel.swift; sourceTree = "<group>"; }; 126 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveCommonBaseModel.swift; sourceTree = "<group>"; };
124 792E57DA2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveCommonQiniuTool.swift; sourceTree = "<group>"; }; 127 792E57DA2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveCommonQiniuTool.swift; sourceTree = "<group>"; };
125 - 79396EEC2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSObject+CNLiveCurrentVC.swift"; sourceTree = "<group>"; }; 128 + 79396EEC2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+CNLiveCurrentVC.swift"; sourceTree = "<group>"; };
126 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveInfoShowViewController.swift; sourceTree = "<group>"; }; 129 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveInfoShowViewController.swift; sourceTree = "<group>"; };
127 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 130 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
128 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; }; 131 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; };
129 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewModel.swift; sourceTree = "<group>"; }; 132 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewModel.swift; sourceTree = "<group>"; };
  133 + 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineQuestViewController.swift; sourceTree = "<group>"; };
  134 + 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineEarnViewController.swift; sourceTree = "<group>"; };
  135 + 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineEarnListViewController.swift; sourceTree = "<group>"; };
130 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineHeaderView.swift; sourceTree = "<group>"; }; 136 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineHeaderView.swift; sourceTree = "<group>"; };
131 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineBodyListView.swift; sourceTree = "<group>"; }; 137 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineBodyListView.swift; sourceTree = "<group>"; };
132 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineAddInfoViewController.swift; sourceTree = "<group>"; }; 138 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineAddInfoViewController.swift; sourceTree = "<group>"; };
@@ -230,7 +236,7 @@ @@ -230,7 +236,7 @@
230 790D019C2A2DCBD000C5978D /* UIView+CNGradient.swift */, 236 790D019C2A2DCBD000C5978D /* UIView+CNGradient.swift */,
231 79282A3B2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift */, 237 79282A3B2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift */,
232 798A44EF2A305BC200815935 /* UIButton+CNLiveExtension.swift */, 238 798A44EF2A305BC200815935 /* UIButton+CNLiveExtension.swift */,
233 - 79396EEC2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift */, 239 + 79396EEC2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift */,
234 79BDDCBD2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift */, 240 79BDDCBD2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift */,
235 790B1FB52A41938F0074CF00 /* UIImage+CNLiveColorImage.swift */, 241 790B1FB52A41938F0074CF00 /* UIImage+CNLiveColorImage.swift */,
236 ); 242 );
@@ -302,6 +308,9 @@ @@ -302,6 +308,9 @@
302 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */, 308 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */,
303 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */, 309 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */,
304 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */, 310 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */,
  311 + 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */,
  312 + 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */,
  313 + 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */,
305 ); 314 );
306 path = Controller; 315 path = Controller;
307 sourceTree = "<group>"; 316 sourceTree = "<group>";
@@ -574,7 +583,7 @@ @@ -574,7 +583,7 @@
574 818163B42A25CFCC00579C86 /* Sources */, 583 818163B42A25CFCC00579C86 /* Sources */,
575 818163B52A25CFCC00579C86 /* Frameworks */, 584 818163B52A25CFCC00579C86 /* Frameworks */,
576 818163B62A25CFCC00579C86 /* Resources */, 585 818163B62A25CFCC00579C86 /* Resources */,
577 - 88E19AA0928A4312141EA5EA /* [CP] Embed Pods Frameworks */, 586 + E0FAE2296315BED785FA507E /* [CP] Embed Pods Frameworks */,
578 ); 587 );
579 buildRules = ( 588 buildRules = (
580 ); 589 );
@@ -612,7 +621,7 @@ @@ -612,7 +621,7 @@
612 818163D42A25CFCF00579C86 /* Sources */, 621 818163D42A25CFCF00579C86 /* Sources */,
613 818163D52A25CFCF00579C86 /* Frameworks */, 622 818163D52A25CFCF00579C86 /* Frameworks */,
614 818163D62A25CFCF00579C86 /* Resources */, 623 818163D62A25CFCF00579C86 /* Resources */,
615 - 4967DCDF4BA0FC7AE727076E /* [CP] Embed Pods Frameworks */, 624 + 035341748B563C741D14CD83 /* [CP] Embed Pods Frameworks */,
616 ); 625 );
617 buildRules = ( 626 buildRules = (
618 ); 627 );
@@ -699,29 +708,7 @@ @@ -699,29 +708,7 @@
699 /* End PBXResourcesBuildPhase section */ 708 /* End PBXResourcesBuildPhase section */
700 709
701 /* Begin PBXShellScriptBuildPhase section */ 710 /* Begin PBXShellScriptBuildPhase section */
702 - 148A6537732D7A65559DB472 /* [CP] Check Pods Manifest.lock */ = {  
703 - isa = PBXShellScriptBuildPhase;  
704 - buildActionMask = 2147483647;  
705 - files = (  
706 - );  
707 - inputFileListPaths = (  
708 - );  
709 - inputPaths = (  
710 - "${PODS_PODFILE_DIR_PATH}/Podfile.lock",  
711 - "${PODS_ROOT}/Manifest.lock",  
712 - );  
713 - name = "[CP] Check Pods Manifest.lock";  
714 - outputFileListPaths = (  
715 - );  
716 - outputPaths = (  
717 - "$(DERIVED_FILE_DIR)/Pods-metaCodeTests-checkManifestLockResult.txt",  
718 - );  
719 - runOnlyForDeploymentPostprocessing = 0;  
720 - shellPath = /bin/sh;  
721 - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";  
722 - showEnvVarsInLog = 0;  
723 - };  
724 - 4967DCDF4BA0FC7AE727076E /* [CP] Embed Pods Frameworks */ = { 711 + 035341748B563C741D14CD83 /* [CP] Embed Pods Frameworks */ = {
725 isa = PBXShellScriptBuildPhase; 712 isa = PBXShellScriptBuildPhase;
726 buildActionMask = 2147483647; 713 buildActionMask = 2147483647;
727 files = ( 714 files = (
@@ -738,7 +725,7 @@ @@ -738,7 +725,7 @@
738 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-metaCode-metaCodeUITests/Pods-metaCode-metaCodeUITests-frameworks.sh\"\n"; 725 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-metaCode-metaCodeUITests/Pods-metaCode-metaCodeUITests-frameworks.sh\"\n";
739 showEnvVarsInLog = 0; 726 showEnvVarsInLog = 0;
740 }; 727 };
741 - 53AB1F83C55845CC654163DE /* [CP] Check Pods Manifest.lock */ = { 728 + 148A6537732D7A65559DB472 /* [CP] Check Pods Manifest.lock */ = {
742 isa = PBXShellScriptBuildPhase; 729 isa = PBXShellScriptBuildPhase;
743 buildActionMask = 2147483647; 730 buildActionMask = 2147483647;
744 files = ( 731 files = (
@@ -753,28 +740,33 @@ @@ -753,28 +740,33 @@
753 outputFileListPaths = ( 740 outputFileListPaths = (
754 ); 741 );
755 outputPaths = ( 742 outputPaths = (
756 - "$(DERIVED_FILE_DIR)/Pods-metaCode-metaCodeUITests-checkManifestLockResult.txt", 743 + "$(DERIVED_FILE_DIR)/Pods-metaCodeTests-checkManifestLockResult.txt",
757 ); 744 );
758 runOnlyForDeploymentPostprocessing = 0; 745 runOnlyForDeploymentPostprocessing = 0;
759 shellPath = /bin/sh; 746 shellPath = /bin/sh;
760 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 747 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
761 showEnvVarsInLog = 0; 748 showEnvVarsInLog = 0;
762 }; 749 };
763 - 88E19AA0928A4312141EA5EA /* [CP] Embed Pods Frameworks */ = { 750 + 53AB1F83C55845CC654163DE /* [CP] Check Pods Manifest.lock */ = {
764 isa = PBXShellScriptBuildPhase; 751 isa = PBXShellScriptBuildPhase;
765 buildActionMask = 2147483647; 752 buildActionMask = 2147483647;
766 files = ( 753 files = (
767 ); 754 );
768 inputFileListPaths = ( 755 inputFileListPaths = (
769 - "${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks-${CONFIGURATION}-input-files.xcfilelist",  
770 ); 756 );
771 - name = "[CP] Embed Pods Frameworks"; 757 + inputPaths = (
  758 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  759 + "${PODS_ROOT}/Manifest.lock",
  760 + );
  761 + name = "[CP] Check Pods Manifest.lock";
772 outputFileListPaths = ( 762 outputFileListPaths = (
773 - "${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks-${CONFIGURATION}-output-files.xcfilelist", 763 + );
  764 + outputPaths = (
  765 + "$(DERIVED_FILE_DIR)/Pods-metaCode-metaCodeUITests-checkManifestLockResult.txt",
774 ); 766 );
775 runOnlyForDeploymentPostprocessing = 0; 767 runOnlyForDeploymentPostprocessing = 0;
776 shellPath = /bin/sh; 768 shellPath = /bin/sh;
777 - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks.sh\"\n"; 769 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
778 showEnvVarsInLog = 0; 770 showEnvVarsInLog = 0;
779 }; 771 };
780 C6C54F35208ADFC89DAE5063 /* [CP] Check Pods Manifest.lock */ = { 772 C6C54F35208ADFC89DAE5063 /* [CP] Check Pods Manifest.lock */ = {
@@ -799,6 +791,23 @@ @@ -799,6 +791,23 @@
799 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 791 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
800 showEnvVarsInLog = 0; 792 showEnvVarsInLog = 0;
801 }; 793 };
  794 + E0FAE2296315BED785FA507E /* [CP] Embed Pods Frameworks */ = {
  795 + isa = PBXShellScriptBuildPhase;
  796 + buildActionMask = 2147483647;
  797 + files = (
  798 + );
  799 + inputFileListPaths = (
  800 + "${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks-${CONFIGURATION}-input-files.xcfilelist",
  801 + );
  802 + name = "[CP] Embed Pods Frameworks";
  803 + outputFileListPaths = (
  804 + "${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks-${CONFIGURATION}-output-files.xcfilelist",
  805 + );
  806 + runOnlyForDeploymentPostprocessing = 0;
  807 + shellPath = /bin/sh;
  808 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-metaCode/Pods-metaCode-frameworks.sh\"\n";
  809 + showEnvVarsInLog = 0;
  810 + };
802 /* End PBXShellScriptBuildPhase section */ 811 /* End PBXShellScriptBuildPhase section */
803 812
804 /* Begin PBXSourcesBuildPhase section */ 813 /* Begin PBXSourcesBuildPhase section */
@@ -809,6 +818,7 @@ @@ -809,6 +818,7 @@
809 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */, 818 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */,
810 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */, 819 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */,
811 796398942A260C0100D045EB /* AppDelegate.swift in Sources */, 820 796398942A260C0100D045EB /* AppDelegate.swift in Sources */,
  821 + 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */,
812 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */, 822 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */,
813 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */, 823 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */,
814 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */, 824 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */,
@@ -834,6 +844,7 @@ @@ -834,6 +844,7 @@
834 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, 844 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */,
835 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, 845 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */,
836 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */, 846 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */,
  847 + 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */,
837 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */, 848 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */,
838 7CD675472A274167008354C1 /* NewPagedFlowView.m in Sources */, 849 7CD675472A274167008354C1 /* NewPagedFlowView.m in Sources */,
839 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */, 850 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */,
@@ -843,11 +854,12 @@ @@ -843,11 +854,12 @@
843 79BDDCBE2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift in Sources */, 854 79BDDCBE2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift in Sources */,
844 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */, 855 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */,
845 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */, 856 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */,
  857 + 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */,
846 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */, 858 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */,
847 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */, 859 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */,
848 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */, 860 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */,
849 790D01852A2D89E100C5978D /* UIColor+CNHexColor.swift in Sources */, 861 790D01852A2D89E100C5978D /* UIColor+CNHexColor.swift in Sources */,
850 - 79396EED2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift in Sources */, 862 + 79396EED2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift in Sources */,
851 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */, 863 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */,
852 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */, 864 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */,
853 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, 865 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */,
@@ -1060,7 +1072,7 @@ @@ -1060,7 +1072,7 @@
1060 "$(inherited)", 1072 "$(inherited)",
1061 "@executable_path/Frameworks", 1073 "@executable_path/Frameworks",
1062 ); 1074 );
1063 - MARKETING_VERSION = 0.9; 1075 + MARKETING_VERSION = 1.0;
1064 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; 1076 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug;
1065 PRODUCT_NAME = "$(TARGET_NAME)"; 1077 PRODUCT_NAME = "$(TARGET_NAME)";
1066 SWIFT_EMIT_LOC_STRINGS = YES; 1078 SWIFT_EMIT_LOC_STRINGS = YES;
@@ -1094,7 +1106,7 @@ @@ -1094,7 +1106,7 @@
1094 "$(inherited)", 1106 "$(inherited)",
1095 "@executable_path/Frameworks", 1107 "@executable_path/Frameworks",
1096 ); 1108 );
1097 - MARKETING_VERSION = 0.9; 1109 + MARKETING_VERSION = 1.0;
1098 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; 1110 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug;
1099 PRODUCT_NAME = "$(TARGET_NAME)"; 1111 PRODUCT_NAME = "$(TARGET_NAME)";
1100 SWIFT_EMIT_LOC_STRINGS = YES; 1112 SWIFT_EMIT_LOC_STRINGS = YES;
metaCode/Classes/Common/Base/CNLiveBaseTabBarViewController.swift
@@ -47,7 +47,7 @@ class CNLiveBaseTabBarViewController: UITabBarController @@ -47,7 +47,7 @@ class CNLiveBaseTabBarViewController: UITabBarController
47 print("获取用户用户数据=====>\(UserInfoManager.shared.userInfo.uid)") 47 print("获取用户用户数据=====>\(UserInfoManager.shared.userInfo.uid)")
48 48
49 //已经弹出过就不用再弹框了 49 //已经弹出过就不用再弹框了
50 - if UserInfoManager.shared.userInfo.show_update != "1" { 50 + if ConfigManager.shared.show_update {
51 CNLiveMineViewModel.requestSystemNews { result, respStatue in 51 CNLiveMineViewModel.requestSystemNews { result, respStatue in
52 if respStatue == .success { 52 if respStatue == .success {
53 UpdataAlertView.showUpdataView(updataModel: result as! UpdateInfoModel) 53 UpdataAlertView.showUpdataView(updataModel: result as! UpdateInfoModel)
metaCode/Classes/Config/CNLiveConfigManager.swift
@@ -7,10 +7,11 @@ @@ -7,10 +7,11 @@
7 7
8 import Foundation 8 import Foundation
9 9
10 -class CNLiveConfigManager : NSObject { 10 +class ConfigManager : NSObject {
11 11
12 - static let shared = CNLiveConfigManager() 12 + static let shared = ConfigManager()
13 13
  14 + public var show_update:Bool = true//可以进行显示更新
14 public var keyboardDisplayHeight : CGFloat = 0 15 public var keyboardDisplayHeight : CGFloat = 0
15 16
16 private override init() { 17 private override init() {
@@ -36,14 +37,14 @@ class CNLiveConfigManager : NSObject { @@ -36,14 +37,14 @@ class CNLiveConfigManager : NSObject {
36 37
37 @objc private func keyboardDidShowNotification(notification : Notification) { 38 @objc private func keyboardDidShowNotification(notification : Notification) {
38 let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue 39 let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue
39 - CNLiveConfigManager.shared.keyboardDisplayHeight = keyboardValue?.cgRectValue.size.height ?? 0 40 + ConfigManager.shared.keyboardDisplayHeight = keyboardValue?.cgRectValue.size.height ?? 0
40 } 41 }
41 @objc private func keyboardDidChangeFrameNotification(notification : Notification) { 42 @objc private func keyboardDidChangeFrameNotification(notification : Notification) {
42 let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue 43 let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue
43 - CNLiveConfigManager.shared.keyboardDisplayHeight = keyboardValue?.cgRectValue.size.height ?? 0 44 + ConfigManager.shared.keyboardDisplayHeight = keyboardValue?.cgRectValue.size.height ?? 0
44 } 45 }
45 @objc private func keyboardDidHideNotification(notification : Notification) { 46 @objc private func keyboardDidHideNotification(notification : Notification) {
46 - CNLiveConfigManager.shared.keyboardDisplayHeight = 0 47 + ConfigManager.shared.keyboardDisplayHeight = 0
47 } 48 }
48 49
49 50
metaCode/Classes/Config/CNLiveConfigUserInfo.swift
@@ -38,7 +38,6 @@ class UserInfoModel: BaseModel { @@ -38,7 +38,6 @@ class UserInfoModel: BaseModel {
38 var wxUid:String = "" 38 var wxUid:String = ""
39 var access_token:String = "" 39 var access_token:String = ""
40 var expires_in:String = ""//过期时间 40 var expires_in:String = ""//过期时间
41 - var show_update:String = ""//是否显示更新了  
42 41
43 override func mapping(mapper: HelpingMapper) { 42 override func mapping(mapper: HelpingMapper) {
44 43
metaCode/Classes/Extensions/UIButton+CNLiveExtension.swift
@@ -7,6 +7,13 @@ @@ -7,6 +7,13 @@
7 7
8 import Foundation 8 import Foundation
9 9
  10 +enum ButtonImageAndTitlePossitionStyle {
  11 + case left
  12 + case right
  13 + case top
  14 + case bottom
  15 +}
  16 +
10 extension UIButton { 17 extension UIButton {
11 18
12 /// 根据图片生成UIButton 19 /// 根据图片生成UIButton
@@ -48,4 +55,31 @@ extension UIButton { @@ -48,4 +55,31 @@ extension UIButton {
48 button.contentHorizontalAlignment = contentHorizontalAlignment; 55 button.contentHorizontalAlignment = contentHorizontalAlignment;
49 return button 56 return button
50 } 57 }
  58 +
  59 +
  60 + /// 设置图片文字方向并设置间隔
  61 + /// - Parameters:
  62 + /// - padding: 间隔
  63 + /// - style: 图片所在位置
  64 + func setupButtonImageAndTitlePossitionWith(padding: CGFloat, style: ButtonImageAndTitlePossitionStyle){
  65 + let imageRect: CGRect = self.imageView?.frame ?? CGRect.init()
  66 + let titleRect: CGRect = self.titleLabel?.frame ?? CGRect.init()
  67 + let selfWidth: CGFloat = self.frame.size.width
  68 + let selfHeight: CGFloat = self.frame.size.height
  69 + let totalHeight = titleRect.size.height + padding + imageRect.size.height
  70 + switch style {
  71 + case .left:
  72 + self.titleEdgeInsets = UIEdgeInsets(top: 0, left: padding / 2, bottom: 0, right: -padding / 2)
  73 + self.imageEdgeInsets = UIEdgeInsets(top: 0, left: -padding / 2, bottom: 0, right: padding / 2)
  74 + case .right:
  75 + self.titleEdgeInsets = UIEdgeInsets(top: 0, left: -(imageRect.size.width + padding/2), bottom: 0, right: (imageRect.size.width + padding/2))
  76 + self.imageEdgeInsets = UIEdgeInsets(top: 0, left: (titleRect.size.width + padding / 2), bottom: 0, right: -(titleRect.size.width + padding/2))
  77 + case .top :
  78 + self.titleEdgeInsets = UIEdgeInsets(top: ((selfHeight - totalHeight) / 2 + imageRect.size.height + padding - titleRect.origin.y), left: (selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2, bottom: -((selfHeight - totalHeight) / 2 + imageRect.size.height + padding - titleRect.origin.y), right: -(selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2)
  79 + self.imageEdgeInsets = UIEdgeInsets(top: ((selfHeight - totalHeight) / 2 - imageRect.origin.y), left: (selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2), bottom: -((selfHeight - totalHeight) / 2 - imageRect.origin.y), right: -(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2))
  80 + case .bottom:
  81 + self.titleEdgeInsets = UIEdgeInsets(top: ((selfHeight - totalHeight) / 2 - titleRect.origin.y), left: (selfWidth / 2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2, bottom: -((selfHeight - totalHeight) / 2 - titleRect.origin.y), right: -(selfWidth/2 - titleRect.origin.x - titleRect.size.width / 2) - (selfWidth - titleRect.size.width) / 2)
  82 + self.imageEdgeInsets = UIEdgeInsets(top: ((selfHeight - totalHeight) / 2 + titleRect.size.height + padding - imageRect.origin.y), left: (selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2), bottom: -((selfHeight - totalHeight) / 2 + titleRect.size.height + padding - imageRect.origin.y), right: -(selfWidth / 2 - imageRect.origin.x - imageRect.size.width / 2))
  83 + }
  84 + }
51 } 85 }
metaCode/Classes/Extensions/UIImage+CNLiveColorImage.swift
@@ -8,6 +8,12 @@ @@ -8,6 +8,12 @@
8 import Foundation 8 import Foundation
9 9
10 extension UIImage { 10 extension UIImage {
  11 +
  12 + /// 生成纯色图片
  13 + /// - Parameters:
  14 + /// - color: 颜色
  15 + /// - size: 大小
  16 + /// - Returns: 返回image
11 class func imageWithColor(color: UIColor, size: CGSize) -> UIImage { 17 class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
12 let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 18 let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
13 UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) 19 UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
@@ -18,4 +24,29 @@ extension UIImage { @@ -18,4 +24,29 @@ extension UIImage {
18 UIGraphicsEndImageContext() 24 UIGraphicsEndImageContext()
19 return image! 25 return image!
20 } 26 }
  27 +
  28 + /// 图片进行压缩
  29 + /// - Returns: 返回data
  30 + func imageWithZip() -> Data {
  31 + var image_data = jpegData(compressionQuality: 1.0)!
  32 + if image_data.count > 19*1024*1024 {//19M以上
  33 + let dataLength = NSNumber(integerLiteral: image_data.count)
  34 + let limitLenght = NSNumber(integerLiteral: 19*1024*1024)
  35 + var scale = limitLenght.floatValue / dataLength.floatValue
  36 + scale = scale > 0.3 ? 0.3 : scale
  37 + image_data = jpegData(compressionQuality: CGFloat(scale))!
  38 + } else if image_data.count > 10*1024*1024 {//10M<x<=19M
  39 + image_data = jpegData(compressionQuality: 0.3)!
  40 + } else if image_data.count > 1*1024*1024 {//1M<x<=10M
  41 + image_data = jpegData(compressionQuality: 0.7)!
  42 + } else if image_data.count > 512*1024 {//0.5M<x<1M
  43 + image_data = jpegData(compressionQuality: 0.8)!
  44 + } else if image_data.count > 256*1024 {//0.25M-0.5M
  45 + image_data = jpegData(compressionQuality: 0.9)!
  46 + } else {
  47 + //不压缩
  48 + }
  49 + print("压缩图片输出大小:\(CGFloat(image_data.count)/1024.0)kb")
  50 + return image_data
  51 + }
21 } 52 }
metaCode/Classes/Extensions/UIView+CNGradient.swift
@@ -43,4 +43,18 @@ extension UIView { @@ -43,4 +43,18 @@ extension UIView {
43 return gradientLayer 43 return gradientLayer
44 } 44 }
45 } 45 }
  46 +
  47 +
  48 + /// 设置不同角度的圆角剪切
  49 + /// - Parameters:
  50 + /// - conrners: 剪切方向
  51 + /// - radius: 剪切角度
  52 + func addCorner(conrners: UIRectCorner, radius: CGFloat) {
  53 + self.layoutIfNeeded()
  54 + let maskPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: conrners, cornerRadii: CGSize(width: radius, height: radius))
  55 + let maskLayer = CAShapeLayer()
  56 + maskLayer.frame = self.bounds
  57 + maskLayer.path = maskPath.cgPath
  58 + self.layer.mask = maskLayer
  59 + }
46 } 60 }
metaCode/Classes/Extensions/NSObject+CNLiveCurrentVC.swift renamed to metaCode/Classes/Extensions/UIView+CNLiveCurrentVC.swift
@@ -77,7 +77,7 @@ func showMessage(message: String) { @@ -77,7 +77,7 @@ func showMessage(message: String) {
77 let height = message.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font:Font_15_Fit], context: nil).size.height 77 let height = message.boundingRect(with: CGSize(width: width, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font:Font_15_Fit], context: nil).size.height
78 78
79 bgView.bounds = CGRect(x: 0, y: 0, width: width + 20, height: height + 20) 79 bgView.bounds = CGRect(x: 0, y: 0, width: width + 20, height: height + 20)
80 - bgView.layer.position = CGPoint(x: (delegate.window?.bounds.size.width ?? 0) / 2.0, y: ( (delegate.window?.bounds.size.height ?? 0) - CNLiveConfigManager.shared.keyboardDisplayHeight) / 2.0) 80 + bgView.layer.position = CGPoint(x: (delegate.window?.bounds.size.width ?? 0) / 2.0, y: ( (delegate.window?.bounds.size.height ?? 0) - ConfigManager.shared.keyboardDisplayHeight) / 2.0)
81 81
82 remindLab.bounds = CGRect(x: 0, y: 0, width: width, height: height) 82 remindLab.bounds = CGRect(x: 0, y: 0, width: width, height: height)
83 remindLab.layer.position = CGPoint(x: bgView.bounds.size.width / 2, y: bgView.bounds.size.height / 2) 83 remindLab.layer.position = CGPoint(x: bgView.bounds.size.width / 2, y: bgView.bounds.size.height / 2)
@@ -105,7 +105,8 @@ func showLoading(message: String) { @@ -105,7 +105,8 @@ func showLoading(message: String) {
105 hub.mode = .indeterminate 105 hub.mode = .indeterminate
106 hub.animationType = .fade 106 hub.animationType = .fade
107 hub.contentColor = .white 107 hub.contentColor = .white
108 - hub.bezelView.backgroundColor = .black 108 + hub.bezelView.color = .black
  109 + hub.bezelView.style = .solidColor
109 hub.label.textColor = .white 110 hub.label.textColor = .white
110 if message.isNotBlank() { 111 if message.isNotBlank() {
111 hub.label.text = message 112 hub.label.text = message
metaCode/Classes/Main/LoginPage/Controller/CNLiveLoginViewController.swift
@@ -69,7 +69,6 @@ class CNLiveLoginViewController : CNLiveBaseViewController, UITextViewDelegate { @@ -69,7 +69,6 @@ class CNLiveLoginViewController : CNLiveBaseViewController, UITextViewDelegate {
69 69
70 70
71 override func viewDidAppear(_ animated: Bool) { 71 override func viewDidAppear(_ animated: Bool) {
72 -  
73 } 72 }
74 73
75 override func viewDidLoad() { 74 override func viewDidLoad() {
metaCode/Classes/Main/MinePage/Controller/CNLiveMineEarnListViewController.swift 0 → 100644
  1 +//
  2 +// CNLiveMineEarnListViewController.swift
  3 +// metaCode
  4 +//
  5 +// Created by open on 2023/6/28.
  6 +//
  7 +
  8 +import Foundation
  9 +import JXPagingView
  10 +
  11 +enum MineEarnShowType {
  12 + case record //积分记录
  13 + case balance//余额记录
  14 +}
  15 +
  16 +typealias CallBack = (_ scrollView: UIScrollView) -> Void
  17 +class CNLiveMineEarnListViewController: CNLiveBaseViewController, JXPagingViewListViewDelegate, UITableViewDelegate, UITableViewDataSource {
  18 +
  19 +
  20 + let kMIneBodyFiveViewCellIdentifier = "kMIneBodyFiveViewCellIdentifier"
  21 + lazy var tableView: UITableView = {
  22 + let tableView = UITableView.init(frame: .zero, style: .plain)
  23 + tableView.delegate = self
  24 + tableView.dataSource = self
  25 + tableView.backgroundColor = .clear
  26 + tableView.separatorStyle = .none
  27 + tableView.showsVerticalScrollIndicator = false
  28 + tableView.showsHorizontalScrollIndicator = false
  29 + tableView.register(MIneBodyFiveViewCell.self, forCellReuseIdentifier: kMIneBodyFiveViewCellIdentifier)
  30 + let footerView = UIView(frame: CGRect(x: 0, y: 0, width: KSreenWidth - 40, height: 10))
  31 + footerView.clipsToBounds = true
  32 + footerView.backgroundColor = .white
  33 + footerView.addCorner(conrners: [.bottomLeft,.bottomRight], radius: 5)
  34 + tableView.tableFooterView = footerView
  35 + return tableView
  36 + }()
  37 +
  38 + var _callBack: CallBack!
  39 + var _show_type : MineEarnShowType!
  40 + init(show_type: MineEarnShowType) {
  41 + super.init(nibName: nil, bundle: nil)
  42 + _show_type = show_type
  43 + }
  44 +
  45 + required init?(coder: NSCoder) {
  46 + fatalError("init(coder:) has not been implemented")
  47 + }
  48 +
  49 + override func viewDidLoad() {
  50 + super.viewDidLoad()
  51 +
  52 + view.addSubview(tableView)
  53 + tableView.snp.makeConstraints { make in
  54 + make.top.bottom.equalToSuperview()
  55 + make.left.equalToSuperview().offset(20)
  56 + make.right.equalToSuperview().offset(-20)
  57 + }
  58 + }
  59 +}
  60 +extension CNLiveMineEarnListViewController {
  61 +
  62 + func numberOfSections(in tableView: UITableView) -> Int {
  63 + return 1
  64 + }
  65 +
  66 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  67 + return 6
  68 + }
  69 +
  70 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  71 + guard let cell = tableView.dequeueReusableCell(withIdentifier: kMIneBodyFiveViewCellIdentifier) as? MIneBodyFiveViewCell else {
  72 + return MIneBodyFiveViewCell()
  73 + }
  74 + cell.setupWithDataSource(isLast: indexPath.row == 5)
  75 + return cell
  76 + }
  77 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  78 + return 70
  79 + }
  80 +
  81 + func scrollViewDidScroll(_ scrollView: UIScrollView) {
  82 + _callBack(scrollView)
  83 + }
  84 +}
  85 +
  86 +extension CNLiveMineEarnListViewController {
  87 +
  88 + func listView() -> UIView {
  89 + return view
  90 + }
  91 +
  92 + func listScrollView() -> UIScrollView {
  93 + return tableView
  94 + }
  95 +
  96 + func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> ()) {
  97 + _callBack = callback
  98 + }
  99 +}
metaCode/Classes/Main/MinePage/Controller/CNLiveMineEarnViewController.swift 0 → 100644
  1 +//
  2 +// CNLiveMineEarnViewController.swift
  3 +// metaCode
  4 +//
  5 +// Created by open on 2023/6/28.
  6 +//
  7 +
  8 +import Foundation
  9 +import JXSegmentedView
  10 +import JXPagingView
  11 +
  12 +let kCNLiveSectionTitleHeight = 70//标题显示
  13 +let kCNLiveSectionHeaderHeight = 200//头视图高度
  14 +
  15 +extension JXPagingListContainerView: JXSegmentedViewListContainer {}
  16 +
  17 +
  18 +class CNLiveMineEarnViewController: CNLiveBaseViewController, JXPagingViewDelegate {
  19 +
  20 + func tableHeaderViewHeight(in pagingView: JXPagingView) -> Int {
  21 + return Int(kCNLiveSectionHeaderHeight)
  22 + }
  23 +
  24 + func tableHeaderView(in pagingView: JXPagingView) -> UIView {
  25 + return headerView
  26 + }
  27 +
  28 + func heightForPinSectionHeader(in pagingView: JXPagingView) -> Int {
  29 + return Int(kCNLiveSectionTitleHeight)
  30 + }
  31 +
  32 + func viewForPinSectionHeader(in pagingView: JXPagingView) -> UIView {
  33 + return categoryView
  34 + }
  35 +
  36 + func numberOfLists(in pagingView: JXPagingView) -> Int {
  37 + return 2
  38 + }
  39 +
  40 + func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> JXPagingViewListViewDelegate {
  41 + return (viewControllers.object(at: index) as! JXPagingViewListViewDelegate)
  42 + }
  43 +
  44 +
  45 + lazy var viewControllers: NSMutableArray = {
  46 + let viewControllers = NSMutableArray.init()
  47 + viewControllers.add(CNLiveMineEarnListViewController.init(show_type: .record))
  48 + viewControllers.add(CNLiveMineEarnListViewController.init(show_type: .balance))
  49 + return viewControllers
  50 + }()
  51 +
  52 + lazy var dataSource: JXSegmentedTitleDataSource = {
  53 + let dataSource = JXSegmentedTitleDataSource()
  54 + dataSource.titles = ["积分记录","元码余额记录"]
  55 + dataSource.isTitleMaskEnabled = true
  56 + dataSource.itemWidth = (KSreenWidth - 105)/2
  57 + dataSource.itemSpacing = 0
  58 + dataSource.titleNormalFont = Font_16_Fit
  59 + dataSource.titleSelectedFont = Font_16_Fit
  60 + dataSource.titleNormalColor = HexColor("#999999")!
  61 + dataSource.titleSelectedColor = HexColor("#333333")!
  62 + return dataSource
  63 + }()
  64 +
  65 + lazy var pagingView: JXPagingView = {
  66 + let pagingView = JXPagingView.init(delegate: self, listContainerType: .scrollView)
  67 + pagingView.frame = CGRectMake(0, KNavigationHeight, KSreenWidth, KSreenHeight - get_system_nav_height() - get_system_tabbar_ui_offsetHeight())
  68 + pagingView.backgroundColor = .clear
  69 + pagingView.mainTableView.backgroundColor = .clear
  70 + pagingView.pinSectionHeaderVerticalOffset = 0
  71 + pagingView.automaticallyDisplayListVerticalScrollIndicator = false
  72 + pagingView.listContainerView.isCategoryNestPagingEnabled = true
  73 + pagingView.listContainerView.scrollView.panGestureRecognizer.require(toFail: (self.navigationController?.interactivePopGestureRecognizer)!)
  74 + pagingView.mainTableView.panGestureRecognizer.require(toFail: (self.navigationController?.interactivePopGestureRecognizer)!)
  75 + categoryView.listContainer = pagingView.listContainerView
  76 + return pagingView
  77 + }()
  78 +
  79 + lazy var categoryView: JXSegmentedView = {
  80 + let categoryView = JXSegmentedView.init(frame: CGRectMake(20, KNavigationHeight, KSreenWidth - 40, CGFloat(kCNLiveSectionTitleHeight)))
  81 + categoryView.dataSource = dataSource
  82 + categoryView.collectionView.backgroundColor = .clear
  83 + categoryView.backgroundColor = .clear
  84 +
  85 + let lineView = JXSegmentedIndicatorBackgroundView.init()
  86 + lineView.indicatorColor = .white
  87 + lineView.indicatorHeight = 40
  88 + lineView.indicatorWidthIncrement = 0
  89 + lineView.indicatorCornerRadius = 5
  90 + categoryView.indicators = [lineView]
  91 +
  92 + let radiusView = UIView(frame: CGRect(x: 20, y: 0, width: Int(KSreenWidth) - 40, height: kCNLiveSectionTitleHeight))
  93 + radiusView.backgroundColor = .clear
  94 + radiusView.addCorner(conrners: [.topLeft,.topRight], radius: 10)
  95 + radiusView.layer.borderColor = UIColor.white.cgColor
  96 + radiusView.layer.borderWidth = 10
  97 + categoryView.insertSubview(radiusView, belowSubview: categoryView.collectionView)
  98 +
  99 + return categoryView
  100 + }()
  101 +
  102 + lazy var headerView: MineEarnHeaderView = {
  103 + let headerView = MineEarnHeaderView.init(frame: CGRectMake(0, 0, KSreenWidth, CGFloat(kCNLiveSectionHeaderHeight)))
  104 + headerView.backgroundColor = .clear
  105 + return headerView
  106 + }()
  107 +
  108 + var _index : Int!
  109 + init(index: Int) {
  110 + super.init(nibName: nil, bundle: nil)
  111 + _index = index
  112 + }
  113 +
  114 + required init?(coder: NSCoder) {
  115 + fatalError("init(coder:) has not been implemented")
  116 + }
  117 +
  118 + override func viewDidLoad() {
  119 + super.viewDidLoad()
  120 + navigationBarHidden = false
  121 + titleName = "我的收益"
  122 +
  123 + view.addSubview(pagingView)
  124 + categoryView.selectItemAt(index: _index)
  125 + pagingView.listContainerView.didClickSelectedItem(at: _index)
  126 + }
  127 +}
  128 +
  129 +
  130 +
metaCode/Classes/Main/MinePage/Controller/CNLiveMineMessageViewController.swift
@@ -65,5 +65,7 @@ extension CNLiveMineMessageViewController { @@ -65,5 +65,7 @@ extension CNLiveMineMessageViewController {
65 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 65 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
66 return 100 + _listModel.textHeight 66 return 100 + _listModel.textHeight
67 } 67 }
68 - 68 + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  69 + showMessage(message: "跳转H5详情界面")
  70 + }
69 } 71 }
metaCode/Classes/Main/MinePage/Controller/CNLiveMineNickViewController.swift
@@ -91,6 +91,7 @@ class CNLiveMineNickViewController: CNLiveBaseViewController, UITextFieldDelegat @@ -91,6 +91,7 @@ class CNLiveMineNickViewController: CNLiveBaseViewController, UITextFieldDelegat
91 let userInfo = UserInfoManager.shared.userInfo 91 let userInfo = UserInfoManager.shared.userInfo
92 userInfo.nickName = self!.nickField.text ?? "" 92 userInfo.nickName = self!.nickField.text ?? ""
93 UserInfoManager.cacheUserInfo(userInfo: userInfo) 93 UserInfoManager.cacheUserInfo(userInfo: userInfo)
  94 + self?.navigationController?.popViewController(animated: true)
94 } 95 }
95 }) 96 })
96 } 97 }
metaCode/Classes/Main/MinePage/Controller/CNLiveMineQuestViewController.swift 0 → 100644
  1 +//
  2 +// CNLiveMineQuestViewController.swift
  3 +// metaCode
  4 +//
  5 +// Created by open on 2023/6/26.
  6 +//
  7 +
  8 +import Foundation
  9 +
  10 +class CNLiveMineQuestViewController: CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource {
  11 +
  12 + let kMineBodyFourViewCellIdentifier = "kMineBodyFourViewCellIdentifier"
  13 + lazy var tableView: UITableView = {
  14 + let tableView = UITableView.init(frame: .zero, style: .plain)
  15 + tableView.delegate = self
  16 + tableView.dataSource = self
  17 + tableView.backgroundColor = .clear
  18 + tableView.separatorStyle = .none
  19 + tableView.register(MineBodyFourViewCell.self, forCellReuseIdentifier: kMineBodyFourViewCellIdentifier)
  20 + tableView.tableHeaderView = MineQuestHeaderView.init(frame: CGRectMake(0, 10, KSreenWidth, 150))
  21 + let footerView = UIView(frame: CGRect(x: 0, y: 0, width: KSreenWidth - 40, height: 10))
  22 + footerView.clipsToBounds = true
  23 + footerView.backgroundColor = .white
  24 + footerView.addCorner(conrners: [.bottomLeft,.bottomRight], radius: 5)
  25 + tableView.tableFooterView = footerView
  26 + return tableView
  27 + }()
  28 +
  29 + lazy var headerView: UIView = {
  30 + let headerView = UIView.init(frame: CGRectMake(0, 0, KSreenWidth - 40, 60))
  31 + headerView.backgroundColor = .white
  32 + headerView.addCorner(conrners: [.topLeft,.topRight], radius: 10)
  33 + headerView.layer.masksToBounds = true
  34 + let nameLabel = UILabel.init()
  35 + nameLabel.text = "日常任务"
  36 + nameLabel.textColor = .black
  37 + nameLabel.textAlignment = .left
  38 + nameLabel.font = BoldFont_19_Fit
  39 + headerView.addSubview(nameLabel)
  40 + nameLabel.snp.makeConstraints { make in
  41 + make.centerY.equalToSuperview()
  42 + make.left.equalToSuperview().offset(10)
  43 + }
  44 + let lineLabel = UILabel.init()
  45 + lineLabel.backgroundColor = HexColor("#E5E5E5")
  46 + headerView.addSubview(lineLabel)
  47 + lineLabel.snp.makeConstraints { make in
  48 + make.centerX.equalToSuperview()
  49 + make.bottom.equalToSuperview().offset(-0.5)
  50 + make.left.equalToSuperview().offset(15)
  51 + make.right.equalToSuperview().offset(-15)
  52 + make.height.equalTo(0.5)
  53 + }
  54 + return headerView
  55 + }()
  56 +
  57 + lazy var dataArray: NSMutableArray = {
  58 + let dataArray = NSMutableArray.init()
  59 + dataArray.add(["icon":"temp_quest_list_img01","name":"分享目击者视频","desc":"积分值+100 完成0/10"])
  60 + dataArray.add(["icon":"temp_quest_list_img02","name":"分享目击者视频","desc":"积分值+100 完成0/10"])
  61 + dataArray.add(["icon":"temp_quest_list_img03","name":"分享目击者视频","desc":"积分值+100 完成0/10"])
  62 + dataArray.add(["icon":"temp_quest_list_img04","name":"分享目击者视频","desc":"积分值+100 完成0/10"])
  63 + return dataArray
  64 + }()
  65 +
  66 +
  67 + override func viewDidLoad() {
  68 + super.viewDidLoad()
  69 + navigationBarHidden = false
  70 + titleName = "任务中心"
  71 +
  72 + view.addSubview(tableView)
  73 + tableView.snp.makeConstraints { make in
  74 + make.top.equalToSuperview().offset(KNavigationHeight)
  75 + make.bottom.equalToSuperview().offset(KTabBarHeight - 49)
  76 + make.left.equalToSuperview().offset(20)
  77 + make.right.equalToSuperview().offset(-20)
  78 + }
  79 + }
  80 +
  81 +}
  82 +
  83 +extension CNLiveMineQuestViewController {
  84 + func numberOfSections(in tableView: UITableView) -> Int {
  85 + return 1
  86 + }
  87 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  88 + return dataArray.count
  89 + }
  90 + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  91 + guard let cell = tableView.dequeueReusableCell(withIdentifier: kMineBodyFourViewCellIdentifier) as? MineBodyFourViewCell else {
  92 + return MineBodyFourViewCell()
  93 + }
  94 + cell.setupWithData(dict: dataArray[indexPath.row] as! NSDictionary)
  95 + return cell
  96 + }
  97 + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
  98 + return 70.0
  99 + }
  100 +
  101 + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
  102 + return 60.0
  103 + }
  104 +
  105 + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
  106 + return headerView
  107 + }
  108 +
  109 +
  110 +}
metaCode/Classes/Main/MinePage/Controller/CNLiveMineViewController.swift
@@ -12,6 +12,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, @@ -12,6 +12,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
12 12
13 let kCNLiveMineOneViewCellIdentifier = "kCNLiveMineOneViewCellIdentifier" 13 let kCNLiveMineOneViewCellIdentifier = "kCNLiveMineOneViewCellIdentifier"
14 let kCNLiveMineTwoViewCellIdentifier = "kCNLiveMineTwoViewCellIdentifier" 14 let kCNLiveMineTwoViewCellIdentifier = "kCNLiveMineTwoViewCellIdentifier"
  15 + let kMineBodyThreeViewCellIdentifier = "kMineBodyThreeViewCellIdentifier"
15 lazy var tableView : UITableView = { 16 lazy var tableView : UITableView = {
16 let tableView = UITableView(frame: .zero, style: .grouped) 17 let tableView = UITableView(frame: .zero, style: .grouped)
17 tableView.dataSource = self 18 tableView.dataSource = self
@@ -21,6 +22,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, @@ -21,6 +22,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
21 tableView.separatorStyle = .none 22 tableView.separatorStyle = .none
22 tableView.register(MineBodyOneListViewCell.self, forCellReuseIdentifier: kCNLiveMineOneViewCellIdentifier) 23 tableView.register(MineBodyOneListViewCell.self, forCellReuseIdentifier: kCNLiveMineOneViewCellIdentifier)
23 tableView.register(MineBodyTwoListViewCell.self, forCellReuseIdentifier: kCNLiveMineTwoViewCellIdentifier) 24 tableView.register(MineBodyTwoListViewCell.self, forCellReuseIdentifier: kCNLiveMineTwoViewCellIdentifier)
  25 + tableView.register(MineBodyThreeViewCell.self, forCellReuseIdentifier: kMineBodyThreeViewCellIdentifier)
24 return tableView 26 return tableView
25 }() 27 }()
26 28
@@ -34,13 +36,14 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, @@ -34,13 +36,14 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate,
34 36
35 lazy var dataArray: NSMutableArray = { 37 lazy var dataArray: NSMutableArray = {
36 let dataArray = NSMutableArray() 38 let dataArray = NSMutableArray()
37 - let array00 : [Dictionary] = [["name":"我的身份","icon":"mine_header_icon_identity"]]  
38 - dataArray.add(array00)  
39 - let array01 : [Dictionary] = [["name":"添加身份","icon":"mine_list_icon_add_identity"]] 39 + dataArray.add([""])
  40 + let array01 : [Dictionary] = [["name":"我的身份","icon":"mine_header_icon_identity"]]
40 dataArray.add(array01) 41 dataArray.add(array01)
41 - let array02 : [Dictionary] = [["name":"帮助与反馈","icon":"mine_list_icon_help_feedback"],  
42 - ["name":"更多设置","icon":"mine_list_icon_set_more"]] 42 + let array02 : [Dictionary] = [["name":"添加身份","icon":"mine_list_icon_add_identity"]]
43 dataArray.add(array02) 43 dataArray.add(array02)
  44 + let array03 : [Dictionary] = [["name":"帮助与反馈","icon":"mine_list_icon_help_feedback"],
  45 + ["name":"更多设置","icon":"mine_list_icon_set_more"]]
  46 + dataArray.add(array03)
44 return dataArray 47 return dataArray
45 }() 48 }()
46 49
@@ -92,8 +95,12 @@ extension CNLiveMineViewController { @@ -92,8 +95,12 @@ extension CNLiveMineViewController {
92 } 95 }
93 96
94 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 97 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
95 -  
96 if indexPath.section == 0 { 98 if indexPath.section == 0 {
  99 + let cell = tableView.dequeueReusableCell(withIdentifier: kMineBodyThreeViewCellIdentifier) as! MineBodyThreeViewCell
  100 +
  101 + return cell
  102 + }
  103 + if indexPath.section == 1 {
97 let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveMineOneViewCellIdentifier) as! MineBodyOneListViewCell 104 let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveMineOneViewCellIdentifier) as! MineBodyOneListViewCell
98 105
99 return cell 106 return cell
@@ -108,19 +115,28 @@ extension CNLiveMineViewController { @@ -108,19 +115,28 @@ extension CNLiveMineViewController {
108 115
109 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 116 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
110 if indexPath.section == 0 { 117 if indexPath.section == 0 {
  118 + return 100
  119 + }
  120 + if indexPath.section == 1 {
111 return 120 121 return 120
112 } 122 }
113 return 60 123 return 60
114 } 124 }
115 125
116 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 126 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  127 + if indexPath.section == 0 {
  128 + self.navigationController?.pushViewController(CNLiveMineQuestViewController.init(), animated: true)
  129 + }
117 if indexPath.section == 1 { 130 if indexPath.section == 1 {
  131 + self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true)
  132 + }
  133 + if indexPath.section == 2 {
118 self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .add), animated: true) 134 self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .add), animated: true)
119 } 135 }
120 - if indexPath.section == 2 && indexPath.row == 0 { 136 + if indexPath.section == 3 && indexPath.row == 0 {
121 self.navigationController?.pushViewController(CNLiveHelpFeedBackViewController.init(), animated: true) 137 self.navigationController?.pushViewController(CNLiveHelpFeedBackViewController.init(), animated: true)
122 } 138 }
123 - if indexPath.section == 2 && indexPath.row == 1 { 139 + if indexPath.section == 3 && indexPath.row == 1 {
124 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true) 140 self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true)
125 } 141 }
126 } 142 }
@@ -143,9 +159,10 @@ extension CNLiveMineViewController { @@ -143,9 +159,10 @@ extension CNLiveMineViewController {
143 159
144 func scrollViewDidScroll(_ scrollView: UIScrollView) { 160 func scrollViewDidScroll(_ scrollView: UIScrollView) {
145 let offsetY = scrollView.contentOffset.y 161 let offsetY = scrollView.contentOffset.y
146 - mainView.height = offsetY < 0 ? (KSreenHeight * 0.4) + abs(offsetY) : KSreenHeight * 0.4; 162 + mainView.snp.updateConstraints { make in
  163 + make.left.top.right.equalToSuperview()
  164 + make.height.equalTo(offsetY < 0 ? (KSreenHeight * 0.4) + abs(offsetY) : KSreenHeight * 0.4)
  165 + }
147 } 166 }
148 -  
149 -  
150 } 167 }
151 168
metaCode/Classes/Main/MinePage/Controller/CNLiveTypeFeedBackViewController.swift
@@ -48,8 +48,9 @@ class CNLiveTypeFeedBackViewController : CNLiveBaseViewController, UITableViewDe @@ -48,8 +48,9 @@ class CNLiveTypeFeedBackViewController : CNLiveBaseViewController, UITableViewDe
48 dataArray.add(["icon":"","name":"个人信息保护政策"]) 48 dataArray.add(["icon":"","name":"个人信息保护政策"])
49 } 49 }
50 if _show_type == .manager { 50 if _show_type == .manager {
51 - dataArray.add(["icon":"mine_list_sub_set_poistion","name":"位置","desc":"用于判断一些内容"])  
52 - dataArray.add(["icon":"mine_list_sub_set_poistion","name":"位置","desc":"用于判断一些内容"]) 51 + dataArray.add(["icon":"mine_list_sub_set_poistion","name":"位置","desc":"用于判断您的所在位置"])
  52 + dataArray.add(["icon":"mine_list_sub_set_photo","name":"相册","desc":"用于上传反馈问题截图等业务流程"])
  53 + dataArray.add(["icon":"mine_list_sub_set_note","name":"通知","desc":"用于及时接收消息用于账户安全等风险控制"])
53 } 54 }
54 if _show_type == .about { 55 if _show_type == .about {
55 dataArray.add(["icon":"","name":"版本更新","more":"当前已经是最新版本"]) 56 dataArray.add(["icon":"","name":"版本更新","more":"当前已经是最新版本"])
metaCode/Classes/Main/MinePage/View/CNLiveMineBodyListView.swift
@@ -41,8 +41,8 @@ class MineBodyOneListViewCell : UITableViewCell { @@ -41,8 +41,8 @@ class MineBodyOneListViewCell : UITableViewCell {
41 lookBtn.setTitleColor(.white, for: .normal) 41 lookBtn.setTitleColor(.white, for: .normal)
42 lookBtn.titleLabel?.font = BoldFont_14 42 lookBtn.titleLabel?.font = BoldFont_14
43 lookBtn.layer.masksToBounds = true 43 lookBtn.layer.masksToBounds = true
  44 + lookBtn.isUserInteractionEnabled = false
44 lookBtn.layer.cornerRadius = 15 45 lookBtn.layer.cornerRadius = 15
45 - lookBtn.addTarget(self, action: #selector(pushLookAction), for: .touchUpInside)  
46 return lookBtn 46 return lookBtn
47 }() 47 }()
48 48
@@ -69,10 +69,6 @@ class MineBodyOneListViewCell : UITableViewCell { @@ -69,10 +69,6 @@ class MineBodyOneListViewCell : UITableViewCell {
69 setupConstraints() 69 setupConstraints()
70 } 70 }
71 71
72 - @objc func pushLookAction() {  
73 - currentViewController()?.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true)  
74 - }  
75 -  
76 required init?(coder: NSCoder) { 72 required init?(coder: NSCoder) {
77 fatalError("init(coder:) has not been implemented") 73 fatalError("init(coder:) has not been implemented")
78 } 74 }
@@ -132,9 +128,10 @@ class MineBodyTwoListViewCell : UITableViewCell { @@ -132,9 +128,10 @@ class MineBodyTwoListViewCell : UITableViewCell {
132 lazy var avatarView: UIImageView = { 128 lazy var avatarView: UIImageView = {
133 let avatarView = UIImageView.init() 129 let avatarView = UIImageView.init()
134 avatarView.backgroundColor = .clear 130 avatarView.backgroundColor = .clear
135 - avatarView.contentMode = .scaleToFill 131 + avatarView.contentMode = .scaleAspectFill
136 avatarView.layer.cornerRadius = 30 132 avatarView.layer.cornerRadius = 30
137 avatarView.layer.masksToBounds = true 133 avatarView.layer.masksToBounds = true
  134 + avatarView.clipsToBounds = true
138 avatarView.isHidden = true 135 avatarView.isHidden = true
139 return avatarView 136 return avatarView
140 }() 137 }()
@@ -262,3 +259,359 @@ class MineBodyTwoListViewCell : UITableViewCell { @@ -262,3 +259,359 @@ class MineBodyTwoListViewCell : UITableViewCell {
262 fatalError("init(coder:) has not been implemented") 259 fatalError("init(coder:) has not been implemented")
263 } 260 }
264 } 261 }
  262 +
  263 +
  264 +class MineBodyThreeViewCell: UITableViewCell {
  265 +
  266 + lazy var mainView: UIImageView = {
  267 + let mainView = UIImageView.init()
  268 + mainView.backgroundColor = .clear
  269 + mainView.contentMode = .scaleToFill
  270 + mainView.image = UIImage(named: "mine_header_point_back")
  271 + return mainView
  272 + }()
  273 +
  274 + lazy var moreView : UIImageView = {
  275 + let moreView = UIImageView.init()
  276 + moreView.image = UIImage(named: "mine_header_message_glod_more")
  277 + moreView.contentMode = .scaleToFill
  278 + moreView.backgroundColor = .clear
  279 + return moreView
  280 + }()
  281 +
  282 + lazy var pointButton: UIButton = {
  283 + let pointButton = UIButton.init(type: .custom)
  284 + pointButton.backgroundColor = .clear
  285 + pointButton.setTitle(" 去赚积分", for: .normal)
  286 + pointButton.titleLabel?.font = Font_12
  287 + pointButton.imageView?.contentMode = .scaleToFill
  288 + pointButton.setTitleColor(HexColor("#FFE4C4"), for: .normal)
  289 + pointButton.setImage(UIImage(named: "mine_header_point_gold_coin"), for: .normal)
  290 + return pointButton
  291 + }()
  292 +
  293 + lazy var questLabel: UILabel = {
  294 + let questLabel = UILabel.init()
  295 + questLabel.text = "做任务领积分"
  296 + questLabel.font = BoldFont_19_Fit
  297 + questLabel.textAlignment = .left
  298 + questLabel.textColor = HexColor("#FFE4C4")
  299 + return questLabel
  300 + }()
  301 +
  302 + lazy var line_left_label: UILabel = {
  303 + let lineLabel = UILabel.init()
  304 + lineLabel.backgroundColor = HexColor("#FFDAB0")
  305 + return lineLabel
  306 + }()
  307 +
  308 + lazy var line_right_label: UILabel = {
  309 + let rightLabel = UILabel.init()
  310 + rightLabel.backgroundColor = HexColor("#FFDAB0")
  311 + return rightLabel
  312 + }()
  313 +
  314 + lazy var balanceLabel: UILabel = {
  315 + let balanceLabel = UILabel.init()
  316 + balanceLabel.text = "元码余额(元)"
  317 + balanceLabel.textColor = HexColor("#FFE4C4")
  318 + balanceLabel.font = Font_12
  319 + balanceLabel.textAlignment = .left
  320 + return balanceLabel
  321 + }()
  322 +
  323 + lazy var balanceNumberLabel: UILabel = {
  324 + let balanceNumberLabel = UILabel.init()
  325 + balanceNumberLabel.text = "2130"
  326 + balanceNumberLabel.font = BoldFont_19_Fit
  327 + balanceNumberLabel.textAlignment = .left
  328 + balanceNumberLabel.textColor = HexColor("#FFE4C4")
  329 + return balanceNumberLabel
  330 + }()
  331 +
  332 + lazy var pointLabel: UILabel = {
  333 + let pointLabel = UILabel.init()
  334 + pointLabel.text = "积分"
  335 + pointLabel.textColor = HexColor("#FFE4C4")
  336 + pointLabel.font = Font_12
  337 + pointLabel.textAlignment = .left
  338 + return pointLabel
  339 + }()
  340 +
  341 + lazy var pointNumberLabel: UILabel = {
  342 + let pointNumberLabel = UILabel.init()
  343 + pointNumberLabel.text = "10.28W"
  344 + pointNumberLabel.font = BoldFont_19_Fit
  345 + pointNumberLabel.textAlignment = .left
  346 + pointNumberLabel.textColor = HexColor("#FFE4C4")
  347 + return pointNumberLabel
  348 + }()
  349 +
  350 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  351 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  352 + self.selectionStyle = .none
  353 + self.backgroundColor = .clear
  354 +
  355 + addSubview(mainView)
  356 + mainView.addSubview(moreView)
  357 + mainView.addSubview(pointButton)
  358 + mainView.addSubview(questLabel)
  359 +
  360 + mainView.addSubview(line_left_label)
  361 + mainView.addSubview(balanceLabel)
  362 + mainView.addSubview(balanceNumberLabel)
  363 +
  364 + mainView.addSubview(line_right_label)
  365 + mainView.addSubview(pointLabel)
  366 + mainView.addSubview(pointNumberLabel)
  367 +
  368 +
  369 + setupConstraints()
  370 + }
  371 +
  372 + func setupConstraints() {
  373 + mainView.snp.makeConstraints { make in
  374 + make.center.equalToSuperview()
  375 + make.left.equalToSuperview().offset(10)
  376 + make.right.equalToSuperview().offset(-10)
  377 + make.top.bottom.equalToSuperview()
  378 + }
  379 + pointButton.snp.makeConstraints { make in
  380 + make.top.equalToSuperview().offset(15)
  381 + make.left.equalToSuperview().offset(10)
  382 + make.width.equalTo(75)
  383 + }
  384 + moreView.snp.makeConstraints { make in
  385 + make.centerY.equalTo(pointButton)
  386 + make.left.equalTo(pointButton.snp.right)
  387 + }
  388 + questLabel.snp.makeConstraints { make in
  389 + make.left.equalToSuperview().offset(10)
  390 + make.centerY.equalToSuperview().offset(10)
  391 + }
  392 +
  393 + line_left_label.snp.makeConstraints { make in
  394 + make.left.equalTo(questLabel.snp.right).offset(10)
  395 + make.centerY.equalToSuperview()
  396 + make.height.equalTo(40)
  397 + make.width.equalTo(0.5)
  398 + }
  399 + balanceLabel.snp.makeConstraints { make in
  400 + make.centerY.equalTo(pointButton)
  401 + make.left.equalTo(line_left_label.snp.right).offset(10)
  402 + make.top.equalToSuperview().offset(15)
  403 + }
  404 + balanceNumberLabel.snp.makeConstraints { make in
  405 + make.left.equalTo(line_left_label.snp.right).offset(10)
  406 + make.centerY.equalToSuperview().offset(10)
  407 + }
  408 +
  409 + line_right_label.snp.makeConstraints { make in
  410 + make.left.equalTo(balanceLabel.snp.right).offset(10)
  411 + make.centerY.equalToSuperview()
  412 + make.height.equalTo(40)
  413 + make.width.equalTo(0.5)
  414 + }
  415 + pointLabel.snp.makeConstraints { make in
  416 + make.centerY.equalTo(balanceLabel)
  417 + make.left.equalTo(line_right_label.snp.right).offset(10)
  418 + }
  419 + pointNumberLabel.snp.makeConstraints { make in
  420 + make.centerY.equalTo(balanceNumberLabel)
  421 + make.left.equalTo(line_right_label.snp.right).offset(10)
  422 + }
  423 +
  424 + }
  425 +
  426 +
  427 + required init?(coder: NSCoder) {
  428 + fatalError("init(coder:) has not been implemented")
  429 + }
  430 +
  431 +}
  432 +
  433 +class MineBodyFourViewCell: UITableViewCell {
  434 +
  435 + lazy var mainView: UIView = {
  436 + let mainView = UIView.init()
  437 + mainView.backgroundColor = .white
  438 + return mainView
  439 + }()
  440 +
  441 + lazy var iconView: UIImageView = {
  442 + let iconView = UIImageView.init()
  443 + iconView.backgroundColor = .white
  444 + iconView.contentMode = .scaleToFill
  445 + iconView.image = UIImage.imageWithColor(color: HexColor("#f9f9f9")!, size: CGSizeMake(40, 40))
  446 + return iconView
  447 + }()
  448 +
  449 + lazy var nameLabel: UILabel = {
  450 + let nameLabel = UILabel.init()
  451 + nameLabel.backgroundColor = .white
  452 + nameLabel.textColor = HexColor("#30364F")
  453 + nameLabel.font = Font_15_Fit
  454 + return nameLabel
  455 + }()
  456 +
  457 + lazy var descLabel: UILabel = {
  458 + let descLabel = UILabel.init()
  459 + descLabel.backgroundColor = .white
  460 + descLabel.textColor = HexColor("#9EA4B8")
  461 + descLabel.font = Font_13_Fit
  462 + return descLabel
  463 + }()
  464 +
  465 + lazy var shareBtn: UIButton = {
  466 + let shareBtn = UIButton.init(type: .custom)
  467 + shareBtn.frame = CGRect(x: 0, y: 0, width: 70, height: 30)
  468 + shareBtn.setTitle("去分享", for: .normal)
  469 + shareBtn.setImage(UIImage(named: "mine_list_icon_right_white_more"), for: .normal)
  470 + shareBtn.setTitleColor(.white, for: .normal)
  471 + shareBtn.titleLabel?.font = Font_12
  472 + shareBtn.setupButtonImageAndTitlePossitionWith(padding: 0, style: .right)
  473 + shareBtn.layer.cornerRadius = 15
  474 + shareBtn.layer.masksToBounds = true
  475 + return shareBtn
  476 + }()
  477 +
  478 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  479 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  480 + self.selectionStyle = .none
  481 + self.backgroundColor = .clear
  482 +
  483 + addSubview(mainView)
  484 + mainView.addSubview(iconView)
  485 + mainView.addSubview(nameLabel)
  486 + mainView.addSubview(descLabel)
  487 + mainView.addSubview(shareBtn)
  488 +
  489 + setConstrainta()
  490 + }
  491 +
  492 + func setConstrainta() {
  493 + mainView.snp.makeConstraints { make in
  494 + make.edges.equalToSuperview()
  495 + }
  496 + iconView.snp.makeConstraints { make in
  497 + make.centerY.equalToSuperview()
  498 + make.left.equalToSuperview().offset(10)
  499 + make.size.equalTo(50)
  500 + }
  501 + nameLabel.snp.makeConstraints { make in
  502 + make.top.equalTo(iconView.snp.top)
  503 + make.left.equalTo(iconView.snp.right).offset(10)
  504 + }
  505 + descLabel.snp.makeConstraints { make in
  506 + make.bottom.equalTo(iconView.snp.bottom)
  507 + make.left.equalTo(iconView.snp.right).offset(10)
  508 + }
  509 + shareBtn.snp.makeConstraints { make in
  510 + make.centerY.equalToSuperview()
  511 + make.right.equalToSuperview().offset(-10)
  512 + make.width.equalTo(70)
  513 + make.height.equalTo(30)
  514 + }
  515 + shareBtn.setGradient(colors: [UIColor(red: 255/255.0, green: 168/255.0, blue: 26/255.0, alpha: 1),UIColor(red: 255/255.0, green: 210/255.0, blue: 11/255.0, alpha: 1)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
  516 +
  517 + }
  518 +
  519 + func setupWithData(dict: NSDictionary) {
  520 + iconView.image = UIImage(named: "\(dict.object(forKey: "icon") ?? "")")
  521 + nameLabel.text = "\(dict.object(forKey: "name") ?? "")"
  522 + descLabel.text = "\(dict.object(forKey: "desc") ?? "")"
  523 + }
  524 +
  525 + required init?(coder: NSCoder) {
  526 + fatalError("init(coder:) has not been implemented")
  527 + }
  528 +
  529 +}
  530 +
  531 +class MIneBodyFiveViewCell: UITableViewCell {
  532 +
  533 + lazy var mainView: UIView = {
  534 + let mainView = UIView.init(frame: CGRect(x: 0, y: 0, width: Int(KSreenWidth) - 40, height: 70))
  535 + mainView.backgroundColor = .white
  536 + return mainView
  537 + }()
  538 +
  539 + lazy var nameLabel: UILabel = {
  540 + let nameLabel = UILabel.init()
  541 + nameLabel.text = "签到"
  542 + nameLabel.textColor = HexColor("#666666")
  543 + nameLabel.font = Font_16
  544 + nameLabel.backgroundColor = .white
  545 + return nameLabel
  546 + }()
  547 +
  548 + lazy var descLabel: UILabel = {
  549 + let descLabel = UILabel.init()
  550 + descLabel.text = "2013-01-23"
  551 + descLabel.textColor = HexColor("#999999")
  552 + descLabel.font = Font_12
  553 + descLabel.backgroundColor = .clear
  554 + return descLabel
  555 + }()
  556 +
  557 + lazy var pointLabel: UILabel = {
  558 + let pointLabel = UILabel.init()
  559 + pointLabel.text = "+1000 积分"
  560 + pointLabel.textColor = HexColor("#F5A623")
  561 + pointLabel.font = BoldFont_16_Fit
  562 + pointLabel.backgroundColor = .clear
  563 + return pointLabel
  564 + }()
  565 +
  566 + lazy var line_label: UILabel = {
  567 + let lineLabel = UILabel.init()
  568 + lineLabel.backgroundColor = HexColor("#E5E5E5")
  569 + return lineLabel
  570 + }()
  571 +
  572 + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  573 + super.init(style: style, reuseIdentifier: reuseIdentifier)
  574 + selectionStyle = .none
  575 + backgroundColor = .clear
  576 +
  577 + addSubview(mainView)
  578 + mainView.addSubview(nameLabel)
  579 + mainView.addSubview(descLabel)
  580 + mainView.addSubview(pointLabel)
  581 + mainView.addSubview(line_label)
  582 + setConstrainta()
  583 + }
  584 +
  585 + func setConstrainta() {
  586 + mainView.snp.makeConstraints { make in
  587 + make.edges.equalToSuperview()
  588 + }
  589 + nameLabel.snp.makeConstraints { make in
  590 + make.left.equalToSuperview().offset(20)
  591 + make.top.equalToSuperview().offset(10)
  592 + }
  593 + descLabel.snp.makeConstraints { make in
  594 + make.bottom.equalToSuperview().offset(-10)
  595 + make.left.equalToSuperview().offset(20)
  596 + }
  597 + pointLabel.snp.makeConstraints { make in
  598 + make.centerY.equalToSuperview()
  599 + make.right.equalToSuperview().offset(-10)
  600 + }
  601 + line_label.snp.makeConstraints { make in
  602 + make.bottom.equalToSuperview().offset(-0.5)
  603 + make.left.equalToSuperview().offset(10)
  604 + make.right.equalToSuperview().offset(-10)
  605 + make.height.equalTo(0.5)
  606 + }
  607 + }
  608 +
  609 + func setupWithDataSource(isLast: Bool) {
  610 + line_label.isHidden = isLast
  611 + }
  612 +
  613 + required init?(coder: NSCoder) {
  614 + fatalError("init(coder:) has not been implemented")
  615 + }
  616 +
  617 +}
metaCode/Classes/Main/MinePage/View/CNLiveMineHeaderView.swift
@@ -290,3 +290,165 @@ extension MinePhotoUploadView { @@ -290,3 +290,165 @@ extension MinePhotoUploadView {
290 } 290 }
291 } 291 }
292 292
  293 +
  294 +class MineQuestHeaderView: UIView {
  295 +
  296 + lazy var mainView: UIImageView = {
  297 + let mainView = UIImageView.init()
  298 + mainView.image = UIImage(named: "mine_header_quest_back")
  299 + mainView.clipsToBounds = true
  300 + mainView.backgroundColor = .clear
  301 + mainView.layer.cornerRadius = 10
  302 + mainView.layer.masksToBounds = true
  303 + mainView.isUserInteractionEnabled = true
  304 + return mainView
  305 + }()
  306 +
  307 + lazy var pointBtn: UIButton = {
  308 + let pointBtn = UIButton(type: .custom)
  309 + pointBtn.size = CGSize(width: 72, height: 20)
  310 + pointBtn.backgroundColor = .clear
  311 + pointBtn.setTitle("积分收益", for: .normal)
  312 + pointBtn.setTitleColor(.white, for: .normal)
  313 + pointBtn.setImage(UIImage(named: "mine_list_icon_right_white_more"), for: .normal)
  314 + pointBtn.titleLabel?.font = Font_15
  315 + pointBtn.setupButtonImageAndTitlePossitionWith(padding: 0, style: .right)
  316 + pointBtn.addTarget(self, action: #selector(pushEarnRecordAction), for: .touchUpInside)
  317 + return pointBtn
  318 + }()
  319 +
  320 + lazy var balanceBtn: UIButton = {
  321 + let balanceBtn = UIButton(type: .custom)
  322 + balanceBtn.size = CGSize(width: 102, height: 20)
  323 + balanceBtn.backgroundColor = .clear
  324 + balanceBtn.setTitle("元码余额收益", for: .normal)
  325 + balanceBtn.setTitleColor(.white, for: .normal)
  326 + balanceBtn.setImage(UIImage(named: "mine_list_icon_right_white_more"), for: .normal)
  327 + balanceBtn.titleLabel?.font = Font_15
  328 + balanceBtn.setupButtonImageAndTitlePossitionWith(padding: 0, style: .right)
  329 + balanceBtn.addTarget(self, action: #selector(pushEarnBalanceAction), for: .touchUpInside)
  330 + return balanceBtn
  331 + }()
  332 +
  333 + lazy var pointLabel: UILabel = {
  334 + let pointLabel = UILabel.init()
  335 + pointLabel.text = "10.28W"
  336 + pointLabel.textColor = .white
  337 + pointLabel.backgroundColor = .clear
  338 + pointLabel.font = BoldFont_25_Fit
  339 + return pointLabel
  340 + }()
  341 +
  342 + lazy var balanceLabel: UILabel = {
  343 + let balanceLabel = UILabel.init()
  344 + balanceLabel.text = "3.15"
  345 + balanceLabel.textColor = .white
  346 + balanceLabel.backgroundColor = .clear
  347 + balanceLabel.font = BoldFont_25_Fit
  348 + return balanceLabel
  349 + }()
  350 +
  351 + lazy var descBtn: UIButton = {
  352 + let descBtn = UIButton.init(type: .custom)
  353 + descBtn.setTitle("您可随时将积分兑换成元码余额", for: .normal)
  354 + descBtn.setTitleColor(.white, for: .normal)
  355 + descBtn.setImage(UIImage(named: "mine_header_quest_tip"), for: .normal)
  356 + descBtn.titleLabel?.font = Font_11
  357 + descBtn.setupButtonImageAndTitlePossitionWith(padding: 3, style: .left)
  358 + return descBtn
  359 + }()
  360 +
  361 + override init(frame: CGRect) {
  362 + super.init(frame: frame)
  363 + self.backgroundColor = .clear
  364 +
  365 + addSubview(mainView)
  366 + mainView.addSubview(pointBtn)
  367 + mainView.addSubview(balanceBtn)
  368 + mainView.addSubview(pointLabel)
  369 + mainView.addSubview(balanceLabel)
  370 + mainView.addSubview(descBtn)
  371 +
  372 + setupConstraints()
  373 + }
  374 +
  375 + func setupConstraints() {
  376 +
  377 + mainView.snp.makeConstraints { make in
  378 + make.center.equalToSuperview()
  379 + make.left.right.equalToSuperview()
  380 + make.top.equalToSuperview().offset(10)
  381 + make.bottom.equalToSuperview().offset(-10)
  382 + }
  383 + pointBtn.snp.makeConstraints { make in
  384 + make.left.equalToSuperview().offset(15)
  385 + make.top.equalToSuperview().offset(15)
  386 + }
  387 + balanceBtn.snp.makeConstraints { make in
  388 + make.centerX.equalToSuperview().offset(50)
  389 + make.top.equalToSuperview().offset(15)
  390 + }
  391 + pointLabel.snp.makeConstraints { make in
  392 + make.left.equalTo(pointBtn.snp.left)
  393 + make.top.equalTo(pointBtn.snp.bottom).offset(10)
  394 + }
  395 + balanceLabel.snp.makeConstraints { make in
  396 + make.left.equalTo(balanceBtn.snp.left)
  397 + make.top.equalTo(balanceBtn.snp.bottom).offset(10)
  398 + }
  399 + descBtn.snp.makeConstraints { make in
  400 + make.left.equalTo(pointBtn.snp.left)
  401 + make.bottom.equalToSuperview().offset(-15)
  402 + make.width.equalTo(180)
  403 + }
  404 + }
  405 +
  406 + @objc func pushEarnRecordAction() {
  407 + currentViewController()?.navigationController?.pushViewController(CNLiveMineEarnViewController.init(index: 1), animated: true)
  408 + }
  409 +
  410 + @objc func pushEarnBalanceAction() {
  411 + currentViewController()?.navigationController?.pushViewController(CNLiveMineEarnViewController.init(index: 0), animated: true)
  412 + }
  413 +
  414 + required init?(coder: NSCoder) {
  415 + fatalError("init(coder:) has not been implemented")
  416 + }
  417 +}
  418 +
  419 +
  420 +class MineEarnHeaderView: UIView {
  421 +
  422 + lazy var mainView: UIView = {
  423 + let mainView = UIView.init()
  424 + mainView.backgroundColor = .white
  425 + mainView.layer.cornerRadius = 10
  426 + mainView.layer.masksToBounds = true
  427 + return mainView
  428 + }()
  429 +
  430 +
  431 +
  432 + override init(frame: CGRect) {
  433 + super.init(frame: frame)
  434 +
  435 + addSubview(mainView)
  436 +
  437 + setupConstraints()
  438 + }
  439 +
  440 + func setupConstraints() {
  441 + mainView.snp.makeConstraints { make in
  442 + make.top.equalToSuperview().offset(10)
  443 + make.bottom.equalToSuperview().offset(-10)
  444 + make.left.equalToSuperview().offset(20)
  445 + make.right.equalToSuperview().offset(-20)
  446 + }
  447 + }
  448 +
  449 + required init?(coder: NSCoder) {
  450 + fatalError("init(coder:) has not been implemented")
  451 + }
  452 +
  453 +}
  454 +
metaCode/Classes/Main/MinePage/View/CNLiveMineInfoAlertView.swift
@@ -535,12 +535,12 @@ class UpdataAlertView: UIView { @@ -535,12 +535,12 @@ class UpdataAlertView: UIView {
535 535
536 @objc func sendLoginActionMothod() -> Void { 536 @objc func sendLoginActionMothod() -> Void {
537 print("跳转到appstore") 537 print("跳转到appstore")
538 - UserInfoManager.shared.userInfo.show_update = "1" 538 + ConfigManager.shared.show_update = false
539 showMessage(message: "跳转到AppStore") 539 showMessage(message: "跳转到AppStore")
540 } 540 }
541 541
542 @objc func setupCloseButtonAction() -> Void { 542 @objc func setupCloseButtonAction() -> Void {
543 - UserInfoManager.shared.userInfo.show_update = "1" 543 + ConfigManager.shared.show_update = false
544 removeFromSuperview() 544 removeFromSuperview()
545 } 545 }
546 546
metaCode/Classes/Main/MinePage/View/CNLiveMineSubBodyListView.swift
@@ -102,12 +102,13 @@ class MineStandInfoTableViewCell: UITableViewCell { @@ -102,12 +102,13 @@ class MineStandInfoTableViewCell: UITableViewCell {
102 mainView.isUserInteractionEnabled = true 102 mainView.isUserInteractionEnabled = true
103 mainView.layer.masksToBounds = true 103 mainView.layer.masksToBounds = true
104 mainView.layer.cornerRadius = 8 104 mainView.layer.cornerRadius = 8
  105 + mainView.clipsToBounds = true
105 return mainView 106 return mainView
106 }() 107 }()
107 108
108 lazy var iconView : UIImageView = { 109 lazy var iconView : UIImageView = {
109 let iconView = UIImageView.init() 110 let iconView = UIImageView.init()
110 - iconView.contentMode = .scaleAspectFill 111 + iconView.contentMode = .scaleToFill
111 iconView.backgroundColor = .clear 112 iconView.backgroundColor = .clear
112 iconView.layer.masksToBounds = true 113 iconView.layer.masksToBounds = true
113 iconView.layer.cornerRadius = 25 114 iconView.layer.cornerRadius = 25
@@ -288,6 +289,7 @@ class MessageDescTableViewCell: UITableViewCell { @@ -288,6 +289,7 @@ class MessageDescTableViewCell: UITableViewCell {
288 289
289 lazy var cView: UIView = { 290 lazy var cView: UIView = {
290 let cView = UIView.init() 291 let cView = UIView.init()
  292 + cView.isUserInteractionEnabled = true
291 cView.backgroundColor = .white 293 cView.backgroundColor = .white
292 cView.layer.cornerRadius = 10 294 cView.layer.cornerRadius = 10
293 cView.layer.masksToBounds = true 295 cView.layer.masksToBounds = true
@@ -315,7 +317,6 @@ class MessageDescTableViewCell: UITableViewCell { @@ -315,7 +317,6 @@ class MessageDescTableViewCell: UITableViewCell {
315 textButton.setTitle("查看详情", for: .normal) 317 textButton.setTitle("查看详情", for: .normal)
316 textButton.setTitleColor(HexColor("#609BFF"), for: .normal) 318 textButton.setTitleColor(HexColor("#609BFF"), for: .normal)
317 textButton.titleLabel?.font = Font_13 319 textButton.titleLabel?.font = Font_13
318 - textButton.addTarget(self, action: #selector(textButtonAction), for: .touchUpInside)  
319 return textButton 320 return textButton
320 }() 321 }()
321 322
@@ -408,9 +409,4 @@ class MessageDescTableViewCell: UITableViewCell { @@ -408,9 +409,4 @@ class MessageDescTableViewCell: UITableViewCell {
408 required init?(coder: NSCoder) { 409 required init?(coder: NSCoder) {
409 fatalError("init(coder:) has not been implemented") 410 fatalError("init(coder:) has not been implemented")
410 } 411 }
411 -  
412 - @objc func textButtonAction() {  
413 - print("跳转H5详情界面")  
414 - showMessage(message: "跳转H5详情界面")  
415 - }  
416 } 412 }
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
@@ -96,9 +96,10 @@ class CNLiveMineViewModel: NSObject { @@ -96,9 +96,10 @@ class CNLiveMineViewModel: NSObject {
96 showLoading(message: "修改头像中...") 96 showLoading(message: "修改头像中...")
97 CNLiveNetworking.setAllowRequestDefaultArgument(true) 97 CNLiveNetworking.setAllowRequestDefaultArgument(true)
98 CNLiveNetworking.setupShowDataResult(false) 98 CNLiveNetworking.setupShowDataResult(false)
  99 + CNLiveNetworking.setupShowResult(true)
99 CNLiveNetworking.uploadNetwork(withURLString: "/open/api2/user/updateUserFaceById", param: param as? [AnyHashable : Any]) { formData in 100 CNLiveNetworking.uploadNetwork(withURLString: "/open/api2/user/updateUserFaceById", param: param as? [AnyHashable : Any]) { formData in
100 - let imageData = image.jpegData(compressionQuality: 1.0)  
101 - formData?.appendPart(withFileData: imageData! as Data, name: "face", fileName: ".jpg", mimeType: "image/jpg") 101 + let imageData = image.imageWithZip()
  102 + formData?.appendPart(withFileData: imageData as Data, name: "face", fileName: ".jpg", mimeType: "image/jpg")
102 } progressBlock: { progress in 103 } progressBlock: { progress in
103 print("已上传==>\(progress!.fractionCompleted*100)") 104 print("已上传==>\(progress!.fractionCompleted*100)")
104 } completionBlock: { task, result, error in 105 } completionBlock: { task, result, error in
@@ -119,7 +120,7 @@ class CNLiveMineViewModel: NSObject { @@ -119,7 +120,7 @@ class CNLiveMineViewModel: NSObject {
119 resultBlock(.icon,false) 120 resultBlock(.icon,false)
120 } 121 }
121 } else { 122 } else {
122 - showMessage(message: "头像更改成功") 123 + showMessage(message: "头像更改失败")
123 resultBlock(.icon,false) 124 resultBlock(.icon,false)
124 } 125 }
125 } 126 }
@@ -133,7 +134,7 @@ class CNLiveMineViewModel: NSObject { @@ -133,7 +134,7 @@ class CNLiveMineViewModel: NSObject {
133 /// - Parameter resultBlock: 结果返回 134 /// - Parameter resultBlock: 结果返回
134 static func requestAccessTokenAction(resultBlock: @escaping resultBlock) { 135 static func requestAccessTokenAction(resultBlock: @escaping resultBlock) {
135 //当前时间大于最大允许时间则表明当前access_token已经过期需要重新请求 136 //当前时间大于最大允许时间则表明当前access_token已经过期需要重新请求
136 - if CNLiveMineViewModel.timeStamp > NSNumber(string: UserInfoManager.shared.userInfo.expires_in)?.intValue ?? 0 { 137 +// if CNLiveMineViewModel.timeStamp > NSNumber(string: UserInfoManager.shared.userInfo.expires_in)?.intValue ?? 0 {
137 let param = NSMutableDictionary.init() 138 let param = NSMutableDictionary.init()
138 param.setValue(APPId, forKey: "appId") 139 param.setValue(APPId, forKey: "appId")
139 param.setValue(APPSecret, forKey: "secret") 140 param.setValue(APPSecret, forKey: "secret")
@@ -162,9 +163,9 @@ class CNLiveMineViewModel: NSObject { @@ -162,9 +163,9 @@ class CNLiveMineViewModel: NSObject {
162 resultBlock(.other,false) 163 resultBlock(.other,false)
163 } 164 }
164 } 165 }
165 - } else {  
166 - resultBlock(.other,true)  
167 - } 166 +// } else {
  167 +// resultBlock(.other,true)
  168 +// }
168 } 169 }
169 170
170 /// 上传反馈意见接口 171 /// 上传反馈意见接口
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_left.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_earn_point_left@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_earn_point_left@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_left.imageset/mine_header_earn_point_left@2x.png 0 → 100644

9.58 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_left.imageset/mine_header_earn_point_left@3x.png 0 → 100644

24.5 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_right.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_earn_point_right@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_earn_point_right@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_right.imageset/mine_header_earn_point_right@2x.png 0 → 100644

7.44 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_earn_point_right.imageset/mine_header_earn_point_right@3x.png 0 → 100644

20 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_glod_more.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_message_glod_more@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_message_glod_more@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_glod_more.imageset/mine_header_message_glod_more@2x.png 0 → 100644

305 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_glod_more.imageset/mine_header_message_glod_more@3x.png 0 → 100644

524 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_back.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_point_back@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_point_back@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_back.imageset/mine_header_point_back@2x.png 0 → 100644

7.44 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_back.imageset/mine_header_point_back@3x.png 0 → 100644

14.5 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_gold_coin.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_point_gold_coin@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_point_gold_coin@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_gold_coin.imageset/mine_header_point_gold_coin@2x.png 0 → 100644

1.45 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_point_gold_coin.imageset/mine_header_point_gold_coin@3x.png 0 → 100644

2.68 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_back.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_quest_back@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_quest_back@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_back.imageset/mine_header_quest_back@2x.png 0 → 100644

50.2 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_back.imageset/mine_header_quest_back@3x.png 0 → 100644

103 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_tip.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_header_quest_tip@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_header_quest_tip@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_tip.imageset/mine_header_quest_tip@2x.png 0 → 100644

510 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_quest_tip.imageset/mine_header_quest_tip@3x.png 0 → 100644

887 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_icon_right_white_more.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_list_icon_right_white_more@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_list_icon_right_white_more@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_icon_right_white_more.imageset/mine_list_icon_right_white_more@2x.png 0 → 100644

295 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_icon_right_white_more.imageset/mine_list_icon_right_white_more@3x.png 0 → 100644

508 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_note.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_list_sub_set_note@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_list_sub_set_note@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_note.imageset/mine_list_sub_set_note@2x.png 0 → 100644

924 Bytes

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_note.imageset/mine_list_sub_set_note@3x.png 0 → 100644

1.56 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_photo.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "mine_list_sub_set_photo@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "mine_list_sub_set_photo@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_photo.imageset/mine_list_sub_set_photo@2x.png 0 → 100644

1.35 KB

metaCode/Supporting Files/Assets.xcassets/MinePage/mine_list_sub_set_photo.imageset/mine_list_sub_set_photo@3x.png 0 → 100644

2.35 KB

metaCode/Supporting Files/Assets.xcassets/Temp/Contents.json 0 → 100644
  1 +{
  2 + "info" : {
  3 + "author" : "xcode",
  4 + "version" : 1
  5 + }
  6 +}
metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img01.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "temp_quest_list_img01@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "temp_quest_list_img01@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img01.imageset/temp_quest_list_img01@2x.png 0 → 100644

12.6 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img01.imageset/temp_quest_list_img01@3x.png 0 → 100644

24.4 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img02.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "temp_quest_list_img02@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "temp_quest_list_img02@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img02.imageset/temp_quest_list_img02@2x.png 0 → 100644

11.5 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img02.imageset/temp_quest_list_img02@3x.png 0 → 100644

22.2 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img03.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "temp_quest_list_img03@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "temp_quest_list_img03@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img03.imageset/temp_quest_list_img03@2x.png 0 → 100644

11.6 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img03.imageset/temp_quest_list_img03@3x.png 0 → 100644

22.3 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img04.imageset/Contents.json 0 → 100644
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "scale" : "1x"
  6 + },
  7 + {
  8 + "filename" : "temp_quest_list_img04@2x.png",
  9 + "idiom" : "universal",
  10 + "scale" : "2x"
  11 + },
  12 + {
  13 + "filename" : "temp_quest_list_img04@3x.png",
  14 + "idiom" : "universal",
  15 + "scale" : "3x"
  16 + }
  17 + ],
  18 + "info" : {
  19 + "author" : "xcode",
  20 + "version" : 1
  21 + }
  22 +}
metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img04.imageset/temp_quest_list_img04@2x.png 0 → 100644

11.6 KB

metaCode/Supporting Files/Assets.xcassets/Temp/temp_quest_list_img04.imageset/temp_quest_list_img04@3x.png 0 → 100644

22.4 KB