younger_times
2023-04-24 a43a3dcf34a398b0fe693304fa00feb83a876ce8
项目搭建工作
完成登录UI
完成主页UI布局
3 文件已复制
4 文件已重命名
7个文件已修改
32个文件已添加
1219 ■■■■■ 已修改文件
BrokerDriver.xcodeproj/project.pbxproj 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Bg/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/bg@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/bg@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_back.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_back.imageset/btn_back@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_back.imageset/btn_back@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/btn_dial@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/btn_dial@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/btn_pickuptime@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/btn_pickuptime@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/btn_search@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/btn_search@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Colors/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Colors/ThemeColor.colorset/Contents.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_logo.imageset/Contents.json 补丁 | 查看 | 原始文档 | 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/Assets.xcassets/Icon/icon_miniLogo.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_miniLogo.imageset/icon_miniLogo@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_miniLogo.imageset/icon_miniLogo@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/icon_profile@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/icon_profile@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base/BaseNavigationController.swift 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base/BaseTCell.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Base/BaseTableView.swift 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Def.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/HomeItemTCell.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/TCell/HomeItemTCell.xib 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeHeaderVC.swift 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeMenuVC.swift 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomePageVC.swift 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Home/VC/HomeVC.swift 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/ForgotPwdVC.swift 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/ForgotPwdVC.xib 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/LoginVC.swift 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/Login/VC/LoginVC.xib 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver/SceneDelegate.swift 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Podfile 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BrokerDriver.xcodeproj/project.pbxproj
@@ -18,6 +18,16 @@
        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 */; };
        13941CDF29F6901D00AB569F /* BaseTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13941CDE29F6901D00AB569F /* BaseTableView.swift */; };
        139F0F7329F65497007D9EA4 /* ForgotPwdVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F7129F65497007D9EA4 /* ForgotPwdVC.swift */; };
        139F0F7429F65497007D9EA4 /* ForgotPwdVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 139F0F7229F65497007D9EA4 /* ForgotPwdVC.xib */; };
        139F0F7829F6589F007D9EA4 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F7729F6589F007D9EA4 /* HomeVC.swift */; };
        139F0F7A29F66EB7007D9EA4 /* HomeHeaderVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F7929F66EB7007D9EA4 /* HomeHeaderVC.swift */; };
        139F0F7C29F67091007D9EA4 /* HomeMenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F7B29F67091007D9EA4 /* HomeMenuVC.swift */; };
        139F0F7E29F6713A007D9EA4 /* HomePageVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F7D29F6713A007D9EA4 /* HomePageVC.swift */; };
        139F0F8229F689F9007D9EA4 /* HomeItemTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F8029F689F9007D9EA4 /* HomeItemTCell.swift */; };
        139F0F8329F689F9007D9EA4 /* HomeItemTCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 139F0F8129F689F9007D9EA4 /* HomeItemTCell.xib */; };
        139F0F8529F68B90007D9EA4 /* BaseTCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 139F0F8429F68B90007D9EA4 /* BaseTCell.swift */; };
        656E15B4DAA88146F5E490CA /* Pods_BrokerDriver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E99D0F4A48F512570D96537 /* Pods_BrokerDriver.framework */; };
/* End PBXBuildFile section */
@@ -35,6 +45,16 @@
        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>"; };
        13941CDE29F6901D00AB569F /* BaseTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableView.swift; sourceTree = "<group>"; };
        139F0F7129F65497007D9EA4 /* ForgotPwdVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForgotPwdVC.swift; sourceTree = "<group>"; };
        139F0F7229F65497007D9EA4 /* ForgotPwdVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ForgotPwdVC.xib; sourceTree = "<group>"; };
        139F0F7729F6589F007D9EA4 /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = "<group>"; };
        139F0F7929F66EB7007D9EA4 /* HomeHeaderVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeHeaderVC.swift; sourceTree = "<group>"; };
        139F0F7B29F67091007D9EA4 /* HomeMenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMenuVC.swift; sourceTree = "<group>"; };
        139F0F7D29F6713A007D9EA4 /* HomePageVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageVC.swift; sourceTree = "<group>"; };
        139F0F8029F689F9007D9EA4 /* HomeItemTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeItemTCell.swift; sourceTree = "<group>"; };
        139F0F8129F689F9007D9EA4 /* HomeItemTCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeItemTCell.xib; sourceTree = "<group>"; };
        139F0F8429F68B90007D9EA4 /* BaseTCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTCell.swift; 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; };
@@ -73,16 +93,17 @@
        138DA4B629F62F9500A71FE7 /* BrokerDriver */ = {
            isa = PBXGroup;
            children = (
                138DA4B729F62F9500A71FE7 /* AppDelegate.swift */,
                138DA4C029F62F9700A71FE7 /* Assets.xcassets */,
                138DA4CC29F6305600A71FE7 /* Base */,
                138DA4CB29F6305600A71FE7 /* Def.swift */,
                138DA4CF29F6305600A71FE7 /* Exception */,
                138DA4D129F6305600A71FE7 /* Login */,
                138DA4B729F62F9500A71FE7 /* AppDelegate.swift */,
                138DA4B929F62F9500A71FE7 /* SceneDelegate.swift */,
                138DA4BD29F62F9500A71FE7 /* Main.storyboard */,
                138DA4C029F62F9700A71FE7 /* Assets.xcassets */,
                138DA4C229F62F9700A71FE7 /* LaunchScreen.storyboard */,
                139F0F7529F65880007D9EA4 /* Home */,
                138DA4C529F62F9700A71FE7 /* Info.plist */,
                138DA4C229F62F9700A71FE7 /* LaunchScreen.storyboard */,
                138DA4D129F6305600A71FE7 /* Login */,
                138DA4BD29F62F9500A71FE7 /* Main.storyboard */,
                138DA4B929F62F9500A71FE7 /* SceneDelegate.swift */,
            );
            path = BrokerDriver;
            sourceTree = "<group>";
@@ -92,6 +113,8 @@
            children = (
                138DA4CD29F6305600A71FE7 /* BaseViewController.swift */,
                138DA4CE29F6305600A71FE7 /* BaseNavigationController.swift */,
                139F0F8429F68B90007D9EA4 /* BaseTCell.swift */,
                13941CDE29F6901D00AB569F /* BaseTableView.swift */,
            );
            path = Base;
            sourceTree = "<group>";
@@ -117,8 +140,39 @@
            children = (
                138DA4D329F6305600A71FE7 /* LoginVC.swift */,
                138DA4D429F6305600A71FE7 /* LoginVC.xib */,
                139F0F7129F65497007D9EA4 /* ForgotPwdVC.swift */,
                139F0F7229F65497007D9EA4 /* ForgotPwdVC.xib */,
            );
            path = VC;
            sourceTree = "<group>";
        };
        139F0F7529F65880007D9EA4 /* Home */ = {
            isa = PBXGroup;
            children = (
                139F0F7F29F689DE007D9EA4 /* TCell */,
                139F0F7629F65886007D9EA4 /* VC */,
            );
            path = Home;
            sourceTree = "<group>";
        };
        139F0F7629F65886007D9EA4 /* VC */ = {
            isa = PBXGroup;
            children = (
                139F0F7729F6589F007D9EA4 /* HomeVC.swift */,
                139F0F7929F66EB7007D9EA4 /* HomeHeaderVC.swift */,
                139F0F7B29F67091007D9EA4 /* HomeMenuVC.swift */,
                139F0F7D29F6713A007D9EA4 /* HomePageVC.swift */,
            );
            path = VC;
            sourceTree = "<group>";
        };
        139F0F7F29F689DE007D9EA4 /* TCell */ = {
            isa = PBXGroup;
            children = (
                139F0F8029F689F9007D9EA4 /* HomeItemTCell.swift */,
                139F0F8129F689F9007D9EA4 /* HomeItemTCell.xib */,
            );
            path = TCell;
            sourceTree = "<group>";
        };
        489CFEB74E41CC03BD0818E7 /* Pods */ = {
@@ -198,9 +252,11 @@
            isa = PBXResourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                139F0F8329F689F9007D9EA4 /* HomeItemTCell.xib in Resources */,
                138DA4C429F62F9700A71FE7 /* LaunchScreen.storyboard in Resources */,
                138DA4C129F62F9700A71FE7 /* Assets.xcassets in Resources */,
                138DA4DA29F6305600A71FE7 /* LoginVC.xib in Resources */,
                139F0F7429F65497007D9EA4 /* ForgotPwdVC.xib in Resources */,
                138DA4BF29F62F9500A71FE7 /* Main.storyboard in Resources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
@@ -255,9 +311,17 @@
            buildActionMask = 2147483647;
            files = (
                138DA4B829F62F9500A71FE7 /* AppDelegate.swift in Sources */,
                139F0F7329F65497007D9EA4 /* ForgotPwdVC.swift in Sources */,
                139F0F7E29F6713A007D9EA4 /* HomePageVC.swift in Sources */,
                138DA4D829F6305600A71FE7 /* Colors+Exception.swift in Sources */,
                13941CDF29F6901D00AB569F /* BaseTableView.swift in Sources */,
                139F0F7829F6589F007D9EA4 /* HomeVC.swift in Sources */,
                139F0F7A29F66EB7007D9EA4 /* HomeHeaderVC.swift in Sources */,
                138DA4D929F6305600A71FE7 /* LoginVC.swift in Sources */,
                139F0F8529F68B90007D9EA4 /* BaseTCell.swift in Sources */,
                138DA4D629F6305600A71FE7 /* BaseViewController.swift in Sources */,
                139F0F7C29F67091007D9EA4 /* HomeMenuVC.swift in Sources */,
                139F0F8229F689F9007D9EA4 /* HomeItemTCell.swift in Sources */,
                138DA4BA29F62F9500A71FE7 /* SceneDelegate.swift in Sources */,
                138DA4D729F6305600A71FE7 /* BaseNavigationController.swift in Sources */,
                138DA4D529F6305600A71FE7 /* Def.swift in Sources */,
BrokerDriver/Assets.xcassets/Bg/Contents.json
copy from BrokerDriver/Assets.xcassets/icon/Contents.json copy to BrokerDriver/Assets.xcassets/Bg/Contents.json
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "bg@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "bg@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/bg@2x.png
BrokerDriver/Assets.xcassets/Bg/bg_home.imageset/bg@3x.png
BrokerDriver/Assets.xcassets/Btn/Contents.json
copy from BrokerDriver/Assets.xcassets/icon/Contents.json copy to BrokerDriver/Assets.xcassets/Btn/Contents.json
BrokerDriver/Assets.xcassets/Btn/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
  }
}
BrokerDriver/Assets.xcassets/Btn/btn_back.imageset/btn_back@2x.png
BrokerDriver/Assets.xcassets/Btn/btn_back.imageset/btn_back@3x.png
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_dial@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_dial@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/btn_dial@2x.png
BrokerDriver/Assets.xcassets/Btn/btn_dial.imageset/btn_dial@3x.png
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_pickuptime@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_pickuptime@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/btn_pickuptime@2x.png
BrokerDriver/Assets.xcassets/Btn/btn_pickuptime.imageset/btn_pickuptime@3x.png
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "btn_search@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "btn_search@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/btn_search@2x.png
BrokerDriver/Assets.xcassets/Btn/btn_search.imageset/btn_search@3x.png
BrokerDriver/Assets.xcassets/Colors/Contents.json
copy from BrokerDriver/Assets.xcassets/icon/Contents.json copy to BrokerDriver/Assets.xcassets/Colors/Contents.json
BrokerDriver/Assets.xcassets/Colors/ThemeColor.colorset/Contents.json
New file
@@ -0,0 +1,20 @@
{
  "colors" : [
    {
      "color" : {
        "color-space" : "srgb",
        "components" : {
          "alpha" : "1.000",
          "blue" : "0.016",
          "green" : "0.827",
          "red" : "0.992"
        }
      },
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Icon/Contents.json
BrokerDriver/Assets.xcassets/Icon/icon_logo.imageset/Contents.json
BrokerDriver/Assets.xcassets/Icon/icon_logo.imageset/icon_logo@2x.png

BrokerDriver/Assets.xcassets/Icon/icon_logo.imageset/icon_logo@3x.png

BrokerDriver/Assets.xcassets/Icon/icon_miniLogo.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_miniLogo@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_miniLogo@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Icon/icon_miniLogo.imageset/icon_miniLogo@2x.png
BrokerDriver/Assets.xcassets/Icon/icon_miniLogo.imageset/icon_miniLogo@3x.png
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "icon_profile@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "icon_profile@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/icon_profile@2x.png
BrokerDriver/Assets.xcassets/Icon/icon_profile.imageset/icon_profile@3x.png
BrokerDriver/Base/BaseNavigationController.swift
@@ -17,20 +17,31 @@
        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.navigationBar.isTranslucent = true
        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
            let scrollBar = UINavigationBarAppearance()
            scrollBar.configureWithOpaqueBackground()
            scrollBar.backgroundEffect = nil
            scrollBar.shadowColor = nil
            scrollBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            scrollBar.backgroundColor = UIColor.clear
            let standardBar = UINavigationBarAppearance()
            standardBar.configureWithOpaqueBackground()
            standardBar.backgroundEffect = nil
            standardBar.shadowColor = nil
            standardBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
            standardBar.backgroundColor = UIColor.clear
            navigationBar.scrollEdgeAppearance = scrollBar //顶部透明
            navigationBar.standardAppearance = standardBar
        }else {
            navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor,.font:Def_NavFont]
        }
BrokerDriver/Base/BaseTCell.swift
New file
@@ -0,0 +1,16 @@
//
//  BaseTCell.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class BaseTCell: UITableViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
        selectionStyle = .none
    }
}
BrokerDriver/Base/BaseTableView.swift
New file
@@ -0,0 +1,30 @@
//
//  BaseTableView.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import EmptyDataSet_Swift
class BaseTableView:UITableView{
    public func jq_setEmptyView( _ noticeStr:String? = nil,image:UIImage? = UIImage(named: "icon_empty"),foregroundColor:UIColor = UIColor.gray.withAlphaComponent(0.5),clouse:((EmptyDataSetView)->Void)? = nil) {
        self.separatorStyle = .none
        self.emptyDataSetView { (emptyDataSetView) in
            emptyDataSetView.titleLabelString(NSAttributedString.init(string: (noticeStr != nil) ? noticeStr! : "Not data", attributes: [.font:UIFont.systemFont(ofSize: 16), .foregroundColor:foregroundColor as Any]))
                .image(image)
                .dataSetBackgroundColor(UIColor.white)
                .verticalOffset(0)
                .verticalSpace(15)
                .shouldDisplay(true)
                .shouldFadeIn(true)
                .isTouchAllowed(true)
                .isScrollAllowed(true)
                .didTapContentView {
                }
            clouse?(emptyDataSetView)
        }
    }
}
BrokerDriver/Def.swift
@@ -8,9 +8,24 @@
import Foundation
import UIKit
@_exported import JQTools
@_exported import QMUIKit
// MARK: -- Shorthand
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)
}()
var topSafeHeight:Double{
    return JQ_currentNavigationController().navigationBar.frame.height + UIApplication.shared.statusBarFrame.height
}
let notiCenter = NotificationCenter.default
func LogSuccess(_ items:Any...,separator:String=" ",file:String=#file,function:String=#function,line:Int=#line){
@@ -42,3 +57,4 @@
// MARK: -- Color
let Def_NavFontColor:UIColor = .color(light: .color("#333333"), dark: .color("#333333"))
let Def_backgroundColor:UIColor = .color(light: .white, dark: .white)
let Def_ThemeColor:UIColor = .color(light: .color("#FED703"), dark: .color("#FED703"))
BrokerDriver/Home/TCell/HomeItemTCell.swift
New file
@@ -0,0 +1,16 @@
//
//  HomeItemTCell.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class HomeItemTCell: BaseTCell {
    override func awakeFromNib() {
        super.awakeFromNib()
    }
}
BrokerDriver/Home/TCell/HomeItemTCell.xib
New file
@@ -0,0 +1,220 @@
<?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="Named colors" 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"/>
        <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="_HomeItemTCell" rowHeight="277" id="KGk-i7-Jjw" customClass="HomeItemTCell" customModule="BrokerDriver" customModuleProvider="target">
            <rect key="frame" x="0.0" y="0.0" width="431" height="277"/>
            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
                <rect key="frame" x="0.0" y="0.0" width="431" height="277"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iIC-Uu-XTD">
                        <rect key="frame" x="12" y="2.6666666666666572" width="407" height="272"/>
                        <subviews>
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_miniLogo" translatesAutoresizingMaskIntoConstraints="NO" id="3ku-sO-NPq">
                                <rect key="frame" x="14" y="21" width="14" height="14"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="14" id="AeT-0Z-4PP"/>
                                    <constraint firstAttribute="height" constant="14" id="cfs-pP-SR2"/>
                                </constraints>
                            </imageView>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Mzn-MW-Hpu">
                                <rect key="frame" x="35" y="21" width="11.666666666666664" height="14"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="14" id="nUI-g0-D3K"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
                                <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="0.84705882352941175" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4wa-Fd-27d">
                                <rect key="frame" x="384.66666666666669" y="19.333333333333332" width="13.333333333333314" height="16.999999999999996"/>
                                <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
                                <color key="textColor" name="ThemeColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Uvz-yU-orz">
                                <rect key="frame" x="14" y="49" width="393" height="0.3333333333333357"/>
                                <color key="backgroundColor" red="0.70196078431372544" green="0.70196078431372544" blue="0.70196078431372544" alpha="0.23999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="0.5" id="FdA-j6-6dS"/>
                                </constraints>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="olv-IP-XuW">
                                <rect key="frame" x="14" y="127" width="8" height="8"/>
                                <color key="backgroundColor" red="0.027450980392156862" green="0.46666666666666667" blue="0.20392156862745098" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="8" id="9Df-yK-2ZF"/>
                                    <constraint firstAttribute="height" constant="8" id="MAV-C9-MKb"/>
                                </constraints>
                                <userDefinedRuntimeAttributes>
                                    <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                        <real key="value" value="4"/>
                                    </userDefinedRuntimeAttribute>
                                </userDefinedRuntimeAttributes>
                            </view>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Q6k-FS-XDv">
                                <rect key="frame" x="14" y="199.33333333333334" width="8" height="8"/>
                                <color key="backgroundColor" red="0.96862745098039216" green="0.32156862745098036" blue="0.17254901960784313" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="8" id="8pK-bm-AAe"/>
                                    <constraint firstAttribute="width" constant="8" id="968-0Y-QJR"/>
                                </constraints>
                                <userDefinedRuntimeAttributes>
                                    <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                        <real key="value" value="4"/>
                                    </userDefinedRuntimeAttribute>
                                </userDefinedRuntimeAttributes>
                            </view>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zn6-aX-3Xe">
                                <rect key="frame" x="31" y="86.333333333333314" width="366" height="89"/>
                                <constraints>
                                    <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="18" id="E9Y-eF-f1g"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                <nil key="textColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4ju-VE-5Ye">
                                <rect key="frame" x="368" y="175.33333333333334" width="30" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="width" constant="30" id="AhD-xH-7lP"/>
                                    <constraint firstAttribute="height" constant="30" id="c1Y-xf-F5E"/>
                                </constraints>
                                <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                <state key="normal" image="btn_dial"/>
                            </button>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qxC-fJ-mN5">
                                <rect key="frame" x="31" y="194.33333333333334" width="366" height="18"/>
                                <constraints>
                                    <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="18" id="2zZ-gU-NbC"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                <nil key="textColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="egn-Bi-PKt">
                                <rect key="frame" x="14" y="227.33333333333334" width="393" height="0.66666666666665719"/>
                                <color key="backgroundColor" red="0.85882352941176465" green="0.85882352941176465" blue="0.90588235294117647" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="0.45000000000000001" id="YAz-P0-Cyf"/>
                                </constraints>
                            </view>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pickup Time: --" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mYj-yu-9ib">
                                <rect key="frame" x="14" y="241" width="96.333333333333329" height="17"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="17" id="2IH-jY-d2G"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                <color key="textColor" red="0.1803921568627451" green="0.1803921568627451" blue="0.1803921568627451" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YWd-fS-AvJ">
                                <rect key="frame" x="386.66666666666669" y="241" width="11.333333333333314" height="17"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="17" id="tms-bt-0La"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                <color key="textColor" red="0.18039215689999999" green="0.18039215689999999" blue="0.18039215689999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="cIt-de-tUJ">
                                <rect key="frame" x="16" y="49.333333333333343" width="382" height="30"/>
                                <subviews>
                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bAy-QT-95G">
                                        <rect key="frame" x="0.0" y="0.0" width="382" height="30"/>
                                        <subviews>
                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="441-F6-alP">
                                                <rect key="frame" x="21" y="7" width="340" height="16"/>
                                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                                <nil key="textColor"/>
                                                <nil key="highlightedColor"/>
                                            </label>
                                        </subviews>
                                        <color key="backgroundColor" red="0.99215686274509807" green="0.84313725490196079" blue="0.81176470588235294" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                        <constraints>
                                            <constraint firstAttribute="trailing" secondItem="441-F6-alP" secondAttribute="trailing" constant="21" id="1De-82-Zfc"/>
                                            <constraint firstItem="441-F6-alP" firstAttribute="leading" secondItem="bAy-QT-95G" secondAttribute="leading" constant="21" id="3JQ-h6-QZM"/>
                                            <constraint firstItem="441-F6-alP" firstAttribute="top" secondItem="bAy-QT-95G" secondAttribute="top" constant="7" id="WLM-bL-rK9"/>
                                            <constraint firstAttribute="bottom" secondItem="441-F6-alP" secondAttribute="bottom" constant="7" id="Wn6-ot-b4o"/>
                                        </constraints>
                                    </view>
                                </subviews>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="qob-vM-vhT"/>
                                </constraints>
                            </stackView>
                        </subviews>
                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                        <constraints>
                            <constraint firstItem="3ku-sO-NPq" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="14" id="462-U1-EQc"/>
                            <constraint firstAttribute="trailing" secondItem="4wa-Fd-27d" secondAttribute="trailing" constant="9" id="4RD-vL-ikt"/>
                            <constraint firstItem="qxC-fJ-mN5" firstAttribute="trailing" secondItem="zn6-aX-3Xe" secondAttribute="trailing" id="4m8-ky-Rsc"/>
                            <constraint firstItem="Uvz-yU-orz" firstAttribute="top" secondItem="3ku-sO-NPq" secondAttribute="bottom" constant="14" id="54a-2K-tOL"/>
                            <constraint firstAttribute="trailing" secondItem="4ju-VE-5Ye" secondAttribute="trailing" constant="9" id="5Jk-Ae-T2U"/>
                            <constraint firstItem="egn-Bi-PKt" firstAttribute="top" secondItem="Q6k-FS-XDv" secondAttribute="bottom" constant="20" id="8sG-y0-Ojr"/>
                            <constraint firstAttribute="trailing" secondItem="Uvz-yU-orz" secondAttribute="trailing" id="9lM-hE-g3t"/>
                            <constraint firstItem="Mzn-MW-Hpu" firstAttribute="centerY" secondItem="3ku-sO-NPq" secondAttribute="centerY" id="CUT-mL-QRi"/>
                            <constraint firstItem="cIt-de-tUJ" firstAttribute="top" secondItem="Uvz-yU-orz" secondAttribute="bottom" id="CaG-qN-MF1"/>
                            <constraint firstItem="zn6-aX-3Xe" firstAttribute="top" secondItem="cIt-de-tUJ" secondAttribute="bottom" constant="7" id="CwF-au-0hw"/>
                            <constraint firstItem="Uvz-yU-orz" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="14" id="FMx-pC-KwJ"/>
                            <constraint firstItem="4wa-Fd-27d" firstAttribute="centerY" secondItem="3ku-sO-NPq" secondAttribute="centerY" id="HEF-f9-2Hg"/>
                            <constraint firstItem="mYj-yu-9ib" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="14" id="IL4-hz-y7J"/>
                            <constraint firstItem="cIt-de-tUJ" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="16" id="MF7-0b-l7q"/>
                            <constraint firstItem="Q6k-FS-XDv" firstAttribute="top" secondItem="zn6-aX-3Xe" secondAttribute="bottom" constant="24" id="Oak-vx-bnm"/>
                            <constraint firstItem="YWd-fS-AvJ" firstAttribute="centerY" secondItem="mYj-yu-9ib" secondAttribute="centerY" id="Qkh-ON-EAY"/>
                            <constraint firstItem="egn-Bi-PKt" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="14" id="XE0-Eb-bqy"/>
                            <constraint firstAttribute="trailing" secondItem="cIt-de-tUJ" secondAttribute="trailing" constant="9" id="Z9J-IR-9lL"/>
                            <constraint firstAttribute="bottom" secondItem="mYj-yu-9ib" secondAttribute="bottom" constant="14" id="c7r-da-Xv5"/>
                            <constraint firstItem="qxC-fJ-mN5" firstAttribute="leading" secondItem="Q6k-FS-XDv" secondAttribute="trailing" constant="9" id="cdk-hh-ImU"/>
                            <constraint firstItem="4ju-VE-5Ye" firstAttribute="top" secondItem="zn6-aX-3Xe" secondAttribute="bottom" id="f1v-tP-Q5c"/>
                            <constraint firstItem="3ku-sO-NPq" firstAttribute="top" secondItem="iIC-Uu-XTD" secondAttribute="top" constant="21" id="hM8-5T-Y52"/>
                            <constraint firstItem="zn6-aX-3Xe" firstAttribute="leading" secondItem="olv-IP-XuW" secondAttribute="trailing" constant="9" id="j6x-cf-M3Z"/>
                            <constraint firstAttribute="trailing" secondItem="YWd-fS-AvJ" secondAttribute="trailing" constant="9" id="jfD-Yr-88A"/>
                            <constraint firstItem="zn6-aX-3Xe" firstAttribute="centerY" secondItem="olv-IP-XuW" secondAttribute="centerY" id="l5j-cs-bPQ"/>
                            <constraint firstAttribute="trailing" secondItem="zn6-aX-3Xe" secondAttribute="trailing" constant="10" id="mSm-VP-K5C"/>
                            <constraint firstAttribute="trailing" secondItem="egn-Bi-PKt" secondAttribute="trailing" id="mqc-ad-n7n"/>
                            <constraint firstItem="Mzn-MW-Hpu" firstAttribute="leading" secondItem="3ku-sO-NPq" secondAttribute="trailing" constant="7" id="oEE-zW-cZx"/>
                            <constraint firstItem="olv-IP-XuW" firstAttribute="leading" secondItem="iIC-Uu-XTD" secondAttribute="leading" constant="14" id="sp6-TU-lBf"/>
                            <constraint firstItem="Q6k-FS-XDv" firstAttribute="leading" secondItem="olv-IP-XuW" secondAttribute="leading" id="svg-FC-W7L"/>
                            <constraint firstItem="mYj-yu-9ib" firstAttribute="top" secondItem="egn-Bi-PKt" secondAttribute="bottom" constant="13" id="wQq-0n-P6s"/>
                            <constraint firstItem="qxC-fJ-mN5" firstAttribute="centerY" secondItem="Q6k-FS-XDv" secondAttribute="centerY" id="yNp-RN-niR"/>
                        </constraints>
                        <userDefinedRuntimeAttributes>
                            <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                                <real key="value" value="6"/>
                            </userDefinedRuntimeAttribute>
                        </userDefinedRuntimeAttributes>
                    </view>
                </subviews>
                <constraints>
                    <constraint firstAttribute="bottom" secondItem="iIC-Uu-XTD" secondAttribute="bottom" constant="2.5" id="6mq-KE-S0h"/>
                    <constraint firstItem="iIC-Uu-XTD" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="2.5" id="8P8-c8-JwO"/>
                    <constraint firstAttribute="trailing" secondItem="iIC-Uu-XTD" secondAttribute="trailing" constant="12" id="Kf6-hA-QS9"/>
                    <constraint firstItem="iIC-Uu-XTD" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="12" id="Y5l-Pb-ZCJ"/>
                </constraints>
            </tableViewCellContentView>
            <point key="canvasLocation" x="223.66412213740458" y="102.46478873239437"/>
        </tableViewCell>
    </objects>
    <resources>
        <image name="btn_dial" width="38" height="38"/>
        <image name="icon_miniLogo" width="14" height="14"/>
        <namedColor name="ThemeColor">
            <color red="0.99199998378753662" green="0.82700002193450928" blue="0.016000000759959221" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
BrokerDriver/Home/VC/HomeHeaderVC.swift
New file
@@ -0,0 +1,27 @@
    //
    //  HomeHeaderVC.swift
    //  BrokerDriver
    //
    //  Created by 无故事王国 on 2023/4/24.
    //
import UIKit
class HomeHeaderVC: BaseViewController {
    let topImg = UIImageView(image: UIImage(named: "bg_home"))
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func setUI() {
        super.setUI()
        topImg.contentMode = .scaleAspectFill
        view.addSubview(topImg)
        topImg.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }
    }
}
BrokerDriver/Home/VC/HomeMenuVC.swift
New file
@@ -0,0 +1,92 @@
//
//  HomeMenuVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import SPPageMenu
class HomeMenuVC: BaseViewController {
   private(set) var pageMenu:SPPageMenu!
    private var tf_cargo:QMUITextField!
    private var btn_pickupTime:QMUIButton!
    private var btn_search:QMUIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func setUI() {
        super.setUI()
        view.backgroundColor = UIColor(hexStr: "#F9FAFF")
        pageMenu = SPPageMenu(frame: CGRect(origin: .zero, size: CGSize(width: JQ_ScreenW, height: 46)), trackerStyle: .line)
        pageMenu.setItems(["In Progress","Completed"], selectedItemIndex: 0)
        pageMenu.dividingLineHeight = 0.4
        pageMenu.dividingLine.backgroundColor = UIColor.black.withAlphaComponent(0.1)
        pageMenu.setTrackerHeight(4, cornerRadius: 2)
        pageMenu.trackerWidth = 20
        pageMenu.permutationWay = .notScrollEqualWidths
        pageMenu.tracker.backgroundColor = Def_ThemeColor
        pageMenu.selectedItemTitleColor = .black
        pageMenu.unSelectedItemTitleColor = .black.withAlphaComponent(0.4)
        pageMenu.selectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold)
        pageMenu.unSelectedItemTitleFont = UIFont.systemFont(ofSize: 16, weight: .bold)
        view.addSubview(pageMenu)
        var funcView = UIView()
        funcView.backgroundColor = .white
        view.addSubview(funcView)
        funcView.snp.makeConstraints { make in
            make.top.equalTo(pageMenu.snp.bottom).offset(3)
            make.left.right.equalToSuperview()
            make.height.equalTo(58)
        }
        tf_cargo = QMUITextField()
        tf_cargo.placeholder = "  CONTAINER #"
        tf_cargo.font = UIFont.systemFont(ofSize: 12)
        tf_cargo.placeholderColor = UIColor(hexStr: "#959595")
        tf_cargo.jq_borderWidth = 1
        tf_cargo.jq_borderColor = UIColor(hexStr: "#F0F0F0")
        funcView.addSubview(tf_cargo)
        tf_cargo.snp.makeConstraints { make in
            make.left.equalTo(12)
            make.height.equalTo(35)
            make.top.equalTo(12)
            make.width.equalTo(JQ_ScreenW * 0.3786)
        }
        btn_pickupTime = QMUIButton(type: .custom)
        btn_pickupTime.setTitle(" Pickup Time", for: .normal)
        btn_pickupTime.setTitleColor(UIColor(hexStr: "#959595"), for: .normal)
        btn_pickupTime.titleLabel?.font = UIFont.systemFont(ofSize: 12)
        btn_pickupTime.setImage(UIImage(named: "btn_pickuptime"), for: .normal)
        btn_pickupTime.imagePosition = .left
        btn_pickupTime.spacingBetweenImageAndTitle = 5
        btn_pickupTime.jq_borderWidth = 1
        btn_pickupTime.jq_borderColor = UIColor(hexStr: "#F0F0F0")
        btn_pickupTime.contentHorizontalAlignment = .left
        btn_pickupTime.imageEdgeInsets = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 0)
        funcView.addSubview(btn_pickupTime)
        btn_pickupTime.snp.makeConstraints { make in
            make.left.equalTo(tf_cargo.snp.right).offset(13)
            make.height.equalTo(35)
            make.top.equalTo(12)
            make.width.equalTo(JQ_ScreenW * 0.3786)
        }
        btn_search = QMUIButton(type: .custom)
        btn_search.setImage( UIImage(named: "btn_search"), for: .normal)
        funcView.addSubview(btn_search)
        btn_search.snp.makeConstraints { make in
            make.left.equalTo(btn_pickupTime.snp.right)
            make.centerY.equalTo(btn_pickupTime)
            make.right.equalToSuperview()
        }
    }
}
BrokerDriver/Home/VC/HomePageVC.swift
New file
@@ -0,0 +1,76 @@
    //
    //  HomePageVC.swift
    //  BrokerDriver
    //
    //  Created by 无故事王国 on 2023/4/24.
    //
import UIKit
import RxSwift
import RxRelay
class HomePageVC: BaseViewController,Refreshable {
    enum PageStyle {
        case progress,complete
    }
    private var style:PageStyle!
    public let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
    lazy private var tableView:BaseTableView = {
        let tableView = BaseTableView(frame: .zero, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        tableView.separatorStyle = .none
        tableView.backgroundColor = .clear
        tableView.register(UINib(nibName: "HomeItemTCell", bundle: nil), forCellReuseIdentifier: "_HomeItemTCell")
        return tableView
    }()
    init(style:HomePageVC.PageStyle) {
        super.init(nibName: nil, bundle: nil)
        self.style = style
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        self.refreshStatusBind(to: tableView, header: { [weak self] () in
            self?.refreshStatus.onNext(.endHeaderRefresh)
        }, footer: {  [weak self] () in
        }).disposed(by: disposeBag)
//        refreshStatus.onNext(.beingHeaderRefresh)
    }
    override func setUI() {
        super.setUI()
        view.backgroundColor = UIColor(hexStr: "#F9FAFF")
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }
    }
}
extension HomePageVC:UITableViewDelegate{
}
extension HomePageVC:UITableViewDataSource{
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "_HomeItemTCell") as! HomeItemTCell
        cell.backgroundColor = .clear
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
}
BrokerDriver/Home/VC/HomeVC.swift
New file
@@ -0,0 +1,87 @@
//
//  HomeVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
import FFPage
import SPPageMenu
class HomeVC: BaseViewController {
    lazy var adapterViewController:FFAdapterViewController = {
        let adapterViewController = FFAdapterViewController()
        adapterViewController.headHeight = JQ_ScreenW * 0.50
        adapterViewController.menuHeight = 108
        adapterViewController.style = .subRefresh
        adapterViewController.ignoreTopSpeace = topSafeHeight
        adapterViewController.headViewController = headerViewController
        adapterViewController.menuViewController = menuViewController
        adapterViewController.pageViewController = pageViewController
        return adapterViewController
    }()
    lazy var pageViewController:FFPageViewController = {
        let pageViewController = FFPageViewController()
        pageViewController.delegate = self
        return pageViewController
    }()
    lazy var headerViewController:HomeHeaderVC = {
        let vc = HomeHeaderVC()
        return vc
    }()
    lazy var menuViewController:HomeMenuVC = {
        let vc = HomeMenuVC()
        return vc
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func setUI() {
        super.setUI()
        navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_profile")!.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(profileAction))
        addChild(adapterViewController)
        view.insertSubview(adapterViewController.view, at: 0)
        adapterViewController.didMove(toParent: self)
        adapterViewController.view.frame = view.frame
        menuViewController.pageMenu.delegate = self
        menuViewController.pageMenu.bridgeScrollView = pageViewController.scrollview
    }
    @objc func profileAction(){
    }
}
extension HomeVC:SPPageMenuDelegate{
    func pageMenu(_ pageMenu: SPPageMenu, itemSelectedAt index: Int) {
        self.pageViewController.scroll(toPage: index, animation: true)
    }
}
extension HomeVC:FFPageViewControllerDelegate {
    func pageViewController(_ pageViewController: FFPageViewController, currentPageChanged currentPage: Int) {
        menuViewController.pageMenu.selectedItemIndex = currentPage
    }
    func totalPagesOfpageViewController(_ pageViewConteoller: FFPageViewController) -> UInt {
        return 2
    }
    func pageViewController(_ pageViewConteoller: FFPageViewController, controllerForPage page: Int) -> UIViewController {
        if page == 0{
             return HomePageVC(style: .progress)
        }
        return HomePageVC(style: .complete)
    }
}
BrokerDriver/Login/VC/ForgotPwdVC.swift
New file
@@ -0,0 +1,28 @@
//
//  ForgotPwdVC.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
import UIKit
class ForgotPwdVC: BaseViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    /*
    // 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/ForgotPwdVC.xib
New file
@@ -0,0 +1,205 @@
<?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="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="ForgotPwdVC" 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>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Forgot password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S9n-Xf-Fst">
                    <rect key="frame" x="27.000000000000014" y="98" width="235.33333333333337" height="36"/>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="30"/>
                    <color key="textColor" red="0.015686274509803921" green="0.058823529411764705" blue="0.15686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <nil key="highlightedColor"/>
                </label>
                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="hYk-ro-C66">
                    <rect key="frame" x="0.0" y="163" width="393" height="348"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="a7Z-KP-vei">
                            <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="IEb-4W-7L7" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666657" width="293" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="fJg-2g-WBe"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TYO-v8-LyZ">
                                    <rect key="frame" x="50" y="86.666666666666657" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="aMp-kZ-FXI"/>
                                    </constraints>
                                </view>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstAttribute="trailing" secondItem="TYO-v8-LyZ" secondAttribute="trailing" constant="50" id="1Bb-I3-7w4"/>
                                <constraint firstAttribute="trailing" secondItem="IEb-4W-7L7" secondAttribute="trailing" constant="50" id="GFl-mp-ni5"/>
                                <constraint firstItem="IEb-4W-7L7" firstAttribute="leading" secondItem="a7Z-KP-vei" secondAttribute="leading" constant="50" id="RWm-s0-v3J"/>
                                <constraint firstAttribute="height" constant="87" id="VyH-H0-lkh"/>
                                <constraint firstAttribute="bottom" secondItem="TYO-v8-LyZ" secondAttribute="bottom" id="ZKZ-fs-Qcy"/>
                                <constraint firstItem="IEb-4W-7L7" firstAttribute="centerY" secondItem="a7Z-KP-vei" secondAttribute="centerY" id="bMo-pq-LaB"/>
                                <constraint firstItem="TYO-v8-LyZ" firstAttribute="leading" secondItem="a7Z-KP-vei" secondAttribute="leading" constant="50" id="z2Z-pE-am1"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cfb-s5-5BF">
                            <rect key="frame" x="0.0" y="87" width="393" height="87"/>
                            <subviews>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Verification code" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fg6-Qi-snT" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666686" width="193" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="bYy-ES-fzj"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="md7-YF-Vu7">
                                    <rect key="frame" x="50" y="86.666666666666686" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="YoY-4M-5En"/>
                                    </constraints>
                                </view>
                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qra-FQ-Qdd">
                                    <rect key="frame" x="279" y="52.666666666666686" width="73" height="27"/>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" title="Obtain code">
                                        <color key="titleColor" red="0.98431372549019602" green="0.73725490196078436" blue="0.047058823529411764" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    </state>
                                </button>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstItem="fg6-Qi-snT" firstAttribute="centerY" secondItem="cfb-s5-5BF" secondAttribute="centerY" id="CDA-kY-pRQ"/>
                                <constraint firstItem="md7-YF-Vu7" firstAttribute="top" secondItem="qra-FQ-Qdd" secondAttribute="bottom" constant="7" id="F4n-dN-h0D"/>
                                <constraint firstItem="fg6-Qi-snT" firstAttribute="leading" secondItem="cfb-s5-5BF" secondAttribute="leading" constant="50" id="Fj0-vs-AO8"/>
                                <constraint firstAttribute="trailing" secondItem="fg6-Qi-snT" secondAttribute="trailing" constant="150" id="GrB-90-KHu"/>
                                <constraint firstAttribute="trailing" secondItem="md7-YF-Vu7" secondAttribute="trailing" constant="50" id="YC0-qX-3z9"/>
                                <constraint firstAttribute="bottom" secondItem="md7-YF-Vu7" secondAttribute="bottom" id="bIx-4U-KtB"/>
                                <constraint firstAttribute="trailing" secondItem="qra-FQ-Qdd" secondAttribute="trailing" constant="41" id="dXg-4d-bAA"/>
                                <constraint firstAttribute="height" constant="87" id="svM-fG-OdE"/>
                                <constraint firstItem="md7-YF-Vu7" firstAttribute="leading" secondItem="cfb-s5-5BF" secondAttribute="leading" constant="50" id="z9g-J4-ID5"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3Yz-XP-8E1">
                            <rect key="frame" x="0.0" y="174" width="393" height="87"/>
                            <subviews>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="PASSWORD" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="0q9-av-whH" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666686" width="293" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="kmd-Jx-fXw"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" keyboardType="alphabet" secureTextEntry="YES"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="i9C-qh-XhH">
                                    <rect key="frame" x="50" y="86.666666666666686" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="Vko-a1-L90"/>
                                    </constraints>
                                </view>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstItem="i9C-qh-XhH" firstAttribute="leading" secondItem="3Yz-XP-8E1" secondAttribute="leading" constant="50" id="YS4-D0-KPn"/>
                                <constraint firstItem="0q9-av-whH" firstAttribute="centerY" secondItem="3Yz-XP-8E1" secondAttribute="centerY" id="beF-Tl-2vI"/>
                                <constraint firstAttribute="height" constant="87" id="gRV-Zn-8at"/>
                                <constraint firstAttribute="trailing" secondItem="0q9-av-whH" secondAttribute="trailing" constant="50" id="n1g-bH-zcH"/>
                                <constraint firstAttribute="trailing" secondItem="i9C-qh-XhH" secondAttribute="trailing" constant="50" id="nTQ-3B-tC4"/>
                                <constraint firstItem="0q9-av-whH" firstAttribute="leading" secondItem="3Yz-XP-8E1" secondAttribute="leading" constant="50" id="wev-TF-kGz"/>
                                <constraint firstAttribute="bottom" secondItem="i9C-qh-XhH" secondAttribute="bottom" id="zaY-It-2lv"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8cf-rR-8yO">
                            <rect key="frame" x="0.0" y="261" width="393" height="87"/>
                            <subviews>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="PASSWORD AGAIN" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="bgL-fq-zvQ" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666686" width="293" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="EXu-Nm-fpB"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OX3-SQ-WIv">
                                    <rect key="frame" x="50" y="86.666666666666686" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="cP0-un-kZ1"/>
                                    </constraints>
                                </view>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstItem="bgL-fq-zvQ" firstAttribute="centerY" secondItem="8cf-rR-8yO" secondAttribute="centerY" id="CcA-VG-EBC"/>
                                <constraint firstAttribute="trailing" secondItem="bgL-fq-zvQ" secondAttribute="trailing" constant="50" id="DPe-aH-mrg"/>
                                <constraint firstItem="OX3-SQ-WIv" firstAttribute="leading" secondItem="8cf-rR-8yO" secondAttribute="leading" constant="50" id="FHc-j2-KWV"/>
                                <constraint firstAttribute="trailing" secondItem="OX3-SQ-WIv" secondAttribute="trailing" constant="50" id="dZZ-jQ-GJG"/>
                                <constraint firstItem="bgL-fq-zvQ" firstAttribute="leading" secondItem="8cf-rR-8yO" secondAttribute="leading" constant="50" id="jPd-F0-MW6"/>
                                <constraint firstAttribute="height" constant="87" id="jk4-iv-c7I"/>
                                <constraint firstAttribute="bottom" secondItem="OX3-SQ-WIv" secondAttribute="bottom" id="vsn-HP-Q6r"/>
                            </constraints>
                        </view>
                    </subviews>
                </stackView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hg9-m2-Rc8">
                    <rect key="frame" x="16" y="555" width="361" height="44"/>
                    <color key="backgroundColor" name="ThemeColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="44" id="P1g-mj-pvU"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="Submit">
                        <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="22"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                </button>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="hg9-m2-Rc8" secondAttribute="trailing" constant="16" id="3ed-6h-GFc"/>
                <constraint firstItem="hYk-ro-C66" firstAttribute="top" secondItem="S9n-Xf-Fst" secondAttribute="bottom" constant="29" id="CXc-pE-eBv"/>
                <constraint firstItem="hYk-ro-C66" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="CaJ-bM-B5k"/>
                <constraint firstAttribute="trailing" secondItem="hYk-ro-C66" secondAttribute="trailing" id="JG4-Yu-e8e"/>
                <constraint firstItem="hg9-m2-Rc8" firstAttribute="top" secondItem="hYk-ro-C66" secondAttribute="bottom" constant="44" id="P4f-in-8lh"/>
                <constraint firstItem="hg9-m2-Rc8" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="16" id="Phh-6k-g6T"/>
                <constraint firstItem="S9n-Xf-Fst" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="27" id="qDU-e2-Lg5"/>
                <constraint firstItem="S9n-Xf-Fst" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="39" id="y2K-k8-X3d"/>
            </constraints>
            <point key="canvasLocation" x="101" y="21"/>
        </view>
    </objects>
    <resources>
        <namedColor name="ThemeColor">
            <color red="0.99215686274509807" green="0.82745098039215681" blue="0.015686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
BrokerDriver/Login/VC/LoginVC.swift
@@ -9,21 +9,32 @@
class LoginVC: BaseViewController {
    @IBOutlet weak var tf_email: QMUITextField!
    @IBOutlet weak var tf_pwd: QMUITextField!
    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.
    @IBAction func forgotAction(_ sender: UIButton) {
        let pwdVC = ForgotPwdVC()
        push(vc: pwdVC)
    }
    */
    @IBAction func loginAction(_ sender: UIButton) {
        let snapView = screnDelegate?.window?.snapshotView(afterScreenUpdates: true)
        let nav = BaseNavigationController(rootViewController: HomeVC())
        screnDelegate?.window?.rootViewController = nav
        screnDelegate?.window?.rootViewController?.view.addSubview(snapView!)
        UIView.animate(withDuration: 1.5) {
            snapView?.alpha = 0
            snapView?.transform3D = CATransform3DMakeScale(1.5, 1.5, 1.5)
        } completion: { _ in
            snapView?.removeFromSuperview()
        }
    }
}
BrokerDriver/Login/VC/LoginVC.xib
@@ -4,6 +4,7 @@
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
        <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"/>
@@ -11,6 +12,8 @@
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="LoginVC" customModule="BrokerDriver" customModuleProvider="target">
            <connections>
                <outlet property="tf_email" destination="Rz6-l8-dPP" id="EYF-CP-5mX"/>
                <outlet property="tf_pwd" destination="QiU-cK-F8o" id="Hto-bR-Mlw"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
@@ -21,9 +24,13 @@
            <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"/>
                    <constraints>
                        <constraint firstAttribute="width" constant="116" id="1Dp-Wb-hpe"/>
                        <constraint firstAttribute="height" constant="116" id="irQ-eW-e0a"/>
                    </constraints>
                </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"/>
                    <rect key="frame" x="0.0" y="286" width="393" height="174"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sGN-VP-INk">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="87"/>
@@ -55,23 +62,92 @@
                                <constraint firstAttribute="bottom" secondItem="EmS-AI-xY2" secondAttribute="bottom" id="zN4-BA-ELn"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2pQ-cI-i8Q">
                            <rect key="frame" x="0.0" y="87" width="393" height="87"/>
                            <subviews>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="PASSWORD" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="QiU-cK-F8o" customClass="QMUITextField">
                                    <rect key="frame" x="50" y="28.666666666666686" width="293" height="30"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="30" id="2ns-If-iXj"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
                                    <textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
                                </textField>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Oe-TK-sTI">
                                    <rect key="frame" x="50" y="86.666666666666686" width="293" height="0.3333333333333286"/>
                                    <color key="backgroundColor" red="0.93333333330000001" green="0.93333333330000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="KCe-8a-U7J"/>
                                    </constraints>
                                </view>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstAttribute="bottom" secondItem="6Oe-TK-sTI" secondAttribute="bottom" id="1fD-ue-w1V"/>
                                <constraint firstAttribute="trailing" secondItem="6Oe-TK-sTI" secondAttribute="trailing" constant="50" id="9sj-ZY-StH"/>
                                <constraint firstAttribute="trailing" secondItem="QiU-cK-F8o" secondAttribute="trailing" constant="50" id="ctJ-C8-qvr"/>
                                <constraint firstItem="6Oe-TK-sTI" firstAttribute="leading" secondItem="2pQ-cI-i8Q" secondAttribute="leading" constant="50" id="k9d-qt-bvR"/>
                                <constraint firstAttribute="height" constant="87" id="oXF-Td-h01"/>
                                <constraint firstItem="QiU-cK-F8o" firstAttribute="centerY" secondItem="2pQ-cI-i8Q" secondAttribute="centerY" id="sSu-W4-cs8"/>
                                <constraint firstItem="QiU-cK-F8o" firstAttribute="leading" secondItem="2pQ-cI-i8Q" secondAttribute="leading" constant="50" id="sgT-8v-fkd"/>
                            </constraints>
                        </view>
                    </subviews>
                </stackView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2aJ-LA-4Bt">
                    <rect key="frame" x="276" y="475" width="108" height="27"/>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="Forgot password?">
                        <color key="titleColor" red="0.98431372549019602" green="0.73725490196078436" blue="0.047058823529411764" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <connections>
                        <action selector="forgotAction:" destination="-1" eventType="touchUpInside" id="T9c-fA-k8F"/>
                    </connections>
                </button>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="A2S-IL-GOY">
                    <rect key="frame" x="16" y="544" width="361" height="44"/>
                    <color key="backgroundColor" name="ThemeColor"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="44" id="NGy-qp-iCj"/>
                    </constraints>
                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="Login">
                        <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <userDefinedRuntimeAttributes>
                        <userDefinedRuntimeAttribute type="number" keyPath="ld_cornerRadiusXIB">
                            <real key="value" value="22"/>
                        </userDefinedRuntimeAttribute>
                    </userDefinedRuntimeAttributes>
                    <connections>
                        <action selector="loginAction:" destination="-1" eventType="touchUpInside" id="S0r-iu-AlI"/>
                    </connections>
                </button>
            </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="fnl-2z-Ty3" firstAttribute="trailing" secondItem="2aJ-LA-4Bt" secondAttribute="trailing" constant="9" id="5TN-Ox-bOB"/>
                <constraint firstItem="x3m-nw-HqX" firstAttribute="top" secondItem="Gvf-3j-Apa" secondAttribute="bottom" constant="14" id="9fd-cP-qpI"/>
                <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="A2S-IL-GOY" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="16" id="Opp-4G-8OM"/>
                <constraint firstItem="A2S-IL-GOY" firstAttribute="top" secondItem="2aJ-LA-4Bt" secondAttribute="bottom" constant="42" id="SuD-uR-onG"/>
                <constraint firstItem="Gvf-3j-Apa" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="97" id="dD9-MQ-Juz"/>
                <constraint firstItem="2aJ-LA-4Bt" firstAttribute="top" secondItem="x3m-nw-HqX" secondAttribute="bottom" constant="15" id="hDy-a4-U0J"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="A2S-IL-GOY" secondAttribute="trailing" constant="16" id="i9S-JV-us1"/>
                <constraint firstItem="x3m-nw-HqX" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="iNb-9F-iK2"/>
                <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"/>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="icon_logo" width="116" height="116"/>
        <namedColor name="ThemeColor">
            <color red="0.99215686274509807" green="0.82745098039215681" blue="0.015686274509803921" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
        </namedColor>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
BrokerDriver/SceneDelegate.swift
@@ -16,13 +16,11 @@
        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()
        let nav = BaseNavigationController(rootViewController: LoginVC())
        window?.rootViewController = nav
        window?.overrideUserInterfaceStyle = .light
        window?.makeKeyAndVisible()
    }
    func sceneDidDisconnect(_ scene: UIScene) {
Podfile
@@ -7,6 +7,8 @@
  # Pods for BrokerDriver
  pod 'JQTools',:path=> '/Users/yvkd/MyProject/JQTools'
  pod 'FFPage'
  pod 'SPPageMenu'
  post_install do |installer|
    installer.pods_project.targets.each do |target|