younger_times
2023-04-24 ae6bc78fc4fde4f060277fb702fa001c529f0ba3
初始化提交
1个文件已修改
22个文件已添加
1158 ■■■■■ 已修改文件
BrokerDriver.xcodeproj/project.pbxproj 487 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver.xcodeproj/project.xcworkspace/contents.xcworkspacedata 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/AppDelegate.swift 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/AccentColor.colorset/Contents.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/AppIcon.appiconset/Contents.json 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Contents.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/icon/Contents.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/icon/icon_logo.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/icon/icon_logo.imageset/icon_logo@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/icon/icon_logo.imageset/icon_logo@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base.lproj/LaunchScreen.storyboard 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base.lproj/Main.storyboard 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base/BaseNavigationController.swift 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base/BaseViewController.swift 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Def.swift 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Exception/Colors+Exception.swift 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Info.plist 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/LoginVC.swift 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/LoginVC.xib 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/SceneDelegate.swift 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Podfile 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver.xcodeproj/project.pbxproj
New file
@@ -0,0 +1,487 @@
// !$*UTF8*$!
{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 55;
    objects = {
/* Begin PBXBuildFile section */
        138DA4B829F62F9500A71FE7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4B729F62F9500A71FE7 /* AppDelegate.swift */; };
        138DA4BA29F62F9500A71FE7 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4B929F62F9500A71FE7 /* SceneDelegate.swift */; };
        138DA4BF29F62F9500A71FE7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 138DA4BD29F62F9500A71FE7 /* Main.storyboard */; };
        138DA4C129F62F9700A71FE7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 138DA4C029F62F9700A71FE7 /* Assets.xcassets */; };
        138DA4C429F62F9700A71FE7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 138DA4C229F62F9700A71FE7 /* LaunchScreen.storyboard */; };
        138DA4D529F6305600A71FE7 /* Def.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4CB29F6305600A71FE7 /* Def.swift */; };
        138DA4D629F6305600A71FE7 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4CD29F6305600A71FE7 /* BaseViewController.swift */; };
        138DA4D729F6305600A71FE7 /* BaseNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4CE29F6305600A71FE7 /* BaseNavigationController.swift */; };
        138DA4D829F6305600A71FE7 /* Colors+Exception.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4D029F6305600A71FE7 /* Colors+Exception.swift */; };
        138DA4D929F6305600A71FE7 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 138DA4D329F6305600A71FE7 /* LoginVC.swift */; };
        138DA4DA29F6305600A71FE7 /* LoginVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 138DA4D429F6305600A71FE7 /* LoginVC.xib */; };
        656E15B4DAA88146F5E490CA /* Pods_BrokerDriver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
        138DA4B429F62F9500A71FE7 /* BrokerDriver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BrokerDriver.app; sourceTree = BUILT_PRODUCTS_DIR; };
        138DA4B729F62F9500A71FE7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
        138DA4B929F62F9500A71FE7 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
        138DA4BE29F62F9500A71FE7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
        138DA4C029F62F9700A71FE7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
        138DA4C329F62F9700A71FE7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
        138DA4C529F62F9700A71FE7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
        138DA4CB29F6305600A71FE7 /* Def.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Def.swift; sourceTree = "<group>"; };
        138DA4CD29F6305600A71FE7 /* BaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseViewController.swift; sourceTree = "<group>"; };
        138DA4CE29F6305600A71FE7 /* BaseNavigationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseNavigationController.swift; sourceTree = "<group>"; };
        138DA4D029F6305600A71FE7 /* Colors+Exception.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Colors+Exception.swift"; sourceTree = "<group>"; };
        138DA4D329F6305600A71FE7 /* LoginVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = "<group>"; };
        138DA4D429F6305600A71FE7 /* LoginVC.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginVC.xib; sourceTree = "<group>"; };
        33DCC1D819EF0A04257FB4A8 /* Pods-BrokerDriver.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BrokerDriver.release.xcconfig"; path = "Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver.release.xcconfig"; sourceTree = "<group>"; };
        36C7396011423ADA377B2856 /* Pods-BrokerDriver.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BrokerDriver.debug.xcconfig"; path = "Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver.debug.xcconfig"; sourceTree = "<group>"; };
        8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_BrokerDriver.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
        138DA4B129F62F9500A71FE7 /* Frameworks */ = {
            isa = PBXFrameworksBuildPhase;
            buildActionMask = 2147483647;
            files = (
                656E15B4DAA88146F5E490CA /* Pods_BrokerDriver.framework in Frameworks */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
        138DA4AB29F62F9500A71FE7 = {
            isa = PBXGroup;
            children = (
                138DA4B629F62F9500A71FE7 /* BrokerDriver */,
                138DA4B529F62F9500A71FE7 /* Products */,
                489CFEB74E41CC03BD0818E7 /* Pods */,
                A38F2B14D01B91B5060F6C92 /* Frameworks */,
            );
            sourceTree = "<group>";
        };
        138DA4B529F62F9500A71FE7 /* Products */ = {
            isa = PBXGroup;
            children = (
                138DA4B429F62F9500A71FE7 /* BrokerDriver.app */,
            );
            name = Products;
            sourceTree = "<group>";
        };
        138DA4B629F62F9500A71FE7 /* BrokerDriver */ = {
            isa = PBXGroup;
            children = (
                138DA4CC29F6305600A71FE7 /* Base */,
                138DA4CB29F6305600A71FE7 /* Def.swift */,
                138DA4CF29F6305600A71FE7 /* Exception */,
                138DA4D129F6305600A71FE7 /* Login */,
                138DA4B729F62F9500A71FE7 /* AppDelegate.swift */,
                138DA4B929F62F9500A71FE7 /* SceneDelegate.swift */,
                138DA4BD29F62F9500A71FE7 /* Main.storyboard */,
                138DA4C029F62F9700A71FE7 /* Assets.xcassets */,
                138DA4C229F62F9700A71FE7 /* LaunchScreen.storyboard */,
                138DA4C529F62F9700A71FE7 /* Info.plist */,
            );
            path = BrokerDriver;
            sourceTree = "<group>";
        };
        138DA4CC29F6305600A71FE7 /* Base */ = {
            isa = PBXGroup;
            children = (
                138DA4CD29F6305600A71FE7 /* BaseViewController.swift */,
                138DA4CE29F6305600A71FE7 /* BaseNavigationController.swift */,
            );
            path = Base;
            sourceTree = "<group>";
        };
        138DA4CF29F6305600A71FE7 /* Exception */ = {
            isa = PBXGroup;
            children = (
                138DA4D029F6305600A71FE7 /* Colors+Exception.swift */,
            );
            path = Exception;
            sourceTree = "<group>";
        };
        138DA4D129F6305600A71FE7 /* Login */ = {
            isa = PBXGroup;
            children = (
                138DA4D229F6305600A71FE7 /* VC */,
            );
            path = Login;
            sourceTree = "<group>";
        };
        138DA4D229F6305600A71FE7 /* VC */ = {
            isa = PBXGroup;
            children = (
                138DA4D329F6305600A71FE7 /* LoginVC.swift */,
                138DA4D429F6305600A71FE7 /* LoginVC.xib */,
            );
            path = VC;
            sourceTree = "<group>";
        };
        489CFEB74E41CC03BD0818E7 /* Pods */ = {
            isa = PBXGroup;
            children = (
                36C7396011423ADA377B2856 /* Pods-BrokerDriver.debug.xcconfig */,
                33DCC1D819EF0A04257FB4A8 /* Pods-BrokerDriver.release.xcconfig */,
            );
            path = Pods;
            sourceTree = "<group>";
        };
        A38F2B14D01B91B5060F6C92 /* Frameworks */ = {
            isa = PBXGroup;
            children = (
                8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */,
            );
            name = Frameworks;
            sourceTree = "<group>";
        };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
        138DA4B329F62F9500A71FE7 /* BrokerDriver */ = {
            isa = PBXNativeTarget;
            buildConfigurationList = 138DA4C829F62F9700A71FE7 /* Build configuration list for PBXNativeTarget "BrokerDriver" */;
            buildPhases = (
                541DEF03651AC9A1F93D5BE7 /* [CP] Check Pods Manifest.lock */,
                138DA4B029F62F9500A71FE7 /* Sources */,
                138DA4B129F62F9500A71FE7 /* Frameworks */,
                138DA4B229F62F9500A71FE7 /* Resources */,
                23C4AAD23341800058A35A41 /* [CP] Embed Pods Frameworks */,
            );
            buildRules = (
            );
            dependencies = (
            );
            name = BrokerDriver;
            productName = BrokerDriver;
            productReference = 138DA4B429F62F9500A71FE7 /* BrokerDriver.app */;
            productType = "com.apple.product-type.application";
        };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
        138DA4AC29F62F9500A71FE7 /* Project object */ = {
            isa = PBXProject;
            attributes = {
                BuildIndependentTargetsInParallel = 1;
                LastSwiftUpdateCheck = 1430;
                LastUpgradeCheck = 1430;
                TargetAttributes = {
                    138DA4B329F62F9500A71FE7 = {
                        CreatedOnToolsVersion = 14.3;
                    };
                };
            };
            buildConfigurationList = 138DA4AF29F62F9500A71FE7 /* Build configuration list for PBXProject "BrokerDriver" */;
            compatibilityVersion = "Xcode 13.0";
            developmentRegion = en;
            hasScannedForEncodings = 0;
            knownRegions = (
                en,
                Base,
            );
            mainGroup = 138DA4AB29F62F9500A71FE7;
            productRefGroup = 138DA4B529F62F9500A71FE7 /* Products */;
            projectDirPath = "";
            projectRoot = "";
            targets = (
                138DA4B329F62F9500A71FE7 /* BrokerDriver */,
            );
        };
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
        138DA4B229F62F9500A71FE7 /* Resources */ = {
            isa = PBXResourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                138DA4C429F62F9700A71FE7 /* LaunchScreen.storyboard in Resources */,
                138DA4C129F62F9700A71FE7 /* Assets.xcassets in Resources */,
                138DA4DA29F6305600A71FE7 /* LoginVC.xib in Resources */,
                138DA4BF29F62F9500A71FE7 /* Main.storyboard in Resources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
        23C4AAD23341800058A35A41 /* [CP] Embed Pods Frameworks */ = {
            isa = PBXShellScriptBuildPhase;
            buildActionMask = 2147483647;
            files = (
            );
            inputFileListPaths = (
                "${PODS_ROOT}/Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver-frameworks-${CONFIGURATION}-input-files.xcfilelist",
            );
            name = "[CP] Embed Pods Frameworks";
            outputFileListPaths = (
                "${PODS_ROOT}/Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver-frameworks-${CONFIGURATION}-output-files.xcfilelist",
            );
            runOnlyForDeploymentPostprocessing = 0;
            shellPath = /bin/sh;
            shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BrokerDriver/Pods-BrokerDriver-frameworks.sh\"\n";
            showEnvVarsInLog = 0;
        };
        541DEF03651AC9A1F93D5BE7 /* [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-BrokerDriver-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;
        };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
        138DA4B029F62F9500A71FE7 /* Sources */ = {
            isa = PBXSourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                138DA4B829F62F9500A71FE7 /* AppDelegate.swift in Sources */,
                138DA4D829F6305600A71FE7 /* Colors+Exception.swift in Sources */,
                138DA4D929F6305600A71FE7 /* LoginVC.swift in Sources */,
                138DA4D629F6305600A71FE7 /* BaseViewController.swift in Sources */,
                138DA4BA29F62F9500A71FE7 /* SceneDelegate.swift in Sources */,
                138DA4D729F6305600A71FE7 /* BaseNavigationController.swift in Sources */,
                138DA4D529F6305600A71FE7 /* Def.swift in Sources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
        138DA4BD29F62F9500A71FE7 /* Main.storyboard */ = {
            isa = PBXVariantGroup;
            children = (
                138DA4BE29F62F9500A71FE7 /* Base */,
            );
            name = Main.storyboard;
            sourceTree = "<group>";
        };
        138DA4C229F62F9700A71FE7 /* LaunchScreen.storyboard */ = {
            isa = PBXVariantGroup;
            children = (
                138DA4C329F62F9700A71FE7 /* Base */,
            );
            name = LaunchScreen.storyboard;
            sourceTree = "<group>";
        };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
        138DA4C629F62F9700A71FE7 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ALWAYS_SEARCH_USER_PATHS = NO;
                CLANG_ANALYZER_NONNULL = YES;
                CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
                CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
                CLANG_ENABLE_MODULES = YES;
                CLANG_ENABLE_OBJC_ARC = YES;
                CLANG_ENABLE_OBJC_WEAK = YES;
                CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
                CLANG_WARN_BOOL_CONVERSION = YES;
                CLANG_WARN_COMMA = YES;
                CLANG_WARN_CONSTANT_CONVERSION = YES;
                CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
                CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
                CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
                CLANG_WARN_EMPTY_BODY = YES;
                CLANG_WARN_ENUM_CONVERSION = YES;
                CLANG_WARN_INFINITE_RECURSION = YES;
                CLANG_WARN_INT_CONVERSION = YES;
                CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
                CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
                CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
                CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
                CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
                CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
                CLANG_WARN_STRICT_PROTOTYPES = YES;
                CLANG_WARN_SUSPICIOUS_MOVE = YES;
                CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
                CLANG_WARN_UNREACHABLE_CODE = YES;
                CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
                COPY_PHASE_STRIP = NO;
                DEBUG_INFORMATION_FORMAT = dwarf;
                ENABLE_STRICT_OBJC_MSGSEND = YES;
                ENABLE_TESTABILITY = YES;
                GCC_C_LANGUAGE_STANDARD = gnu11;
                GCC_DYNAMIC_NO_PIC = NO;
                GCC_NO_COMMON_BLOCKS = YES;
                GCC_OPTIMIZATION_LEVEL = 0;
                GCC_PREPROCESSOR_DEFINITIONS = (
                    "DEBUG=1",
                    "$(inherited)",
                );
                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
                GCC_WARN_UNDECLARED_SELECTOR = YES;
                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
                GCC_WARN_UNUSED_FUNCTION = YES;
                GCC_WARN_UNUSED_VARIABLE = YES;
                IPHONEOS_DEPLOYMENT_TARGET = 16.4;
                MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
                MTL_FAST_MATH = YES;
                ONLY_ACTIVE_ARCH = YES;
                SDKROOT = iphoneos;
                SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
                SWIFT_OPTIMIZATION_LEVEL = "-Onone";
            };
            name = Debug;
        };
        138DA4C729F62F9700A71FE7 /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ALWAYS_SEARCH_USER_PATHS = NO;
                CLANG_ANALYZER_NONNULL = YES;
                CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
                CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
                CLANG_ENABLE_MODULES = YES;
                CLANG_ENABLE_OBJC_ARC = YES;
                CLANG_ENABLE_OBJC_WEAK = YES;
                CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
                CLANG_WARN_BOOL_CONVERSION = YES;
                CLANG_WARN_COMMA = YES;
                CLANG_WARN_CONSTANT_CONVERSION = YES;
                CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
                CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
                CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
                CLANG_WARN_EMPTY_BODY = YES;
                CLANG_WARN_ENUM_CONVERSION = YES;
                CLANG_WARN_INFINITE_RECURSION = YES;
                CLANG_WARN_INT_CONVERSION = YES;
                CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
                CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
                CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
                CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
                CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
                CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
                CLANG_WARN_STRICT_PROTOTYPES = YES;
                CLANG_WARN_SUSPICIOUS_MOVE = YES;
                CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
                CLANG_WARN_UNREACHABLE_CODE = YES;
                CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
                COPY_PHASE_STRIP = NO;
                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
                ENABLE_NS_ASSERTIONS = NO;
                ENABLE_STRICT_OBJC_MSGSEND = YES;
                GCC_C_LANGUAGE_STANDARD = gnu11;
                GCC_NO_COMMON_BLOCKS = YES;
                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
                GCC_WARN_UNDECLARED_SELECTOR = YES;
                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
                GCC_WARN_UNUSED_FUNCTION = YES;
                GCC_WARN_UNUSED_VARIABLE = YES;
                IPHONEOS_DEPLOYMENT_TARGET = 16.4;
                MTL_ENABLE_DEBUG_INFO = NO;
                MTL_FAST_MATH = YES;
                SDKROOT = iphoneos;
                SWIFT_COMPILATION_MODE = wholemodule;
                SWIFT_OPTIMIZATION_LEVEL = "-O";
                VALIDATE_PRODUCT = YES;
            };
            name = Release;
        };
        138DA4C929F62F9700A71FE7 /* Debug */ = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = 36C7396011423ADA377B2856 /* Pods-BrokerDriver.debug.xcconfig */;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
                CODE_SIGN_STYLE = Automatic;
                CURRENT_PROJECT_VERSION = 1;
                EXCLUDED_ARCHS = "i386 armv7 armv7s";
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = BrokerDriver/Info.plist;
                INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
                INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
                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.broker.BrokerDriver;
                PRODUCT_NAME = "$(TARGET_NAME)";
                SWIFT_EMIT_LOC_STRINGS = YES;
                SWIFT_VERSION = 5.0;
                TARGETED_DEVICE_FAMILY = "1,2";
            };
            name = Debug;
        };
        138DA4CA29F62F9700A71FE7 /* Release */ = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = 33DCC1D819EF0A04257FB4A8 /* Pods-BrokerDriver.release.xcconfig */;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
                CODE_SIGN_STYLE = Automatic;
                CURRENT_PROJECT_VERSION = 1;
                EXCLUDED_ARCHS = "i386 armv7 armv7s";
                GENERATE_INFOPLIST_FILE = YES;
                INFOPLIST_FILE = BrokerDriver/Info.plist;
                INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
                INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
                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.broker.BrokerDriver;
                PRODUCT_NAME = "$(TARGET_NAME)";
                SWIFT_EMIT_LOC_STRINGS = YES;
                SWIFT_VERSION = 5.0;
                TARGETED_DEVICE_FAMILY = "1,2";
            };
            name = Release;
        };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
        138DA4AF29F62F9500A71FE7 /* Build configuration list for PBXProject "BrokerDriver" */ = {
            isa = XCConfigurationList;
            buildConfigurations = (
                138DA4C629F62F9700A71FE7 /* Debug */,
                138DA4C729F62F9700A71FE7 /* Release */,
            );
            defaultConfigurationIsVisible = 0;
            defaultConfigurationName = Release;
        };
        138DA4C829F62F9700A71FE7 /* Build configuration list for PBXNativeTarget "BrokerDriver" */ = {
            isa = XCConfigurationList;
            buildConfigurations = (
                138DA4C929F62F9700A71FE7 /* Debug */,
                138DA4CA29F62F9700A71FE7 /* Release */,
            );
            defaultConfigurationIsVisible = 0;
            defaultConfigurationName = Release;
        };
/* End XCConfigurationList section */
    };
    rootObject = 138DA4AC29F62F9500A71FE7 /* Project object */;
}
BrokerDriver.xcodeproj/project.xcworkspace/contents.xcworkspacedata
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>
BrokerDriver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>IDEDidComputeMac32BitWarning</key>
    <true/>
</dict>
</plist>
BrokerDriver/AppDelegate.swift
New file
@@ -0,0 +1,36 @@
//
//  AppDelegate.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }
    // MARK: UISceneSession Lifecycle
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }
    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
}
BrokerDriver/Assets.xcassets/AccentColor.colorset/Contents.json
New file
@@ -0,0 +1,11 @@
{
  "colors" : [
    {
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/AppIcon.appiconset/Contents.json
New file
@@ -0,0 +1,13 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "platform" : "ios",
      "size" : "1024x1024"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Contents.json
New file
@@ -0,0 +1,6 @@
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/icon/Contents.json
New file
@@ -0,0 +1,6 @@
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/icon/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
  }
}
BrokerDriver/Assets.xcassets/icon/icon_logo.imageset/icon_logo@2x.png
BrokerDriver/Assets.xcassets/icon/icon_logo.imageset/icon_logo@3x.png
BrokerDriver/Base.lproj/LaunchScreen.storyboard
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="53" y="375"/>
        </scene>
    </scenes>
</document>
BrokerDriver/Base.lproj/Main.storyboard
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
        </scene>
    </scenes>
</document>
BrokerDriver/Base/BaseNavigationController.swift
New file
@@ -0,0 +1,65 @@
//
//  BaseNavigationController.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class BaseNavigationController: 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 = false
        self.delegate = self
        self.popDelegate = self.interactivePopGestureRecognizer?.delegate
        if #available(iOS 15.0, *) {
            let bar = UINavigationBarAppearance()
            bar.configureWithOpaqueBackground() //消除15的黑框
            bar.backgroundEffect = nil
            bar.shadowColor = nil
            bar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            bar.backgroundColor = UIColor.white
            navigationBar.scrollEdgeAppearance = bar //顶部透明
            navigationBar.standardAppearance = bar
        }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
    }
}
BrokerDriver/Base/BaseViewController.swift
New file
@@ -0,0 +1,96 @@
//
//  BaseViewController.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import RxSwift
import RxRelay
import RxCocoa
class BaseViewController: 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 = Def_backgroundColor
    }
    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)
    }
    func addChildViewController(_ child: UIViewController, toContainerView containerView: UIView) {
        addChild(child)
        containerView.addSubview(child.view)
        child.didMove(toParent: self)
    }
    deinit {
        LogInfo(String(format: "%@ 已释放", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!))
    }
    /// 屏幕旋转:当设备方向改变,需要对UI进行重新布局,子类重写此方法
    @objc open func receiverNotification(orient:UIDeviceOrientation,desc:String){
        LogInfo(desc)
        refreshUI()
    }
}
BrokerDriver/Def.swift
New file
@@ -0,0 +1,44 @@
//
//  Def.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import Foundation
import UIKit
@_exported import JQTools
// MARK: -- Shorthand
let app = UIApplication.shared.delegate as! AppDelegate
let notiCenter = NotificationCenter.default
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
}
// MARK: -- Front
let Def_NavFont:UIFont = UIFont.systemFont(ofSize: 19, weight: .bold)
// MARK: -- Color
let Def_NavFontColor:UIColor = .color(light: .color("#333333"), dark: .color("#333333"))
let Def_backgroundColor:UIColor = .color(light: .white, dark: .white)
BrokerDriver/Exception/Colors+Exception.swift
New file
@@ -0,0 +1,85 @@
//
//  Colors+Exception.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
public extension UIColor {
    /// 通过指定的不透明度和 RGB 分量值, 返回一个颜色对象
    ///
    /// - Parameters:
    ///   - red: 红色分量的值 (0 ~ 255)
    ///   - green: 绿色分量的值 (0 ~ 255)
    ///   - blue: 蓝色分量的值 (0 ~ 255)
    ///   - alpha: 不透明度的值 (0 ~ 1)
    /// - Returns: 颜色对象
    static func RGBA(r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) -> UIColor {
        return UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a)
    }
    /// 通过指定的不透明度 和 一个用16进制数字表示 RGB 分量值的字符串, 返回一个颜色对象
    ///
    /// - Parameters:
    ///   - hexString: 以"#"或"0x"开头, 后面跟随6位(或3位)16进制数字 表示RGB分量值的字符串
    ///   - alpha: 不透明度 (0 ~ 1)
    /// - Returns: 颜色对象
    static func color(_ hexString: String, _ alpha: CGFloat = 1.0) -> UIColor {
        var red: CGFloat = 0.0, green: CGFloat = 0.0, blue:  CGFloat = 0.0
        var cString = hexString.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines).uppercased()
        guard cString.hasPrefix("0X") || cString.hasPrefix("#") else {
            return UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
        }
        if cString.hasPrefix("0X") {
            cString = String(cString[cString.index(cString.startIndex, offsetBy: 2)...])
        } else if cString.hasPrefix("#") {
            cString = String(cString[cString.index(cString.startIndex, offsetBy: 1)...])
        }
        let scanner = Scanner(string: cString)
        var hexValue: CUnsignedLongLong = 0
        guard scanner.scanHexInt64(&hexValue) else {
            return UIColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
        }
        switch (cString.count) {
        case 3:
            red   = CGFloat((hexValue & 0xF00) >> 8)       / 15.0
            green = CGFloat((hexValue & 0x0F0) >> 4)       / 15.0
            blue  = CGFloat(hexValue & 0x00F)              / 15.0
        case 6:
            red   = CGFloat((hexValue & 0xFF0000) >> 16)   / 255.0
            green = CGFloat((hexValue & 0x00FF00) >> 8)    / 255.0
            blue  = CGFloat(hexValue & 0x0000FF)           / 255.0
        default:
            red = 0.0; green = 0.0; blue = 1.0
        }
        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
    }
    /// 深色模式适配颜色
    /// - Parameters:
    ///   - light: 普通颜色
    ///   - dark: 深色模式颜色
    static func color(light: UIColor,dark: UIColor) -> UIColor {
        if #available(iOS 13.0, *) {
            let color = UIColor.init { (trait) -> UIColor in
                if trait.userInterfaceStyle == UIUserInterfaceStyle.dark{
                    return dark
                }else{
                    return light
                }
            }
            return color
        } else {
            return light
        }
    }
}
BrokerDriver/Info.plist
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>UIApplicationSceneManifest</key>
    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>Main</string>
                </dict>
            </array>
        </dict>
    </dict>
</dict>
</plist>
BrokerDriver/Login/VC/LoginVC.swift
New file
@@ -0,0 +1,29 @@
//
//  LoginVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class LoginVC: BaseViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    /*
    // MARK: - Navigation
    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */
}
BrokerDriver/Login/VC/LoginVC.xib
New file
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_12" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <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="BrokerDriver" customModuleProvider="target">
            <connections>
                <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="Gvf-3j-Apa">
                    <rect key="frame" x="138.66666666666666" y="156" width="116" height="116"/>
                </imageView>
                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="x3m-nw-HqX">
                    <rect key="frame" x="0.0" y="286" width="393" height="87"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sGN-VP-INk">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="87"/>
                            <subviews>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="EMAIL" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Rz6-l8-dPP" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666686" width="293" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="6BX-LC-liA"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EmS-AI-xY2">
                                    <rect key="frame" x="50" y="86.666666666666686" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333333333335" green="0.93333333333333335" blue="0.93333333333333335" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="1VU-aT-yBa"/>
                                    </constraints>
                                </view>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstAttribute="trailing" secondItem="Rz6-l8-dPP" secondAttribute="trailing" constant="50" id="4iQ-Bb-FHe"/>
                                <constraint firstItem="Rz6-l8-dPP" firstAttribute="centerY" secondItem="sGN-VP-INk" secondAttribute="centerY" id="6Yx-K4-eis"/>
                                <constraint firstAttribute="height" constant="87" id="HyC-xM-Uqo"/>
                                <constraint firstItem="EmS-AI-xY2" firstAttribute="leading" secondItem="sGN-VP-INk" secondAttribute="leading" constant="50" id="c76-JH-gmc"/>
                                <constraint firstItem="Rz6-l8-dPP" firstAttribute="leading" secondItem="sGN-VP-INk" secondAttribute="leading" constant="50" id="ixT-en-ZMs"/>
                                <constraint firstAttribute="trailing" secondItem="EmS-AI-xY2" secondAttribute="trailing" constant="50" id="nto-iw-6RE"/>
                                <constraint firstAttribute="bottom" secondItem="EmS-AI-xY2" secondAttribute="bottom" id="zN4-BA-ELn"/>
                            </constraints>
                        </view>
                    </subviews>
                </stackView>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="x3m-nw-HqX" secondAttribute="trailing" id="A3A-iu-fKn"/>
                <constraint firstItem="Gvf-3j-Apa" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="GqD-ZN-8zm"/>
                <constraint firstItem="x3m-nw-HqX" firstAttribute="top" secondItem="Gvf-3j-Apa" secondAttribute="bottom" constant="14" id="I4q-T0-3a4"/>
                <constraint firstItem="Gvf-3j-Apa" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="97" id="dD9-MQ-Juz"/>
                <constraint firstItem="x3m-nw-HqX" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="rjp-aR-VRM"/>
            </constraints>
            <point key="canvasLocation" x="140" y="21"/>
        </view>
    </objects>
    <resources>
        <image name="icon_logo" width="116" height="116"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
BrokerDriver/SceneDelegate.swift
New file
@@ -0,0 +1,58 @@
//
//  SceneDelegate.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
        window?.frame = windowScene.coordinateSpace.bounds
        app.window = window
//        let nav = BaseNavigationController(rootViewController: Login())
//        window?.rootViewController = nav
//        window?.overrideUserInterfaceStyle = .light
//        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.
    }
}
Podfile
New file
@@ -0,0 +1,19 @@
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'BrokerDriver' do
  use_frameworks!
  inhibit_all_warnings!
  # Pods for BrokerDriver
  pod 'JQTools',:path=> '/Users/yvkd/MyProject/JQTools'
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
      end
    end
  end
end
README.md
@@ -1,4 +1,17 @@
## Broker
iOS- Broker-Driver
### 1.  file not found:
>/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a 报错
[参考](https://cloud.tencent.com/developer/article/2255102)
### 2. Excluded Architectures
>优化编译;去除`i386`,`x86_64`,`armv7`,`armv7s`
### 3. 新增 inhibit_all_warnings!
> Pod中优化编译速度