younger_times
2023-06-08 74a6cbaab348404db343baaa8a6466fa7730fa8c
init
3个文件已修改
1个文件已删除
49个文件已添加
1577 ■■■■■ 已修改文件
Podfile 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai.xcodeproj/project.pbxproj 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai.xcworkspace/contents.xcworkspacedata 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/AppDelegate.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/Contents.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_back.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_back.imageset/btn_back@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_back.imageset/btn_back@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_close.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_close.imageset/btn_close@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_close.imageset/btn_close@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select.imageset/btn_select@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select.imageset/btn_select@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/btn_select_u@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/btn_select_u@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/btn_wechat@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/btn_wechat@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Colors/515151.colorset/Contents.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Colors/Contents.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Colors/F6F6F6.colorset/Contents.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Colors/FE6E0D.colorset/Contents.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/Contents.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/icon_login_code@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/icon_login_code@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/icon_login_eye@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/icon_login_eye@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/icon_login_eye_c@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/icon_login_eye_c@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/icon_login_phone@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/icon_login_phone@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/icon_LOGO.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/icon_LOGO.imageset/icon_LOGO@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Assets.xcassets/icon_LOGO.imageset/icon_LOGO@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Base/BaseNav.swift 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Base/BaseVC.swift 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Config/Colors.swift 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Config/Def.swift 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Config/Fronts.swift 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Login/VC/LoginVC.swift 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/Login/VC/LoginVC.xib 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/New Group/View/AgreentView.swift 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/New Group/View/AgreentView.xib 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/New Group/View/CommonAlertView.swift 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/New Group/View/CommonAlertView.xib 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/SceneDelegate.swift 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WanPai/ViewController.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Podfile
New file
@@ -0,0 +1,11 @@
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'WanPai' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  # Pods for WanPai
  pod 'JQTools',:path=> '/Users/yangkai/Developer/MyProject/JQTools'
  pod 'SwifterSwift'
end
WanPai.xcodeproj/project.pbxproj
@@ -7,23 +7,47 @@
    objects = {
/* Begin PBXBuildFile section */
        32D5FD87AB45829154125950 /* Pods_WanPai.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F12BCB644B5E0392E2BFF8C7 /* Pods_WanPai.framework */; };
        8D8400D22A2F1430003AF6A2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */; };
        8D8400D42A2F1430003AF6A2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */; };
        8D8400D62A2F1430003AF6A2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400D52A2F1430003AF6A2 /* ViewController.swift */; };
        8D8400D92A2F1430003AF6A2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400D72A2F1430003AF6A2 /* Main.storyboard */; };
        8D8400DB2A2F1432003AF6A2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400DA2A2F1432003AF6A2 /* Assets.xcassets */; };
        8D8400DE2A2F1432003AF6A2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400DC2A2F1432003AF6A2 /* LaunchScreen.storyboard */; };
        8D8400E92A2F14A3003AF6A2 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */; };
        8D8400EA2A2F14A3003AF6A2 /* LoginVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */; };
        8DA901FF2A308E9200918C98 /* AgreentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA901FE2A308E9200918C98 /* AgreentView.swift */; };
        8DA902012A308ED100918C98 /* AgreentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DA902002A308ED100918C98 /* AgreentView.xib */; };
        8DAEB54A2A30593C00814766 /* BaseNav.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5482A30593B00814766 /* BaseNav.swift */; };
        8DAEB54B2A30593C00814766 /* BaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5492A30593C00814766 /* BaseVC.swift */; };
        8DAEB54E2A305A0100814766 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB54D2A305A0100814766 /* Colors.swift */; };
        8DAEB5502A305AEF00814766 /* Def.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB54F2A305AEF00814766 /* Def.swift */; };
        8DAEB5522A305B2D00814766 /* Fronts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5512A305B2D00814766 /* Fronts.swift */; };
        8DAEB5562A3062B800814766 /* CommonAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAEB5552A3062B800814766 /* CommonAlertView.swift */; };
        8DAEB5582A3062D900814766 /* CommonAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8DAEB5572A3062D900814766 /* CommonAlertView.xib */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
        0995405518BC2BFFEF866458 /* Pods-WanPai.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WanPai.release.xcconfig"; path = "Target Support Files/Pods-WanPai/Pods-WanPai.release.xcconfig"; sourceTree = "<group>"; };
        732365E0737559969E7CB12D /* Pods-WanPai.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WanPai.debug.xcconfig"; path = "Target Support Files/Pods-WanPai/Pods-WanPai.debug.xcconfig"; sourceTree = "<group>"; };
        8D8400CE2A2F1430003AF6A2 /* WanPai.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WanPai.app; sourceTree = BUILT_PRODUCTS_DIR; };
        8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
        8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
        8D8400D52A2F1430003AF6A2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
        8D8400D82A2F1430003AF6A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
        8D8400DA2A2F1432003AF6A2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
        8D8400DD2A2F1432003AF6A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
        8D8400DF2A2F1432003AF6A2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
        8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = "<group>"; };
        8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LoginVC.xib; sourceTree = "<group>"; };
        8DA901FE2A308E9200918C98 /* AgreentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgreentView.swift; sourceTree = "<group>"; };
        8DA902002A308ED100918C98 /* AgreentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AgreentView.xib; sourceTree = "<group>"; };
        8DAEB5482A30593B00814766 /* BaseNav.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseNav.swift; sourceTree = "<group>"; };
        8DAEB5492A30593C00814766 /* BaseVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseVC.swift; sourceTree = "<group>"; };
        8DAEB54D2A305A0100814766 /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = "<group>"; };
        8DAEB54F2A305AEF00814766 /* Def.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Def.swift; sourceTree = "<group>"; };
        8DAEB5512A305B2D00814766 /* Fronts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fronts.swift; sourceTree = "<group>"; };
        8DAEB5552A3062B800814766 /* CommonAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonAlertView.swift; sourceTree = "<group>"; };
        8DAEB5572A3062D900814766 /* CommonAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CommonAlertView.xib; sourceTree = "<group>"; };
        F12BCB644B5E0392E2BFF8C7 /* Pods_WanPai.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WanPai.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -31,17 +55,37 @@
            isa = PBXFrameworksBuildPhase;
            buildActionMask = 2147483647;
            files = (
                32D5FD87AB45829154125950 /* Pods_WanPai.framework in Frameworks */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
        05E59336D5F1D4F8EB60CA26 /* Frameworks */ = {
            isa = PBXGroup;
            children = (
                F12BCB644B5E0392E2BFF8C7 /* Pods_WanPai.framework */,
            );
            name = Frameworks;
            sourceTree = "<group>";
        };
        67BBE8279EFA21B415F5EE09 /* Pods */ = {
            isa = PBXGroup;
            children = (
                732365E0737559969E7CB12D /* Pods-WanPai.debug.xcconfig */,
                0995405518BC2BFFEF866458 /* Pods-WanPai.release.xcconfig */,
            );
            path = Pods;
            sourceTree = "<group>";
        };
        8D8400C52A2F1430003AF6A2 = {
            isa = PBXGroup;
            children = (
                8D8400D02A2F1430003AF6A2 /* WanPai */,
                8D8400CF2A2F1430003AF6A2 /* Products */,
                67BBE8279EFA21B415F5EE09 /* Pods */,
                05E59336D5F1D4F8EB60CA26 /* Frameworks */,
            );
            sourceTree = "<group>";
        };
@@ -56,15 +100,74 @@
        8D8400D02A2F1430003AF6A2 /* WanPai */ = {
            isa = PBXGroup;
            children = (
                8DAEB5532A30629500814766 /* Common */,
                8DAEB54C2A3059F700814766 /* Config */,
                8DAEB5472A30592800814766 /* Base */,
                8D8400E52A2F145D003AF6A2 /* Login */,
                8D8400D12A2F1430003AF6A2 /* AppDelegate.swift */,
                8D8400D32A2F1430003AF6A2 /* SceneDelegate.swift */,
                8D8400D52A2F1430003AF6A2 /* ViewController.swift */,
                8D8400D72A2F1430003AF6A2 /* Main.storyboard */,
                8D8400DA2A2F1432003AF6A2 /* Assets.xcassets */,
                8D8400DC2A2F1432003AF6A2 /* LaunchScreen.storyboard */,
                8D8400DF2A2F1432003AF6A2 /* Info.plist */,
            );
            path = WanPai;
            sourceTree = "<group>";
        };
        8D8400E52A2F145D003AF6A2 /* Login */ = {
            isa = PBXGroup;
            children = (
                8D8400E62A2F1467003AF6A2 /* VC */,
            );
            path = Login;
            sourceTree = "<group>";
        };
        8D8400E62A2F1467003AF6A2 /* VC */ = {
            isa = PBXGroup;
            children = (
                8D8400E72A2F14A3003AF6A2 /* LoginVC.swift */,
                8D8400E82A2F14A3003AF6A2 /* LoginVC.xib */,
            );
            path = VC;
            sourceTree = "<group>";
        };
        8DAEB5472A30592800814766 /* Base */ = {
            isa = PBXGroup;
            children = (
                8DAEB5482A30593B00814766 /* BaseNav.swift */,
                8DAEB5492A30593C00814766 /* BaseVC.swift */,
            );
            path = Base;
            sourceTree = "<group>";
        };
        8DAEB54C2A3059F700814766 /* Config */ = {
            isa = PBXGroup;
            children = (
                8DAEB54D2A305A0100814766 /* Colors.swift */,
                8DAEB54F2A305AEF00814766 /* Def.swift */,
                8DAEB5512A305B2D00814766 /* Fronts.swift */,
            );
            path = Config;
            sourceTree = "<group>";
        };
        8DAEB5532A30629500814766 /* Common */ = {
            isa = PBXGroup;
            children = (
                8DAEB5542A30629C00814766 /* View */,
            );
            path = Common;
            sourceTree = "<group>";
        };
        8DAEB5542A30629C00814766 /* View */ = {
            isa = PBXGroup;
            children = (
                8DAEB5552A3062B800814766 /* CommonAlertView.swift */,
                8DAEB5572A3062D900814766 /* CommonAlertView.xib */,
                8DA901FE2A308E9200918C98 /* AgreentView.swift */,
                8DA902002A308ED100918C98 /* AgreentView.xib */,
            );
            name = View;
            path = "../New Group/View";
            sourceTree = "<group>";
        };
/* End PBXGroup section */
@@ -74,9 +177,11 @@
            isa = PBXNativeTarget;
            buildConfigurationList = 8D8400E22A2F1432003AF6A2 /* Build configuration list for PBXNativeTarget "WanPai" */;
            buildPhases = (
                ED530B56EC46073C093BBEA9 /* [CP] Check Pods Manifest.lock */,
                8D8400CA2A2F1430003AF6A2 /* Sources */,
                8D8400CB2A2F1430003AF6A2 /* Frameworks */,
                8D8400CC2A2F1430003AF6A2 /* Resources */,
                FE57E4383C5D7AA7AAE198DF /* [CP] Embed Pods Frameworks */,
            );
            buildRules = (
            );
@@ -127,19 +232,71 @@
            files = (
                8D8400DE2A2F1432003AF6A2 /* LaunchScreen.storyboard in Resources */,
                8D8400DB2A2F1432003AF6A2 /* Assets.xcassets in Resources */,
                8D8400EA2A2F14A3003AF6A2 /* LoginVC.xib in Resources */,
                8D8400D92A2F1430003AF6A2 /* Main.storyboard in Resources */,
                8DAEB5582A3062D900814766 /* CommonAlertView.xib in Resources */,
                8DA902012A308ED100918C98 /* AgreentView.xib in Resources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
        ED530B56EC46073C093BBEA9 /* [CP] Check Pods Manifest.lock */ = {
            isa = PBXShellScriptBuildPhase;
            buildActionMask = 2147483647;
            files = (
            );
            inputFileListPaths = (
            );
            inputPaths = (
                "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
                "${PODS_ROOT}/Manifest.lock",
            );
            name = "[CP] Check Pods Manifest.lock";
            outputFileListPaths = (
            );
            outputPaths = (
                "$(DERIVED_FILE_DIR)/Pods-WanPai-checkManifestLockResult.txt",
            );
            runOnlyForDeploymentPostprocessing = 0;
            shellPath = /bin/sh;
            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";
            showEnvVarsInLog = 0;
        };
        FE57E4383C5D7AA7AAE198DF /* [CP] Embed Pods Frameworks */ = {
            isa = PBXShellScriptBuildPhase;
            buildActionMask = 2147483647;
            files = (
            );
            inputFileListPaths = (
                "${PODS_ROOT}/Target Support Files/Pods-WanPai/Pods-WanPai-frameworks-${CONFIGURATION}-input-files.xcfilelist",
            );
            name = "[CP] Embed Pods Frameworks";
            outputFileListPaths = (
                "${PODS_ROOT}/Target Support Files/Pods-WanPai/Pods-WanPai-frameworks-${CONFIGURATION}-output-files.xcfilelist",
            );
            runOnlyForDeploymentPostprocessing = 0;
            shellPath = /bin/sh;
            shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-WanPai/Pods-WanPai-frameworks.sh\"\n";
            showEnvVarsInLog = 0;
        };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
        8D8400CA2A2F1430003AF6A2 /* Sources */ = {
            isa = PBXSourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                8D8400D62A2F1430003AF6A2 /* ViewController.swift in Sources */,
                8DAEB54B2A30593C00814766 /* BaseVC.swift in Sources */,
                8DA901FF2A308E9200918C98 /* AgreentView.swift in Sources */,
                8DAEB5562A3062B800814766 /* CommonAlertView.swift in Sources */,
                8DAEB54E2A305A0100814766 /* Colors.swift in Sources */,
                8DAEB54A2A30593C00814766 /* BaseNav.swift in Sources */,
                8DAEB5522A305B2D00814766 /* Fronts.swift in Sources */,
                8D8400D22A2F1430003AF6A2 /* AppDelegate.swift in Sources */,
                8D8400E92A2F14A3003AF6A2 /* LoginVC.swift in Sources */,
                8DAEB5502A305AEF00814766 /* Def.swift in Sources */,
                8D8400D42A2F1430003AF6A2 /* SceneDelegate.swift in Sources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
@@ -282,11 +439,13 @@
        };
        8D8400E32A2F1432003AF6A2 /* Debug */ = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = 732365E0737559969E7CB12D /* Pods-WanPai.debug.xcconfig */;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
                CODE_SIGN_STYLE = Automatic;
                CODE_SIGN_STYLE = Manual;
                CURRENT_PROJECT_VERSION = 1;
                DEVELOPMENT_TEAM = "";
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = WanPai/Info.plist;
                INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -294,13 +453,15 @@
                INFOPLIST_KEY_UIMainStoryboardFile = Main;
                INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
                INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                LD_RUNPATH_SEARCH_PATHS = (
                    "$(inherited)",
                    "@executable_path/Frameworks",
                );
                MARKETING_VERSION = 1.0;
                PRODUCT_BUNDLE_IDENTIFIER = com.sinata.wanpai.WanPai;
                PRODUCT_BUNDLE_IDENTIFIER = com.sinata.weparklife;
                PRODUCT_NAME = "$(TARGET_NAME)";
                PROVISIONING_PROFILE_SPECIFIER = "";
                SWIFT_EMIT_LOC_STRINGS = YES;
                SWIFT_VERSION = 5.0;
                TARGETED_DEVICE_FAMILY = "1,2";
@@ -309,11 +470,13 @@
        };
        8D8400E42A2F1432003AF6A2 /* Release */ = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = 0995405518BC2BFFEF866458 /* Pods-WanPai.release.xcconfig */;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
                CODE_SIGN_STYLE = Automatic;
                CODE_SIGN_STYLE = Manual;
                CURRENT_PROJECT_VERSION = 1;
                DEVELOPMENT_TEAM = "";
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = WanPai/Info.plist;
                INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -321,13 +484,15 @@
                INFOPLIST_KEY_UIMainStoryboardFile = Main;
                INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
                INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                LD_RUNPATH_SEARCH_PATHS = (
                    "$(inherited)",
                    "@executable_path/Frameworks",
                );
                MARKETING_VERSION = 1.0;
                PRODUCT_BUNDLE_IDENTIFIER = com.sinata.wanpai.WanPai;
                PRODUCT_BUNDLE_IDENTIFIER = com.sinata.weparklife;
                PRODUCT_NAME = "$(TARGET_NAME)";
                PROVISIONING_PROFILE_SPECIFIER = "";
                SWIFT_EMIT_LOC_STRINGS = YES;
                SWIFT_VERSION = 5.0;
                TARGETED_DEVICE_FAMILY = "1,2";
WanPai.xcworkspace/contents.xcworkspacedata
New file
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:WanPai.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:Pods/Pods.xcodeproj">
   </FileRef>
</Workspace>
WanPai/AppDelegate.swift
@@ -13,7 +13,7 @@
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }
WanPai/Assets.xcassets/Btns/Contents.json
New file
@@ -0,0 +1,6 @@
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_back.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_back@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_back@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_back.imageset/btn_back@2x.png
WanPai/Assets.xcassets/Btns/btn_back.imageset/btn_back@3x.png
WanPai/Assets.xcassets/Btns/btn_close.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_close@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_close@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_close.imageset/btn_close@2x.png
WanPai/Assets.xcassets/Btns/btn_close.imageset/btn_close@3x.png
WanPai/Assets.xcassets/Btns/btn_select.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_select@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_select@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_select.imageset/btn_select@2x.png
WanPai/Assets.xcassets/Btns/btn_select.imageset/btn_select@3x.png
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_select_u@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_select_u@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/btn_select_u@2x.png
WanPai/Assets.xcassets/Btns/btn_select_u.imageset/btn_select_u@3x.png
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_wechat@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_wechat@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/btn_wechat@2x.png
WanPai/Assets.xcassets/Btns/btn_wechat.imageset/btn_wechat@3x.png
WanPai/Assets.xcassets/Colors/515151.colorset/Contents.json
New file
@@ -0,0 +1,20 @@
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0.318",
          "green" : "0.318",
          "red" : "0.318"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Colors/Contents.json
New file
@@ -0,0 +1,6 @@
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Colors/F6F6F6.colorset/Contents.json
New file
@@ -0,0 +1,20 @@
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0.965",
          "green" : "0.965",
          "red" : "0.965"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Colors/FE6E0D.colorset/Contents.json
New file
@@ -0,0 +1,23 @@
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0.051",
          "green" : "0.431",
          "red" : "0.996"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "properties" : {
    "localizable" : true
  }
}
WanPai/Assets.xcassets/Icons/Contents.json
New file
@@ -0,0 +1,6 @@
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_login_code@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_login_code@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/icon_login_code@2x.png
WanPai/Assets.xcassets/Icons/icon_login_code.imageset/icon_login_code@3x.png
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_login_eye@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_login_eye@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/icon_login_eye@2x.png
WanPai/Assets.xcassets/Icons/icon_login_eye.imageset/icon_login_eye@3x.png
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_login_eye_c@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_login_eye_c@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/icon_login_eye_c@2x.png
WanPai/Assets.xcassets/Icons/icon_login_eye_c.imageset/icon_login_eye_c@3x.png
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_login_phone@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_login_phone@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/icon_login_phone@2x.png
WanPai/Assets.xcassets/Icons/icon_login_phone.imageset/icon_login_phone@3x.png
WanPai/Assets.xcassets/icon_LOGO.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_LOGO@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_LOGO@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
WanPai/Assets.xcassets/icon_LOGO.imageset/icon_LOGO@2x.png
WanPai/Assets.xcassets/icon_LOGO.imageset/icon_LOGO@3x.png
WanPai/Base/BaseNav.swift
New file
@@ -0,0 +1,81 @@
//
//  BaseNavigationController.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import JQTools
class BaseNav: UINavigationController,UINavigationControllerDelegate {
    private var popDelegate: UIGestureRecognizerDelegate?
    open override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationBar.barTintColor = .white
        self.navigationBar.titleTextAttributes = [.font:UIFont.systemFont(ofSize: 18, weight: .medium), .foregroundColor:UIColor.black]
        self.navigationBar.tintColor = UIColor.black
        self.navigationBar.shadowImage = UIImage()
        self.navigationBar.isTranslucent = true
        self.delegate = self
        self.popDelegate = self.interactivePopGestureRecognizer?.delegate
        if #available(iOS 15.0, *) {
            let scrollBar = UINavigationBarAppearance()
            scrollBar.configureWithOpaqueBackground()
            scrollBar.backgroundEffect = nil
            scrollBar.shadowColor = nil
            scrollBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            scrollBar.backgroundColor = UIColor.clear
            let img = UIImage.jq_gradient([UIColor.black.withAlphaComponent(0.4),UIColor.clear], size: CGSize(width: JQ_ScreenW, height: JQ_NavBarHeight), radius: 0, locations: [0,1], direction: .vertical)
            let standardBar = UINavigationBarAppearance()
            standardBar.configureWithOpaqueBackground()
            standardBar.backgroundEffect = nil
            standardBar.shadowColor = nil
            standardBar.shadowImage = nil
            standardBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            standardBar.backgroundColor = UIColor.clear
            standardBar.backgroundImage = img
            navigationBar.scrollEdgeAppearance = scrollBar //顶部透明
            navigationBar.standardAppearance = standardBar
        }else {
            navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
        }
    }
    open override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        viewController.hidesBottomBarWhenPushed = true
        super.pushViewController(viewController, animated: animated)
    }
    open func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    }
    //侧滑
    public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        if  viewController == self.viewControllers[0] {
            self.interactivePopGestureRecognizer!.delegate = self.popDelegate
        }else{
            self.interactivePopGestureRecognizer!.delegate = nil
        }
    }
    open override var childForStatusBarHidden: UIViewController? {
        return self.topViewController
    }
    open override var childForStatusBarStyle: UIViewController? {
        return self.topViewController
    }
}
WanPai/Base/BaseVC.swift
New file
@@ -0,0 +1,90 @@
//
//  BaseViewController.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import RxSwift
import RxRelay
import RxCocoa
class BaseVC: UIViewController {
    var disposeBag:DisposeBag!
    var yy_popBlock:(() -> Void)?
    open var nav_back_img:UIImage = UIImage.init(named: "btn_back") ?? UIImage.init() {
        didSet {
            let btn = navigationItem.leftBarButtonItem?.customView as! UIButton
            btn.setImage(nav_back_img, for: .normal)
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        disposeBag = DisposeBag()
        setUI()
        setRx()
        setData()
        if navigationController?.viewControllers.count ?? 0 > 1{
            navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item
        }
    }
    func setRx(){
        NotificationCenter.default.rx.notification(UIDevice.orientationDidChangeNotification).take(until:self.rx.deallocated).subscribe {[weak self] _ in
            let orient = UIDevice.current.orientation
            var desc = ""
//            switch orient {
//                case .portrait :desc = Localized("屏幕正常竖向")
//                case .portraitUpsideDown:desc = Localized("屏幕倒立")
//                case .landscapeLeft:desc = Localized("屏幕左旋转")
//                case .landscapeRight:desc = Localized("屏幕右旋转")
//                default:break
//            }
            if !desc.isEmpty{
                self?.receiverNotification(orient: orient, desc: desc)
            }
        }.disposed(by: disposeBag)
    }
    func setUI(){
        view.backgroundColor = .white
    }
    func setData(){
    }
    func refreshUI(){}
    func push(vc:UIViewController){
        navigationController?.pushViewController(vc, animated: true)
    }
    @objc fileprivate func backItemEvent() {
        // 拦截pop事件
        if (yy_popBlock != nil) {
            yy_popBlock?()
            return
        }
        navigationController?.popViewController(animated: true)
    }
    deinit {
        LogInfo(String(format: "%@ 已释放", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!))
    }
    /// 屏幕旋转:当设备方向改变,需要对UI进行重新布局,子类重写此方法
    @objc open func receiverNotification(orient:UIDeviceOrientation,desc:String){
        LogInfo(desc)
        refreshUI()
    }
}
WanPai/Config/Colors.swift
New file
@@ -0,0 +1,12 @@
//
//  Colors.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/7.
//
import UIKit
import JQTools
let Def_ThemeColor:UIColor = UIColor(hexStr: "#FD8802")
let Def_NavFontColor = UIColor(hexStr: "#FD8802")
WanPai/Config/Def.swift
New file
@@ -0,0 +1,42 @@
//
//  Def.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/7.
//
import Foundation
import UIKit
let app = UIApplication.shared.delegate as! AppDelegate
var screnDelegate:SceneDelegate? = {
    var uiScreen:UIScene?
    UIApplication.shared.connectedScenes.forEach { scenes in
        uiScreen = scenes
    }
    return (uiScreen?.delegate as? SceneDelegate)
}()
func LogSuccess(_ items:Any...,separator:String=" ",file:String=#file,function:String=#function,line:Int=#line){
#if DEBUG
    let file = (file as NSString).lastPathComponent.split(separator: ".").first!;
    print("✅✅✅ SUCCESS: \(file)  \(function) [Line: \(line)]: \(items)",separator);
#endif
}
func LogError(_ items:Any...,separator:String=" ",file:String=#file,function:String=#function,line:Int=#line){
#if DEBUG
    let file = (file as NSString).lastPathComponent.split(separator: ".").first!;
    print("❌❌❌ ERROR: \(file)  \(function) [Line: \(line)]: \(items)",separator);
#endif
}
func LogInfo(_ items:Any...,separator:String=" ",file:String=#file,function:String=#function,line:Int=#line){
#if DEBUG
    let file = (file as NSString).lastPathComponent.split(separator: ".").first!;
    print("⚠️⚠️⚠️INFO: \(file)  \(function) [Line: \(line)]: \(items)",separator);
#endif
}
WanPai/Config/Fronts.swift
New file
@@ -0,0 +1,10 @@
//
//  Fronts.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/7.
//
import UIKit
let Def_NavFont:UIFont = UIFont.systemFont(ofSize: 16, weight: .medium)
WanPai/Login/VC/LoginVC.swift
New file
@@ -0,0 +1,119 @@
//
//  LoginVC.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/6.
//
import UIKit
import RxRelay
import QMUIKit
private enum LoginType{
    case pwd,smsCode
}
class LoginVC: BaseVC {
    @IBOutlet weak var btn_pwdLogin: UIButton!
    @IBOutlet weak var btn_smsCodeLogin: UIButton!
    @IBOutlet weak var tf_phone: QMUITextField!
    @IBOutlet weak var tf_verify: QMUITextField!
    @IBOutlet weak var btn_getCode: UIButton!
    @IBOutlet weak var btn_eye: UIButton!
    @IBOutlet weak var btn_wechat: QMUIButton!
    @IBOutlet weak var textView_treaty: UITextView!
    private let loginType = BehaviorRelay<LoginType>(value: .pwd)
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func setUI() {
        btn_wechat.imagePosition = .top
        btn_wechat.spacingBetweenImageAndTitle = 8
        textView_treaty.isEditable = false
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineBreakMode = NSLineBreakMode.byCharWrapping
        let content = "我已阅读并同意《隐私协议》《用户协议》《运动安全告知书》"
        let attribute = NSMutableAttributedString(string: content)
        attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://treaty")!], range: content.jq_subRange("《隐私协议》")!)
        attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://user")!], range: content.jq_subRange("《用户协议》")!)
        attribute.addAttributes([NSAttributedString.Key.link:URL(string: "tip://sportSafety")!], range: content.jq_subRange("《运动安全告知书》")!)
        attribute.addAttributes([.paragraphStyle:paragraphStyle], range: _NSRange(location: 0, length: content.count))
        self.textView_treaty.attributedText = attribute
        self.textView_treaty.delegate = self
    }
    override func setRx() {
        loginType.subscribe(onNext: { [weak self] type in
            guard let weakSelf = self else {return}
            weakSelf.tf_verify.text = ""
            weakSelf.btn_getCode.isHidden = type == .pwd
            weakSelf.btn_eye.isHidden = type == .smsCode
            switch type {
            case .pwd:
                weakSelf.tf_verify.isSecureTextEntry = !weakSelf.btn_eye.isSelected
                weakSelf.tf_verify.keyboardType = .default
                weakSelf.tf_verify.maximumTextLength = 30
                weakSelf.tf_verify.placeholder = "请输入密码"
            case .smsCode:
                weakSelf.tf_verify.isSecureTextEntry = false
                weakSelf.tf_verify.keyboardType = .numberPad
                weakSelf.tf_verify.maximumTextLength = 6
                weakSelf.tf_verify.placeholder = "请输入验证码"
            }
        }).disposed(by: disposeBag)
    }
    @IBAction func exchangeLoginTypeAction(_ sender: UIButton) {
        btn_pwdLogin.isSelected = sender.tag == 10
        btn_smsCodeLogin.isSelected = sender.tag == 11
        let type:LoginType = sender.tag == 10 ? .pwd:.smsCode
        loginType.accept(type)
    }
    @IBAction func eyeAction(_ sender: UIButton) {
        sender.isSelected = !sender.isSelected
        if loginType.value == .pwd{
            tf_verify.isSecureTextEntry = !sender.isSelected
        }
    }
    @IBAction func readAgreentAction(_ sender: UIButton) {
        sender.isSelected = !sender.isSelected
    }
    @IBAction func wechatLoginAcion(_ sender: QMUIButton) {
//        CommonAlertView.show(title: "提示", content: "11231231231231231")
    }
}
extension LoginVC:UITextViewDelegate{
    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
        if let str = URL.host(percentEncoded: true){
            switch str {
            case "treaty":
                AgreentView.show(type: .privacy)
            case "user":
                AgreentView.show(type: .user)
            case "sportSafety":
                AgreentView.show(type: .safe)
            default:break
            }
            return true
        }
        return false
    }
}
WanPai/Login/VC/LoginVC.xib
New file
@@ -0,0 +1,362 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LoginVC" customModule="WanPai" customModuleProvider="target">
            <connections>
                <outlet property="btn_eye" destination="bft-9v-fd2" id="6lv-dX-cmp"/>
                <outlet property="btn_getCode" destination="Peu-H2-2Bj" id="Tos-ZB-3it"/>
                <outlet property="btn_pwdLogin" destination="fEr-ZJ-pMj" id="adD-fy-ix2"/>
                <outlet property="btn_smsCodeLogin" destination="Bgw-Aw-FZm" id="Jde-9o-6wl"/>
                <outlet property="btn_wechat" destination="AA4-J4-8iR" id="Rdp-vy-GdD"/>
                <outlet property="textView_treaty" destination="BqB-Az-Ez1" id="zWC-fQ-SsK"/>
                <outlet property="tf_phone" destination="dXR-3c-p7o" id="7Dm-0N-TNe"/>
                <outlet property="tf_verify" destination="yYG-aW-Yzi" id="v9Z-15-f29"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_LOGO" translatesAutoresizingMaskIntoConstraints="NO" id="38m-zi-L1d">
                    <rect key="frame" x="122.66666666666669" y="79" width="148" height="72"/>
                </imageView>
                <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cAB-q2-f9Z">
                    <rect key="frame" x="113.33333333333333" y="183" width="166.66666666666669" height="25"/>
                    <subviews>
                        <button opaque="NO" tag="10" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fEr-ZJ-pMj">
                            <rect key="frame" x="0.0" y="0.0" width="74" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="密码登录">
                                <color key="titleColor" name="515151"/>
                            </state>
                            <state key="selected">
                                <color key="titleColor" name="FE6E0D"/>
                            </state>
                            <connections>
                                <action selector="exchangeLoginTypeAction:" destination="-1" eventType="touchUpInside" id="12W-6X-lBL"/>
                            </connections>
                        </button>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="|" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QH3-h0-THD">
                            <rect key="frame" x="74.000000000000014" y="0.0" width="18.666666666666671" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                            <color key="textColor" name="FE6E0D"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" tag="11" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bgw-Aw-FZm">
                            <rect key="frame" x="92.666666666666686" y="0.0" width="74" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="短信登录">
                                <color key="titleColor" name="515151"/>
                            </state>
                            <state key="selected">
                                <color key="titleColor" name="FE6E0D"/>
                            </state>
                            <connections>
                                <action selector="exchangeLoginTypeAction:" destination="-1" eventType="touchUpInside" id="yXg-QX-GZ4"/>
                            </connections>
                        </button>
                    </subviews>
                    <constraints>
                        <constraint firstAttribute="height" constant="25" id="xeG-sS-w3k"/>
                    </constraints>
                </stackView>
                <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ej3-Zy-UxP">
                    <rect key="frame" x="140.33333333333334" y="351" width="112.33333333333334" height="25"/>
                    <subviews>
                        <button opaque="NO" contentMode="scaleToFill" selected="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hI1-WH-dqa">
                            <rect key="frame" x="0.0" y="0.0" width="50" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="修改密码">
                                <color key="titleColor" name="515151"/>
                            </state>
                            <state key="selected">
                                <color key="titleColor" name="FE6E0D"/>
                            </state>
                        </button>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="|" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pxy-q7-vhk">
                            <rect key="frame" x="50" y="0.0" width="12.333333333333336" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" name="FE6E0D"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="anK-cQ-sSd">
                            <rect key="frame" x="62.333333333333314" y="0.0" width="50" height="25"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="忘记密码">
                                <color key="titleColor" name="FE6E0D"/>
                            </state>
                            <state key="selected">
                                <color key="titleColor" name="FE6E0D"/>
                            </state>
                        </button>
                    </subviews>
                    <constraints>
                        <constraint firstAttribute="height" constant="25" id="fsW-mR-FHo"/>
                    </constraints>
                </stackView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ixo-tJ-9cE">
                    <rect key="frame" x="40" y="238" width="313" height="40"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_phone" translatesAutoresizingMaskIntoConstraints="NO" id="HXD-J5-UNt">
                            <rect key="frame" x="31" y="11" width="16" height="18"/>
                        </imageView>
                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="dXR-3c-p7o" customClass="QMUITextField">
                            <rect key="frame" x="75" y="0.0" width="228" height="40"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength">
                                    <integer key="value" value="11"/>
                                </userDefinedRuntimeAttribute>
                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
                                    <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </textField>
                    </subviews>
                    <color key="backgroundColor" red="0.96470588235294119" green="0.96470588235294119" blue="0.96470588235294119" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="40" id="8k3-YG-84m"/>
                        <constraint firstItem="HXD-J5-UNt" firstAttribute="leading" secondItem="ixo-tJ-9cE" secondAttribute="leading" constant="31" id="LYf-PT-yCY"/>
                        <constraint firstAttribute="trailing" secondItem="dXR-3c-p7o" secondAttribute="trailing" constant="10" id="crG-8x-lY4"/>
                        <constraint firstItem="dXR-3c-p7o" firstAttribute="top" secondItem="ixo-tJ-9cE" secondAttribute="top" id="ctp-CL-yYd"/>
                        <constraint firstItem="HXD-J5-UNt" firstAttribute="centerY" secondItem="ixo-tJ-9cE" secondAttribute="centerY" id="tAB-wj-wWR"/>
                        <constraint firstItem="dXR-3c-p7o" firstAttribute="leading" secondItem="HXD-J5-UNt" secondAttribute="trailing" constant="28" id="wdm-3k-ttt"/>
                        <constraint firstAttribute="bottom" secondItem="dXR-3c-p7o" secondAttribute="bottom" id="xLe-cn-XTJ"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="20"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1LE-kf-RCn">
                    <rect key="frame" x="40" y="298" width="313" height="40"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_login_code" translatesAutoresizingMaskIntoConstraints="NO" id="0Nl-D8-jVF">
                            <rect key="frame" x="31" y="11" width="15" height="18"/>
                        </imageView>
                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="yYG-aW-Yzi" customClass="QMUITextField">
                            <rect key="frame" x="74" y="0.0" width="190" height="40"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <textInputTraits key="textInputTraits" spellCheckingType="no" keyboardType="alphabet" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" smartQuotesType="no"/>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="number" keyPath="maximumTextLength">
                                    <integer key="value" value="11"/>
                                </userDefinedRuntimeAttribute>
                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
                                    <color key="value" red="0.0" green="0.0" blue="0.0" alpha="0.40000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                        </textField>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bft-9v-fd2">
                            <rect key="frame" x="274" y="9" width="22" height="22"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" image="icon_login_eye_c"/>
                            <state key="selected" image="icon_login_eye"/>
                            <connections>
                                <action selector="eyeAction:" destination="-1" eventType="touchUpInside" id="tAb-bY-w9Q"/>
                            </connections>
                        </button>
                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Peu-H2-2Bj">
                            <rect key="frame" x="231" y="6.6666666666666856" width="62" height="27"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="获取验证码">
                                <color key="titleColor" red="0.38823529411764707" green="0.74117647058823533" blue="0.85882352941176465" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            </state>
                        </button>
                    </subviews>
                    <color key="backgroundColor" red="0.96470588239999999" green="0.96470588239999999" blue="0.96470588239999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstItem="0Nl-D8-jVF" firstAttribute="leading" secondItem="1LE-kf-RCn" secondAttribute="leading" constant="31" id="0di-OZ-7cb"/>
                        <constraint firstItem="bft-9v-fd2" firstAttribute="centerY" secondItem="0Nl-D8-jVF" secondAttribute="centerY" id="1fW-nw-j1L"/>
                        <constraint firstItem="yYG-aW-Yzi" firstAttribute="leading" secondItem="0Nl-D8-jVF" secondAttribute="trailing" constant="28" id="DTC-n0-FXH"/>
                        <constraint firstAttribute="trailing" secondItem="Peu-H2-2Bj" secondAttribute="trailing" constant="20" id="G0A-B4-LL9"/>
                        <constraint firstItem="bft-9v-fd2" firstAttribute="leading" secondItem="yYG-aW-Yzi" secondAttribute="trailing" constant="10" id="M9d-MT-Vu5"/>
                        <constraint firstItem="yYG-aW-Yzi" firstAttribute="top" secondItem="1LE-kf-RCn" secondAttribute="top" id="NlC-lV-gcr"/>
                        <constraint firstAttribute="height" constant="40" id="Vlt-Kr-Hnl"/>
                        <constraint firstAttribute="trailing" secondItem="bft-9v-fd2" secondAttribute="trailing" constant="17" id="ZCV-Hr-1WF"/>
                        <constraint firstItem="Peu-H2-2Bj" firstAttribute="centerY" secondItem="1LE-kf-RCn" secondAttribute="centerY" id="nLX-2P-LLJ"/>
                        <constraint firstItem="0Nl-D8-jVF" firstAttribute="centerY" secondItem="1LE-kf-RCn" secondAttribute="centerY" id="nru-Vh-7U0"/>
                        <constraint firstAttribute="bottom" secondItem="yYG-aW-Yzi" secondAttribute="bottom" id="y4n-O8-i1l"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="20"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="A58-cL-JDg">
                    <rect key="frame" x="40" y="404" width="146.66666666666666" height="40"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="40" id="y9B-Xu-Q5i"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="注册">
                        <color key="titleColor" name="FE6E0D"/>
                    </state>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="color" keyPath="ld_borderColorXIB">
                            <color key="value" name="FE6E0D"/>
                        </userDefinedRuntimeAttribute>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_borderWidthXIB">
                            <real key="value" value="1"/>
                        </userDefinedRuntimeAttribute>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="20"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </button>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NQ0-2r-DbZ">
                    <rect key="frame" x="206.66666666666663" y="404" width="146.33333333333337" height="40"/>
                    <color key="backgroundColor" name="FE6E0D"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="40" id="jrh-JX-bIa"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="登录">
                        <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="20"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </button>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jpR-VA-PYM">
                    <rect key="frame" x="42" y="464" width="20" height="22"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="22" id="2ZC-Li-D7d"/>
                        <constraint firstAttribute="width" constant="20" id="rRu-Ef-yCE"/>
                    </constraints>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" image="btn_select_u"/>
                    <state key="selected" image="btn_select"/>
                    <connections>
                        <action selector="readAgreentAction:" destination="-1" eventType="touchUpInside" id="c55-Qk-ocI"/>
                    </connections>
                </button>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mZh-Vi-57o">
                    <rect key="frame" x="0.0" y="499" width="393" height="319"/>
                    <subviews>
                        <stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ikk-sm-4Sm">
                            <rect key="frame" x="146.66666666666666" y="179" width="100" height="50"/>
                            <subviews>
                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AA4-J4-8iR" customClass="QMUIButton">
                                    <rect key="frame" x="0.0" y="0.0" width="100" height="50"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" title="微信登录" image="btn_wechat">
                                        <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    </state>
                                    <connections>
                                        <action selector="wechatLoginAcion:" destination="-1" eventType="touchUpInside" id="YOh-qo-ygR"/>
                                    </connections>
                                </button>
                            </subviews>
                        </stackView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="其他登录方式" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cqp-2p-rC6">
                            <rect key="frame" x="159.66666666666666" y="147" width="73.666666666666657" height="17"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="17" id="DBH-wO-NS0"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <color key="textColor" red="0.70196078431372544" green="0.70196078431372544" blue="0.70196078431372544" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="ikk-sm-4Sm" firstAttribute="centerX" secondItem="cqp-2p-rC6" secondAttribute="centerX" id="0xX-m5-mrX"/>
                        <constraint firstAttribute="bottom" secondItem="ikk-sm-4Sm" secondAttribute="bottom" constant="90" id="egz-uu-9vA"/>
                        <constraint firstItem="ikk-sm-4Sm" firstAttribute="top" secondItem="cqp-2p-rC6" secondAttribute="bottom" constant="15" id="m32-Te-28i"/>
                        <constraint firstItem="ikk-sm-4Sm" firstAttribute="centerX" secondItem="mZh-Vi-57o" secondAttribute="centerX" id="sxJ-Mz-EGJ"/>
                    </constraints>
                </view>
                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="我已阅读并同意《隐私协议》《用户协议》《运动安全告知书》" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="BqB-Az-Ez1">
                    <rect key="frame" x="64" y="459" width="287" height="35"/>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="35" id="rzR-7J-NJs"/>
                    </constraints>
                    <color key="textColor" systemColor="labelColor"/>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                </textView>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="Ej3-Zy-UxP" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="06n-Gd-wg4"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="mZh-Vi-57o" secondAttribute="trailing" id="5PZ-du-NJ4"/>
                <constraint firstItem="cAB-q2-f9Z" firstAttribute="top" secondItem="38m-zi-L1d" secondAttribute="bottom" constant="32" id="BJR-4U-Mqg"/>
                <constraint firstItem="1LE-kf-RCn" firstAttribute="leading" secondItem="ixo-tJ-9cE" secondAttribute="leading" id="C94-6l-8Sz"/>
                <constraint firstItem="NQ0-2r-DbZ" firstAttribute="centerY" secondItem="A58-cL-JDg" secondAttribute="centerY" id="ELW-lb-UMU"/>
                <constraint firstItem="cAB-q2-f9Z" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="F8y-Ql-6Fl"/>
                <constraint firstItem="NQ0-2r-DbZ" firstAttribute="width" secondItem="A58-cL-JDg" secondAttribute="width" id="GKs-an-eCI"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="NQ0-2r-DbZ" secondAttribute="trailing" constant="40" id="KNO-0e-Vry"/>
                <constraint firstItem="1LE-kf-RCn" firstAttribute="trailing" secondItem="ixo-tJ-9cE" secondAttribute="trailing" id="LYX-CC-Ine"/>
                <constraint firstItem="NQ0-2r-DbZ" firstAttribute="leading" secondItem="A58-cL-JDg" secondAttribute="trailing" constant="20" id="Le9-B6-pN1"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="BqB-Az-Ez1" secondAttribute="trailing" constant="42" id="MWC-RO-gsY"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="mZh-Vi-57o" secondAttribute="bottom" id="MWu-3v-W4I"/>
                <constraint firstItem="mZh-Vi-57o" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="T42-Uk-S6N"/>
                <constraint firstItem="ixo-tJ-9cE" firstAttribute="top" secondItem="cAB-q2-f9Z" secondAttribute="bottom" constant="30" id="THc-e6-Bko"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="ixo-tJ-9cE" secondAttribute="trailing" constant="40" id="TzU-Nh-o64"/>
                <constraint firstItem="jpR-VA-PYM" firstAttribute="top" secondItem="A58-cL-JDg" secondAttribute="bottom" constant="20" id="Ujc-Kg-bWe"/>
                <constraint firstItem="mZh-Vi-57o" firstAttribute="top" secondItem="BqB-Az-Ez1" secondAttribute="bottom" constant="5" id="dMK-2O-N4o"/>
                <constraint firstItem="1LE-kf-RCn" firstAttribute="top" secondItem="ixo-tJ-9cE" secondAttribute="bottom" constant="20" id="h5h-2F-FmM"/>
                <constraint firstItem="38m-zi-L1d" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="20" id="iPe-ep-hvl"/>
                <constraint firstItem="A58-cL-JDg" firstAttribute="top" secondItem="Ej3-Zy-UxP" secondAttribute="bottom" constant="28" id="j1g-QM-Spl"/>
                <constraint firstItem="Ej3-Zy-UxP" firstAttribute="top" secondItem="1LE-kf-RCn" secondAttribute="bottom" constant="13" id="lu7-1L-Dgy"/>
                <constraint firstItem="A58-cL-JDg" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="mFV-rW-Mho"/>
                <constraint firstItem="38m-zi-L1d" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="vTc-mW-ZlI"/>
                <constraint firstItem="jpR-VA-PYM" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="42" id="vWq-ms-r59"/>
                <constraint firstItem="BqB-Az-Ez1" firstAttribute="leading" secondItem="jpR-VA-PYM" secondAttribute="trailing" constant="2" id="wEr-Lg-muD"/>
                <constraint firstItem="ixo-tJ-9cE" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="40" id="wT0-yN-RM8"/>
                <constraint firstItem="jpR-VA-PYM" firstAttribute="top" secondItem="BqB-Az-Ez1" secondAttribute="top" constant="5" id="x9D-NQ-ac9"/>
            </constraints>
            <point key="canvasLocation" x="136.64122137404578" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="btn_select" width="20" height="20"/>
        <image name="btn_select_u" width="20" height="20"/>
        <image name="btn_wechat" width="50" height="50"/>
        <image name="icon_LOGO" width="148" height="72"/>
        <image name="icon_login_code" width="15" height="18"/>
        <image name="icon_login_eye" width="23" height="14"/>
        <image name="icon_login_eye_c" width="22" height="9"/>
        <image name="icon_login_phone" width="16" height="18"/>
        <namedColor name="515151">
            <color red="0.31799998879432678" green="0.31799998879432678" blue="0.31799998879432678" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <namedColor name="FE6E0D">
            <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="labelColor">
            <color red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </systemColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
WanPai/New Group/View/AgreentView.swift
New file
@@ -0,0 +1,58 @@
//
//  AgreentView.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/7.
//
import UIKit
import JQTools
class AgreentView: UIView,JQNibView{
    enum AgreentType {
        case user
        case safe
        case privacy
    }
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var bottom_cons: NSLayoutConstraint!
    private var type:AgreentType!
    override func awakeFromNib() {
        super.awakeFromNib()
        bottom_cons.constant = -(JQ_ScreenH - JQ_ScreenW * 0.9)
        layoutIfNeeded()
    }
    static func show(type:AgreentType){
        let alertView = AgreentView.jq_loadNibView()
        alertView.frame = screnDelegate?.window?.frame ?? .zero
        alertView.type = type
        screnDelegate?.window?.addSubview(alertView)
        alertView.bottom_cons.constant = 0
        UIView.animate(withDuration: 0.4) {
            alertView.layoutIfNeeded()
        }
    }
    override func layoutSubviews() {
        super.layoutSubviews()
        view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20)
    }
    @IBAction func completeAction(_ sender: UIButton) {
        bottom_cons.constant = -(JQ_ScreenH - JQ_ScreenW * 0.9)
        UIView.animate(withDuration: 0.4) {
            self.layoutIfNeeded()
            self.alpha = 0
        }completion: { _ in
            self.removeFromSuperview()
        }
    }
}
WanPai/New Group/View/AgreentView.xib
New file
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="AgreentView" customModule="WanPai" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RL2-Pc-fjv">
                    <rect key="frame" x="0.0" y="498.33333333333326" width="393" height="353.66666666666674"/>
                    <subviews>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="60u-g2-ZcS">
                            <rect key="frame" x="357.66666666666669" y="18.000000000000057" width="21.333333333333314" height="22"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" image="btn_close"/>
                            <connections>
                                <action selector="completeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="3yC-82-lkX"/>
                            </connections>
                        </button>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G2G-hL-VpJ">
                            <rect key="frame" x="176.33333333333334" y="16.000000000000057" width="40.666666666666657" height="19.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EJM-vb-bxZ">
                            <rect key="frame" x="0.0" y="56.333333333333314" width="393" height="297.33333333333331"/>
                            <color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <wkWebViewConfiguration key="configuration">
                                <audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
                                <wkPreferences key="preferences"/>
                            </wkWebViewConfiguration>
                        </wkWebView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="G2G-hL-VpJ" firstAttribute="centerX" secondItem="RL2-Pc-fjv" secondAttribute="centerX" id="7sw-Tj-tyj"/>
                        <constraint firstAttribute="width" secondItem="RL2-Pc-fjv" secondAttribute="height" multiplier="1:0.9" id="LAf-wU-ZYv"/>
                        <constraint firstAttribute="bottom" secondItem="EJM-vb-bxZ" secondAttribute="bottom" id="NZi-lM-Pc5"/>
                        <constraint firstAttribute="trailing" secondItem="EJM-vb-bxZ" secondAttribute="trailing" id="TO7-ye-UUb"/>
                        <constraint firstAttribute="trailing" secondItem="60u-g2-ZcS" secondAttribute="trailing" constant="14" id="bdC-7d-9G5"/>
                        <constraint firstItem="EJM-vb-bxZ" firstAttribute="top" secondItem="G2G-hL-VpJ" secondAttribute="bottom" constant="21" id="dwh-F7-0vL"/>
                        <constraint firstItem="G2G-hL-VpJ" firstAttribute="top" secondItem="RL2-Pc-fjv" secondAttribute="top" constant="16" id="ftE-Xk-5Qu"/>
                        <constraint firstItem="60u-g2-ZcS" firstAttribute="top" secondItem="RL2-Pc-fjv" secondAttribute="top" constant="18" id="sqJ-gr-MIZ"/>
                        <constraint firstItem="EJM-vb-bxZ" firstAttribute="leading" secondItem="RL2-Pc-fjv" secondAttribute="leading" id="xca-G8-wLv"/>
                    </constraints>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/>
            <constraints>
                <constraint firstItem="RL2-Pc-fjv" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="PLV-b8-pJ0"/>
                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="RL2-Pc-fjv" secondAttribute="trailing" id="YwC-BS-9e2"/>
                <constraint firstAttribute="bottom" secondItem="RL2-Pc-fjv" secondAttribute="bottom" id="mzT-t7-Ph5"/>
            </constraints>
            <connections>
                <outlet property="bottom_cons" destination="mzT-t7-Ph5" id="s3O-fR-X42"/>
                <outlet property="view_container" destination="RL2-Pc-fjv" id="r9b-Cn-uAS"/>
            </connections>
            <point key="canvasLocation" x="20.610687022900763" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="btn_close" width="21.333333969116211" height="21.333333969116211"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
WanPai/New Group/View/CommonAlertView.swift
New file
@@ -0,0 +1,51 @@
//
//  CommonAlertView.swift
//  WanPai
//
//  Created by 杨锴 on 2023/6/7.
//
import UIKit
import JQTools
class CommonAlertView: UIView,JQNibView{
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var label_title: UILabel!
    @IBOutlet weak var label_content: UILabel!
    private var title:String!
    private var content:String!
    override func awakeFromNib() {
        super.awakeFromNib()
        view_container.transform = .init(scaleX: 0.1, y: 0.1)
        alpha = 0
        layoutIfNeeded()
    }
    static func show(title:String,content:String){
        let alertView = CommonAlertView.jq_loadNibView()
        alertView.label_title.text = title
        alertView.label_content.text = content
        alertView.frame = screnDelegate?.window?.frame ?? .zero
        screnDelegate?.window?.addSubview(alertView)
        UIView.animate(withDuration: 0.4) {
            alertView.view_container.transform = .init(scaleX: 1.0, y: 1.0)
            alertView.alpha = 1
        }
    }
    @IBAction func completeAction(_ sender: UIButton) {
        UIView.animate(withDuration: 0.4) {
            self.view_container.transform = .init(scaleX: 0.1, y: 0.1)
            self.alpha = 0
        }completion: { _ in
            self.removeFromSuperview()
        }
    }
}
WanPai/New Group/View/CommonAlertView.xib
New file
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
        <capability name="Named colors" minToolsVersion="9.0"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="CommonAlertView" customModule="WanPai" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MnH-T0-9ye">
                    <rect key="frame" x="45" y="334" width="303" height="209.33333333333337"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8x2-bB-pNn">
                            <rect key="frame" x="143.33333333333334" y="24" width="16.333333333333343" height="18"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="18" id="l8v-Dr-xT5"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="raL-bN-qOz">
                            <rect key="frame" x="30" y="79" width="243" height="19.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x3p-KY-6M2">
                            <rect key="frame" x="76" y="149.33333333333331" width="151" height="40"/>
                            <color key="backgroundColor" name="FE6E0D"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="WXa-pb-Gz6"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="确定"/>
                            <userDefinedRuntimeAttributes>
                                <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                    <real key="value" value="20"/>
                                </userDefinedRuntimeAttribute>
                                <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="completeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="zfo-LJ-AJX"/>
                            </connections>
                        </button>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="trailing" secondItem="x3p-KY-6M2" secondAttribute="trailing" constant="76" id="FvL-JW-qNi"/>
                        <constraint firstAttribute="trailing" secondItem="raL-bN-qOz" secondAttribute="trailing" constant="30" id="T4d-qj-pFi"/>
                        <constraint firstItem="x3p-KY-6M2" firstAttribute="centerX" secondItem="MnH-T0-9ye" secondAttribute="centerX" id="Ulq-bQ-NBx"/>
                        <constraint firstItem="8x2-bB-pNn" firstAttribute="centerX" secondItem="MnH-T0-9ye" secondAttribute="centerX" id="cVP-So-X9I"/>
                        <constraint firstItem="x3p-KY-6M2" firstAttribute="top" secondItem="raL-bN-qOz" secondAttribute="bottom" constant="51" id="fyT-RN-pGA"/>
                        <constraint firstAttribute="bottom" secondItem="x3p-KY-6M2" secondAttribute="bottom" constant="20" id="kk8-CD-ZZh"/>
                        <constraint firstItem="raL-bN-qOz" firstAttribute="leading" secondItem="MnH-T0-9ye" secondAttribute="leading" constant="30" id="lDV-JW-sCh"/>
                        <constraint firstItem="8x2-bB-pNn" firstAttribute="top" secondItem="MnH-T0-9ye" secondAttribute="top" constant="24" id="mGE-YB-U7v"/>
                        <constraint firstItem="raL-bN-qOz" firstAttribute="top" secondItem="8x2-bB-pNn" secondAttribute="bottom" constant="37" id="oSb-O8-R6D"/>
                        <constraint firstItem="x3p-KY-6M2" firstAttribute="leading" secondItem="MnH-T0-9ye" secondAttribute="leading" constant="76" id="uPx-hW-PWg"/>
                        <constraint firstItem="raL-bN-qOz" firstAttribute="centerX" secondItem="MnH-T0-9ye" secondAttribute="centerX" id="ycu-Gg-hDl"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="boolean" keyPath="ld_maskToBoundsXIB" value="YES"/>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="10"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/>
            <constraints>
                <constraint firstItem="MnH-T0-9ye" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="45" id="ABS-et-C1Y"/>
                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="MnH-T0-9ye" secondAttribute="trailing" constant="45" id="bFi-tH-mLF"/>
                <constraint firstItem="MnH-T0-9ye" firstAttribute="centerY" secondItem="vUN-kp-3ea" secondAttribute="centerY" id="nfR-kN-8UJ"/>
                <constraint firstItem="MnH-T0-9ye" firstAttribute="centerX" secondItem="vUN-kp-3ea" secondAttribute="centerX" id="yAL-tj-KsX"/>
            </constraints>
            <connections>
                <outlet property="label_content" destination="raL-bN-qOz" id="Q9R-w7-I7r"/>
                <outlet property="label_title" destination="8x2-bB-pNn" id="HQr-lE-rhB"/>
                <outlet property="view_container" destination="MnH-T0-9ye" id="6dr-Ul-VK3"/>
            </connections>
            <point key="canvasLocation" x="-27" y="21"/>
        </view>
    </objects>
    <resources>
        <namedColor name="FE6E0D">
            <color red="0.99599999189376831" green="0.4309999942779541" blue="0.050999999046325684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
WanPai/SceneDelegate.swift
@@ -8,45 +8,40 @@
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let _ = (scene as? UIWindowScene) else { return }
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
        window?.frame = windowScene.coordinateSpace.bounds
        let nav = BaseNav(rootViewController: LoginVC())
        window?.rootViewController =  nav
        window?.makeKeyAndVisible()
    }
    func sceneDidDisconnect(_ scene: UIScene) {
        // Called as the scene is being released by the system.
        // This occurs shortly after the scene enters the background, or when its session is discarded.
        // Release any resources associated with this scene that can be re-created the next time the scene connects.
        // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
    }
    func sceneDidBecomeActive(_ scene: UIScene) {
        // Called when the scene has moved from an inactive state to an active state.
        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
    }
    func sceneWillResignActive(_ scene: UIScene) {
        // Called when the scene will move from an active state to an inactive state.
        // This may occur due to temporary interruptions (ex. an incoming phone call).
    }
    func sceneWillEnterForeground(_ scene: UIScene) {
        // Called as the scene transitions from the background to the foreground.
        // Use this method to undo the changes made on entering the background.
    }
    func sceneDidEnterBackground(_ scene: UIScene) {
        // Called as the scene transitions from the foreground to the background.
        // Use this method to save data, release shared resources, and store enough scene-specific state information
        // to restore the scene back to its current state.
    }
}
WanPai/ViewController.swift
File was deleted