Commit 130bcfd22f52ac1b0530af3b8a03ad55d2e286ee
1 parent
830caff1
提交积分界面布局
Showing
65 changed files
with
1368 additions
and
84 deletions
Podfile
| ... | ... | @@ -35,6 +35,13 @@ target 'metaCode' do |
| 35 | 35 | pod 'Qiniu' |
| 36 | 36 | #加载GIF |
| 37 | 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 | 46 | target 'metaCodeTests' do |
| 40 | 47 | inherit! :search_paths | ... | ... |
metaCode.xcodeproj/project.pbxproj
| ... | ... | @@ -28,11 +28,14 @@ |
| 28 | 28 | 79282A462A2F457D00B5F8CF /* CNLiveMineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */; }; |
| 29 | 29 | 792E57D92A3AA2F2005834DB /* CNLiveCommonBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */; }; |
| 30 | 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 | 32 | 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */; }; |
| 33 | 33 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; }; |
| 34 | 34 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; }; |
| 35 | 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 | 39 | 798A44E82A30134400815935 /* CNLiveMineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */; }; |
| 37 | 40 | 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */; }; |
| 38 | 41 | 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */; }; |
| ... | ... | @@ -122,11 +125,14 @@ |
| 122 | 125 | 79282A452A2F457D00B5F8CF /* CNLiveMineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewController.swift; sourceTree = "<group>"; }; |
| 123 | 126 | 792E57D82A3AA2F2005834DB /* CNLiveCommonBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveCommonBaseModel.swift; sourceTree = "<group>"; }; |
| 124 | 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 | 129 | 79396EF02A31C21B0053E1AF /* CNLiveInfoShowViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveInfoShowViewController.swift; sourceTree = "<group>"; }; |
| 127 | 130 | 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; |
| 128 | 131 | 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; }; |
| 129 | 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 | 136 | 798A44E72A30134400815935 /* CNLiveMineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineHeaderView.swift; sourceTree = "<group>"; }; |
| 131 | 137 | 798A44E92A30135D00815935 /* CNLiveMineBodyListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineBodyListView.swift; sourceTree = "<group>"; }; |
| 132 | 138 | 798A44EB2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineAddInfoViewController.swift; sourceTree = "<group>"; }; |
| ... | ... | @@ -230,7 +236,7 @@ |
| 230 | 236 | 790D019C2A2DCBD000C5978D /* UIView+CNGradient.swift */, |
| 231 | 237 | 79282A3B2A2EDC2500B5F8CF /* NSString+CNLiveExtensions.swift */, |
| 232 | 238 | 798A44EF2A305BC200815935 /* UIButton+CNLiveExtension.swift */, |
| 233 | - 79396EEC2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift */, | |
| 239 | + 79396EEC2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift */, | |
| 234 | 240 | 79BDDCBD2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift */, |
| 235 | 241 | 790B1FB52A41938F0074CF00 /* UIImage+CNLiveColorImage.swift */, |
| 236 | 242 | ); |
| ... | ... | @@ -302,6 +308,9 @@ |
| 302 | 308 | 79F4B1152A32B96B00993C03 /* CNLiveMineInfoViewController.swift */, |
| 303 | 309 | 79F4B1192A32F21400993C03 /* CNLiveMineNickViewController.swift */, |
| 304 | 310 | 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */, |
| 311 | + 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */, | |
| 312 | + 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */, | |
| 313 | + 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */, | |
| 305 | 314 | ); |
| 306 | 315 | path = Controller; |
| 307 | 316 | sourceTree = "<group>"; |
| ... | ... | @@ -574,7 +583,7 @@ |
| 574 | 583 | 818163B42A25CFCC00579C86 /* Sources */, |
| 575 | 584 | 818163B52A25CFCC00579C86 /* Frameworks */, |
| 576 | 585 | 818163B62A25CFCC00579C86 /* Resources */, |
| 577 | - 88E19AA0928A4312141EA5EA /* [CP] Embed Pods Frameworks */, | |
| 586 | + E0FAE2296315BED785FA507E /* [CP] Embed Pods Frameworks */, | |
| 578 | 587 | ); |
| 579 | 588 | buildRules = ( |
| 580 | 589 | ); |
| ... | ... | @@ -612,7 +621,7 @@ |
| 612 | 621 | 818163D42A25CFCF00579C86 /* Sources */, |
| 613 | 622 | 818163D52A25CFCF00579C86 /* Frameworks */, |
| 614 | 623 | 818163D62A25CFCF00579C86 /* Resources */, |
| 615 | - 4967DCDF4BA0FC7AE727076E /* [CP] Embed Pods Frameworks */, | |
| 624 | + 035341748B563C741D14CD83 /* [CP] Embed Pods Frameworks */, | |
| 616 | 625 | ); |
| 617 | 626 | buildRules = ( |
| 618 | 627 | ); |
| ... | ... | @@ -699,29 +708,7 @@ |
| 699 | 708 | /* End PBXResourcesBuildPhase section */ |
| 700 | 709 | |
| 701 | 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 | 712 | isa = PBXShellScriptBuildPhase; |
| 726 | 713 | buildActionMask = 2147483647; |
| 727 | 714 | files = ( |
| ... | ... | @@ -738,7 +725,7 @@ |
| 738 | 725 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-metaCode-metaCodeUITests/Pods-metaCode-metaCodeUITests-frameworks.sh\"\n"; |
| 739 | 726 | showEnvVarsInLog = 0; |
| 740 | 727 | }; |
| 741 | - 53AB1F83C55845CC654163DE /* [CP] Check Pods Manifest.lock */ = { | |
| 728 | + 148A6537732D7A65559DB472 /* [CP] Check Pods Manifest.lock */ = { | |
| 742 | 729 | isa = PBXShellScriptBuildPhase; |
| 743 | 730 | buildActionMask = 2147483647; |
| 744 | 731 | files = ( |
| ... | ... | @@ -753,28 +740,33 @@ |
| 753 | 740 | outputFileListPaths = ( |
| 754 | 741 | ); |
| 755 | 742 | outputPaths = ( |
| 756 | - "$(DERIVED_FILE_DIR)/Pods-metaCode-metaCodeUITests-checkManifestLockResult.txt", | |
| 743 | + "$(DERIVED_FILE_DIR)/Pods-metaCodeTests-checkManifestLockResult.txt", | |
| 757 | 744 | ); |
| 758 | 745 | runOnlyForDeploymentPostprocessing = 0; |
| 759 | 746 | shellPath = /bin/sh; |
| 760 | 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 | 748 | showEnvVarsInLog = 0; |
| 762 | 749 | }; |
| 763 | - 88E19AA0928A4312141EA5EA /* [CP] Embed Pods Frameworks */ = { | |
| 750 | + 53AB1F83C55845CC654163DE /* [CP] Check Pods Manifest.lock */ = { | |
| 764 | 751 | isa = PBXShellScriptBuildPhase; |
| 765 | 752 | buildActionMask = 2147483647; |
| 766 | 753 | files = ( |
| 767 | 754 | ); |
| 768 | 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 | 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 | 767 | runOnlyForDeploymentPostprocessing = 0; |
| 776 | 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 | 770 | showEnvVarsInLog = 0; |
| 779 | 771 | }; |
| 780 | 772 | C6C54F35208ADFC89DAE5063 /* [CP] Check Pods Manifest.lock */ = { |
| ... | ... | @@ -799,6 +791,23 @@ |
| 799 | 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 | 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 | 811 | /* End PBXShellScriptBuildPhase section */ |
| 803 | 812 | |
| 804 | 813 | /* Begin PBXSourcesBuildPhase section */ |
| ... | ... | @@ -809,6 +818,7 @@ |
| 809 | 818 | 7CD675292A270F6A008354C1 /* WJColorChange.m in Sources */, |
| 810 | 819 | 79F4B11C2A33036E00993C03 /* CNLiveMineInfoAlertView.swift in Sources */, |
| 811 | 820 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */, |
| 821 | + 7989B5C72A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift in Sources */, | |
| 812 | 822 | 79396EF12A31C21B0053E1AF /* CNLiveInfoShowViewController.swift in Sources */, |
| 813 | 823 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */, |
| 814 | 824 | 798A44FB2A30999900815935 /* CNLiveAlertTool.swift in Sources */, |
| ... | ... | @@ -834,6 +844,7 @@ |
| 834 | 844 | 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, |
| 835 | 845 | 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, |
| 836 | 846 | 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */, |
| 847 | + 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */, | |
| 837 | 848 | 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */, |
| 838 | 849 | 7CD675472A274167008354C1 /* NewPagedFlowView.m in Sources */, |
| 839 | 850 | 79F4B11A2A32F21400993C03 /* CNLiveMineNickViewController.swift in Sources */, |
| ... | ... | @@ -843,11 +854,12 @@ |
| 843 | 854 | 79BDDCBE2A3C3FC8008560FC /* NSObject+CNLiveJSONTool.swift in Sources */, |
| 844 | 855 | 790D01A32A2DDBA300C5978D /* CNLiveConfigManager.swift in Sources */, |
| 845 | 856 | 7C2703332A36CC660061EC50 /* CNLiveGlobalBlock.swift in Sources */, |
| 857 | + 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */, | |
| 846 | 858 | 798A44EA2A30135D00815935 /* CNLiveMineBodyListView.swift in Sources */, |
| 847 | 859 | 798A44F92A30835400815935 /* CNLiveHelpFeedBackViewController.swift in Sources */, |
| 848 | 860 | 79A68C4A2A26E6CE00DC3B43 /* (null) in Sources */, |
| 849 | 861 | 790D01852A2D89E100C5978D /* UIColor+CNHexColor.swift in Sources */, |
| 850 | - 79396EED2A319F220053E1AF /* NSObject+CNLiveCurrentVC.swift in Sources */, | |
| 862 | + 79396EED2A319F220053E1AF /* UIView+CNLiveCurrentVC.swift in Sources */, | |
| 851 | 863 | 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */, |
| 852 | 864 | 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */, |
| 853 | 865 | 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, |
| ... | ... | @@ -1060,7 +1072,7 @@ |
| 1060 | 1072 | "$(inherited)", |
| 1061 | 1073 | "@executable_path/Frameworks", |
| 1062 | 1074 | ); |
| 1063 | - MARKETING_VERSION = 0.9; | |
| 1075 | + MARKETING_VERSION = 1.0; | |
| 1064 | 1076 | PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; |
| 1065 | 1077 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 1066 | 1078 | SWIFT_EMIT_LOC_STRINGS = YES; |
| ... | ... | @@ -1094,7 +1106,7 @@ |
| 1094 | 1106 | "$(inherited)", |
| 1095 | 1107 | "@executable_path/Frameworks", |
| 1096 | 1108 | ); |
| 1097 | - MARKETING_VERSION = 0.9; | |
| 1109 | + MARKETING_VERSION = 1.0; | |
| 1098 | 1110 | PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.metaCode.debug; |
| 1099 | 1111 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 1100 | 1112 | SWIFT_EMIT_LOC_STRINGS = YES; | ... | ... |
metaCode/Classes/Common/Base/CNLiveBaseTabBarViewController.swift
| ... | ... | @@ -47,7 +47,7 @@ class CNLiveBaseTabBarViewController: UITabBarController |
| 47 | 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 | 51 | CNLiveMineViewModel.requestSystemNews { result, respStatue in |
| 52 | 52 | if respStatue == .success { |
| 53 | 53 | UpdataAlertView.showUpdataView(updataModel: result as! UpdateInfoModel) | ... | ... |
metaCode/Classes/Config/CNLiveConfigManager.swift
| ... | ... | @@ -7,10 +7,11 @@ |
| 7 | 7 | |
| 8 | 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 | 15 | public var keyboardDisplayHeight : CGFloat = 0 |
| 15 | 16 | |
| 16 | 17 | private override init() { |
| ... | ... | @@ -36,14 +37,14 @@ class CNLiveConfigManager : NSObject { |
| 36 | 37 | |
| 37 | 38 | @objc private func keyboardDidShowNotification(notification : Notification) { |
| 38 | 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 | 42 | @objc private func keyboardDidChangeFrameNotification(notification : Notification) { |
| 42 | 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 | 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
metaCode/Classes/Extensions/UIButton+CNLiveExtension.swift
| ... | ... | @@ -7,6 +7,13 @@ |
| 7 | 7 | |
| 8 | 8 | import Foundation |
| 9 | 9 | |
| 10 | +enum ButtonImageAndTitlePossitionStyle { | |
| 11 | + case left | |
| 12 | + case right | |
| 13 | + case top | |
| 14 | + case bottom | |
| 15 | +} | |
| 16 | + | |
| 10 | 17 | extension UIButton { |
| 11 | 18 | |
| 12 | 19 | /// 根据图片生成UIButton |
| ... | ... | @@ -48,4 +55,31 @@ extension UIButton { |
| 48 | 55 | button.contentHorizontalAlignment = contentHorizontalAlignment; |
| 49 | 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 | 8 | import Foundation |
| 9 | 9 | |
| 10 | 10 | extension UIImage { |
| 11 | + | |
| 12 | + /// 生成纯色图片 | |
| 13 | + /// - Parameters: | |
| 14 | + /// - color: 颜色 | |
| 15 | + /// - size: 大小 | |
| 16 | + /// - Returns: 返回image | |
| 11 | 17 | class func imageWithColor(color: UIColor, size: CGSize) -> UIImage { |
| 12 | 18 | let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) |
| 13 | 19 | UIGraphicsBeginImageContextWithOptions(rect.size, false, 0) |
| ... | ... | @@ -18,4 +24,29 @@ extension UIImage { |
| 18 | 24 | UIGraphicsEndImageContext() |
| 19 | 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 | 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 | 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 | 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 | 82 | remindLab.bounds = CGRect(x: 0, y: 0, width: width, height: height) |
| 83 | 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 | 105 | hub.mode = .indeterminate |
| 106 | 106 | hub.animationType = .fade |
| 107 | 107 | hub.contentColor = .white |
| 108 | - hub.bezelView.backgroundColor = .black | |
| 108 | + hub.bezelView.color = .black | |
| 109 | + hub.bezelView.style = .solidColor | |
| 109 | 110 | hub.label.textColor = .white |
| 110 | 111 | if message.isNotBlank() { |
| 111 | 112 | hub.label.text = message | ... | ... |
metaCode/Classes/Main/LoginPage/Controller/CNLiveLoginViewController.swift
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 | 65 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
| 66 | 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 | 91 | let userInfo = UserInfoManager.shared.userInfo |
| 92 | 92 | userInfo.nickName = self!.nickField.text ?? "" |
| 93 | 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 | 12 | |
| 13 | 13 | let kCNLiveMineOneViewCellIdentifier = "kCNLiveMineOneViewCellIdentifier" |
| 14 | 14 | let kCNLiveMineTwoViewCellIdentifier = "kCNLiveMineTwoViewCellIdentifier" |
| 15 | + let kMineBodyThreeViewCellIdentifier = "kMineBodyThreeViewCellIdentifier" | |
| 15 | 16 | lazy var tableView : UITableView = { |
| 16 | 17 | let tableView = UITableView(frame: .zero, style: .grouped) |
| 17 | 18 | tableView.dataSource = self |
| ... | ... | @@ -21,6 +22,7 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, |
| 21 | 22 | tableView.separatorStyle = .none |
| 22 | 23 | tableView.register(MineBodyOneListViewCell.self, forCellReuseIdentifier: kCNLiveMineOneViewCellIdentifier) |
| 23 | 24 | tableView.register(MineBodyTwoListViewCell.self, forCellReuseIdentifier: kCNLiveMineTwoViewCellIdentifier) |
| 25 | + tableView.register(MineBodyThreeViewCell.self, forCellReuseIdentifier: kMineBodyThreeViewCellIdentifier) | |
| 24 | 26 | return tableView |
| 25 | 27 | }() |
| 26 | 28 | |
| ... | ... | @@ -34,13 +36,14 @@ class CNLiveMineViewController : CNLiveBaseViewController, UITableViewDelegate, |
| 34 | 36 | |
| 35 | 37 | lazy var dataArray: NSMutableArray = { |
| 36 | 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 | 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 | 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 | 47 | return dataArray |
| 45 | 48 | }() |
| 46 | 49 | |
| ... | ... | @@ -92,8 +95,12 @@ extension CNLiveMineViewController { |
| 92 | 95 | } |
| 93 | 96 | |
| 94 | 97 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { |
| 95 | - | |
| 96 | 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 | 104 | let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveMineOneViewCellIdentifier) as! MineBodyOneListViewCell |
| 98 | 105 | |
| 99 | 106 | return cell |
| ... | ... | @@ -108,19 +115,28 @@ extension CNLiveMineViewController { |
| 108 | 115 | |
| 109 | 116 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
| 110 | 117 | if indexPath.section == 0 { |
| 118 | + return 100 | |
| 119 | + } | |
| 120 | + if indexPath.section == 1 { | |
| 111 | 121 | return 120 |
| 112 | 122 | } |
| 113 | 123 | return 60 |
| 114 | 124 | } |
| 115 | 125 | |
| 116 | 126 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { |
| 127 | + if indexPath.section == 0 { | |
| 128 | + self.navigationController?.pushViewController(CNLiveMineQuestViewController.init(), animated: true) | |
| 129 | + } | |
| 117 | 130 | if indexPath.section == 1 { |
| 131 | + self.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true) | |
| 132 | + } | |
| 133 | + if indexPath.section == 2 { | |
| 118 | 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 | 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 | 140 | self.navigationController?.pushViewController(CNLiveTypeFeedBackViewController.init(show_type: .setting), animated: true) |
| 125 | 141 | } |
| 126 | 142 | } |
| ... | ... | @@ -143,9 +159,10 @@ extension CNLiveMineViewController { |
| 143 | 159 | |
| 144 | 160 | func scrollViewDidScroll(_ scrollView: UIScrollView) { |
| 145 | 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 | 48 | dataArray.add(["icon":"","name":"个人信息保护政策"]) |
| 49 | 49 | } |
| 50 | 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 | 55 | if _show_type == .about { |
| 55 | 56 | dataArray.add(["icon":"","name":"版本更新","more":"当前已经是最新版本"]) | ... | ... |
metaCode/Classes/Main/MinePage/View/CNLiveMineBodyListView.swift
| ... | ... | @@ -41,8 +41,8 @@ class MineBodyOneListViewCell : UITableViewCell { |
| 41 | 41 | lookBtn.setTitleColor(.white, for: .normal) |
| 42 | 42 | lookBtn.titleLabel?.font = BoldFont_14 |
| 43 | 43 | lookBtn.layer.masksToBounds = true |
| 44 | + lookBtn.isUserInteractionEnabled = false | |
| 44 | 45 | lookBtn.layer.cornerRadius = 15 |
| 45 | - lookBtn.addTarget(self, action: #selector(pushLookAction), for: .touchUpInside) | |
| 46 | 46 | return lookBtn |
| 47 | 47 | }() |
| 48 | 48 | |
| ... | ... | @@ -69,10 +69,6 @@ class MineBodyOneListViewCell : UITableViewCell { |
| 69 | 69 | setupConstraints() |
| 70 | 70 | } |
| 71 | 71 | |
| 72 | - @objc func pushLookAction() { | |
| 73 | - currentViewController()?.navigationController?.pushViewController(CNLiveMineAddInfoViewController.init(show_type: .info), animated: true) | |
| 74 | - } | |
| 75 | - | |
| 76 | 72 | required init?(coder: NSCoder) { |
| 77 | 73 | fatalError("init(coder:) has not been implemented") |
| 78 | 74 | } |
| ... | ... | @@ -132,9 +128,10 @@ class MineBodyTwoListViewCell : UITableViewCell { |
| 132 | 128 | lazy var avatarView: UIImageView = { |
| 133 | 129 | let avatarView = UIImageView.init() |
| 134 | 130 | avatarView.backgroundColor = .clear |
| 135 | - avatarView.contentMode = .scaleToFill | |
| 131 | + avatarView.contentMode = .scaleAspectFill | |
| 136 | 132 | avatarView.layer.cornerRadius = 30 |
| 137 | 133 | avatarView.layer.masksToBounds = true |
| 134 | + avatarView.clipsToBounds = true | |
| 138 | 135 | avatarView.isHidden = true |
| 139 | 136 | return avatarView |
| 140 | 137 | }() |
| ... | ... | @@ -262,3 +259,359 @@ class MineBodyTwoListViewCell : UITableViewCell { |
| 262 | 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 | 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 | 535 | |
| 536 | 536 | @objc func sendLoginActionMothod() -> Void { |
| 537 | 537 | print("跳转到appstore") |
| 538 | - UserInfoManager.shared.userInfo.show_update = "1" | |
| 538 | + ConfigManager.shared.show_update = false | |
| 539 | 539 | showMessage(message: "跳转到AppStore") |
| 540 | 540 | } |
| 541 | 541 | |
| 542 | 542 | @objc func setupCloseButtonAction() -> Void { |
| 543 | - UserInfoManager.shared.userInfo.show_update = "1" | |
| 543 | + ConfigManager.shared.show_update = false | |
| 544 | 544 | removeFromSuperview() |
| 545 | 545 | } |
| 546 | 546 | ... | ... |
metaCode/Classes/Main/MinePage/View/CNLiveMineSubBodyListView.swift
| ... | ... | @@ -102,12 +102,13 @@ class MineStandInfoTableViewCell: UITableViewCell { |
| 102 | 102 | mainView.isUserInteractionEnabled = true |
| 103 | 103 | mainView.layer.masksToBounds = true |
| 104 | 104 | mainView.layer.cornerRadius = 8 |
| 105 | + mainView.clipsToBounds = true | |
| 105 | 106 | return mainView |
| 106 | 107 | }() |
| 107 | 108 | |
| 108 | 109 | lazy var iconView : UIImageView = { |
| 109 | 110 | let iconView = UIImageView.init() |
| 110 | - iconView.contentMode = .scaleAspectFill | |
| 111 | + iconView.contentMode = .scaleToFill | |
| 111 | 112 | iconView.backgroundColor = .clear |
| 112 | 113 | iconView.layer.masksToBounds = true |
| 113 | 114 | iconView.layer.cornerRadius = 25 |
| ... | ... | @@ -288,6 +289,7 @@ class MessageDescTableViewCell: UITableViewCell { |
| 288 | 289 | |
| 289 | 290 | lazy var cView: UIView = { |
| 290 | 291 | let cView = UIView.init() |
| 292 | + cView.isUserInteractionEnabled = true | |
| 291 | 293 | cView.backgroundColor = .white |
| 292 | 294 | cView.layer.cornerRadius = 10 |
| 293 | 295 | cView.layer.masksToBounds = true |
| ... | ... | @@ -315,7 +317,6 @@ class MessageDescTableViewCell: UITableViewCell { |
| 315 | 317 | textButton.setTitle("查看详情", for: .normal) |
| 316 | 318 | textButton.setTitleColor(HexColor("#609BFF"), for: .normal) |
| 317 | 319 | textButton.titleLabel?.font = Font_13 |
| 318 | - textButton.addTarget(self, action: #selector(textButtonAction), for: .touchUpInside) | |
| 319 | 320 | return textButton |
| 320 | 321 | }() |
| 321 | 322 | |
| ... | ... | @@ -408,9 +409,4 @@ class MessageDescTableViewCell: UITableViewCell { |
| 408 | 409 | required init?(coder: NSCoder) { |
| 409 | 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 | 96 | showLoading(message: "修改头像中...") |
| 97 | 97 | CNLiveNetworking.setAllowRequestDefaultArgument(true) |
| 98 | 98 | CNLiveNetworking.setupShowDataResult(false) |
| 99 | + CNLiveNetworking.setupShowResult(true) | |
| 99 | 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 | 103 | } progressBlock: { progress in |
| 103 | 104 | print("已上传==>\(progress!.fractionCompleted*100)") |
| 104 | 105 | } completionBlock: { task, result, error in |
| ... | ... | @@ -119,7 +120,7 @@ class CNLiveMineViewModel: NSObject { |
| 119 | 120 | resultBlock(.icon,false) |
| 120 | 121 | } |
| 121 | 122 | } else { |
| 122 | - showMessage(message: "头像更改成功") | |
| 123 | + showMessage(message: "头像更改失败") | |
| 123 | 124 | resultBlock(.icon,false) |
| 124 | 125 | } |
| 125 | 126 | } |
| ... | ... | @@ -133,7 +134,7 @@ class CNLiveMineViewModel: NSObject { |
| 133 | 134 | /// - Parameter resultBlock: 结果返回 |
| 134 | 135 | static func requestAccessTokenAction(resultBlock: @escaping resultBlock) { |
| 135 | 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 | 138 | let param = NSMutableDictionary.init() |
| 138 | 139 | param.setValue(APPId, forKey: "appId") |
| 139 | 140 | param.setValue(APPSecret, forKey: "secret") |
| ... | ... | @@ -162,9 +163,9 @@ class CNLiveMineViewModel: NSObject { |
| 162 | 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
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