杨锴
2024-11-05 0fb7413df54760ac6bd15b90b738e0706de1629e
fix bug
88个文件已修改
22个文件已添加
1717 ■■■■ 已修改文件
XQMuse.xcodeproj/project.pbxproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Base/BaseNav.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Base/BaseTabBarVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/Def.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/Enums/Enums.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Config/LaunchImageHelper.swift 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseDetialVC.swift 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Course/View/CourseDetailHeaderView.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/HomeVC.swift 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/BackgroundVoiceVC.swift 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemDetailVC.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemDetailVC.xib 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/HomeItemListVC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/PaymentOrderVC.swift 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/SearchContentVC.swift 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/VC/SearchVC.swift 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Home/View/HomeTopMenuView.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/LoginVC.swift 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/LoginVC.xib 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordVC.swift 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/ForgotPasswordVC.xib 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/RegisterVC.swift 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/VC/UpdatePhoneVC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/View/Popup_1_View.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Login/View/Popup_1_View.xib 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.swift 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/MeVC.xib 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/AddBankInfoVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/AddBankInfoVC.xib 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BindAccountVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BindPhone_1_VC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/BindPhone_2_VC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerVC.swift 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/ContactCustomerVC.xib 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/InviteVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/LevelVC.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/LogoutAccountVC.swift 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/LogoutAccountVC.xib 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SettingVC.swift 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SettingVC.xib 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.swift 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/UserProfileVC.xib 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/VIPCenterVC.swift 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Me/VC/VIPCenterVC.xib 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Models.swift 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Network/Services.swift 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/CommonAlertSheetView.swift 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/CommonAlertSheetView.xib 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Other/View/CommonAlertView.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/PavilionVC.swift 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/PayMusicView/PayMusicVC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuideVC.swift 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_2_VC.swift 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/PlanGuide_3_VC.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/TreeTeskVC.swift 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/View/TreeTeskListView.swift 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse/Root/TreeGroup/View/TreeTeskListView.xib 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
XQMuse.xcodeproj/project.pbxproj
@@ -88,6 +88,7 @@
        1338A6DE2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */; };
        13391E022C73334000B9513F /* PavilionDetailVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13391E012C73334000B9513F /* PavilionDetailVC.xib */; };
        13391E032C73334000B9513F /* PavilionDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13391E002C73334000B9513F /* PavilionDetailVC.swift */; };
        1341970B2CD9CDE800D324B7 /* LaunchImageHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */; };
        134783CF2C6C86EC0096C736 /* PlaySettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134783CE2C6C86EC0096C736 /* PlaySettingView.swift */; };
        134783D12C6C86F40096C736 /* PlaySettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 134783D02C6C86F40096C736 /* PlaySettingView.xib */; };
        134803D32C76E29E00F4FDDA /* MyCommentListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */; };
@@ -393,6 +394,7 @@
        1338A6DC2C76DD5E006CDD15 /* SpendingDetailInfoVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpendingDetailInfoVC.xib; sourceTree = "<group>"; };
        13391E002C73334000B9513F /* PavilionDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PavilionDetailVC.swift; sourceTree = "<group>"; };
        13391E012C73334000B9513F /* PavilionDetailVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PavilionDetailVC.xib; sourceTree = "<group>"; };
        1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchImageHelper.swift; sourceTree = "<group>"; };
        134783CE2C6C86EC0096C736 /* PlaySettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySettingView.swift; sourceTree = "<group>"; };
        134783D02C6C86F40096C736 /* PlaySettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PlaySettingView.xib; sourceTree = "<group>"; };
        134803D22C76E29E00F4FDDA /* MyCommentListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyCommentListVC.swift; sourceTree = "<group>"; };
@@ -1097,6 +1099,7 @@
                13985DB72C69B80D0046B6DC /* Themes.swift */,
                135B1D1F2C8863D10089A9BE /* Types.swift */,
                132C4B762CC0E5CA00EA56AF /* XQMuse-Bridging-Header.h */,
                1341970A2CD9CDE800D324B7 /* LaunchImageHelper.swift */,
            );
            path = Config;
            sourceTree = "<group>";
@@ -1740,6 +1743,7 @@
                130C070B2C76D8F200ADB098 /* SpendingDetailContentVC.swift in Sources */,
                131CE0F92C91298E00D1234A /* TreeTeskListView.swift in Sources */,
                13EC08912C74990B00E00128 /* EmptyCCell.swift in Sources */,
                1341970B2CD9CDE800D324B7 /* LaunchImageHelper.swift in Sources */,
                13F24E422C758DF100D2BA90 /* LogoutAccountVC.swift in Sources */,
                135C2A6E2C7F033300CC2A67 /* CLSlider.swift in Sources */,
                13649F9F2C770C9C00F4E0EE /* ContactCustomerDetailVC.swift in Sources */,
@@ -1941,7 +1945,7 @@
                    "$(inherited)",
                    "@executable_path/Frameworks",
                );
                MARKETING_VERSION = 1.0;
                MARKETING_VERSION = 1.0.0;
                OTHER_LDFLAGS = (
                    "$(inherited)",
                    "-ObjC",
@@ -2096,7 +2100,7 @@
                    "$(inherited)",
                    "@executable_path/Frameworks",
                );
                MARKETING_VERSION = 1.0;
                MARKETING_VERSION = 1.0.0;
                OTHER_LDFLAGS = (
                    "$(inherited)",
                    "-ObjC",
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png
XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png
XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png
XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "bg_ccc@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "bg_ccc@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png
XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "组 20@2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "组 20@3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@2x.png
XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@3x.png
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json
New file
@@ -0,0 +1,22 @@
{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "filename" : "bt_private @2x.png",
      "idiom" : "universal",
      "scale" : "2x"
    },
    {
      "filename" : "bt_private @3x.png",
      "idiom" : "universal",
      "scale" : "3x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png
XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png
XQMuse/Base/BaseNav.swift
@@ -88,7 +88,7 @@
                                }
                                if viewController is TreeTeskVC{
        if viewController is TreeTeskVC || viewController is HomeVC{
                                                if #available(iOS 15.0, *) {
                                                                navigationBar.standardAppearance.backgroundColor = .white
                                                                navigationBar.scrollEdgeAppearance?.backgroundColor = .white
XQMuse/Base/BaseTabBarVC.swift
@@ -85,7 +85,7 @@
                override func layoutSubviews() {
                                super.layoutSubviews()
                                for (index,item) in subviews.enumerated() {
        for (_,item) in subviews.enumerated() {
                                                if item.classForCoder == NSClassFromString("UITabBarButton"){
                                                                if (item.value(forKey: "_label") as? UILabel)?.text?.contains("树苗") ?? false{
                                                                                item.isHidden = true
XQMuse/Config/Def.swift
@@ -19,6 +19,7 @@
let locationTool = JQ_LocationTool.instance()
let ShareAppleKey = ""
let DocumentPath =  NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,FileManager.SearchPathDomainMask.userDomainMask,true).last
var sceneDelegate:SceneDelegate? = {
    var uiScreen:UIScene?
XQMuse/Config/Enums/Enums.swift
@@ -136,7 +136,7 @@
                                switch self {
                                                case .man:return "男"
                                                case .woman:return "女"
                                                case .encrypt:return "保密"
                                                case .encrypt:return ""
                                }
                }
XQMuse/Config/LaunchImageHelper.swift
New file
@@ -0,0 +1,253 @@
//
//  LaunchImageHelper.swift
//  XQMuse
//
//  Created by 无故事王国 on 2024/11/5.
//
import Foundation
class LaunchImageHelper {
    static func snapshotStoryboard(sbName: String, isPortrait: Bool) -> UIImage? {
        if sbName.isEmpty {
            return nil
        }
        let storyboard = UIStoryboard(name: sbName, bundle: nil)
        guard let vc = storyboard.instantiateInitialViewController() else {
            return nil
        }
        vc.view.frame = UIScreen.main.bounds
        if isPortrait {
            if vc.view.frame.size.width > vc.view.frame.size.height {
                vc.view.frame = CGRect(x: 0, y: 0, width: vc.view.frame.size.height, height: vc.view.frame.size.width)
            }
        } else {
            if vc.view.frame.size.width < vc.view.frame.size.height {
                vc.view.frame = CGRect(x: 0, y: 0, width: vc.view.frame.size.height, height: vc.view.frame.size.width)
            }
        }
        vc.view.setNeedsLayout()
        vc.view.layoutIfNeeded()
        UIGraphicsBeginImageContextWithOptions(vc.view.frame.size, false, UIScreen.main.scale)
        vc.view.layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
    static func snapshotStoryboardForPortrait(sbName: String) -> UIImage? {
        return snapshotStoryboard(sbName: sbName, isPortrait: true)
    }
    static func snapshotStoryboardForLandscape(sbName: String) -> UIImage? {
        return snapshotStoryboard(sbName: sbName, isPortrait: false)
    }
    static func changeAllLaunchImageToPortrait(_ image: UIImage?) {
        guard let image = image else {
            return
        }
        // 全部替换为竖屏启动图
        let resizedImage = resizeImage(image, toPortraitScreenSize: true)
        BBADynamicLaunchImage.replaceLaunchImage(resizedImage)
    }
    static func changeAllLaunchImageToLandscape(_ image: UIImage?) {
        guard let image = image else {
            return
        }
        // 全部替换为横屏启动图
        let resizedImage = resizeImage(image, toPortraitScreenSize: false)
        BBADynamicLaunchImage.replaceLaunchImage(resizedImage)
    }
    static func changePortraitLaunchImage(_ p: UIImage) {
        // Implementation for this function is missing
    }
    static func resizeImage(_ image: UIImage, toPortraitScreenSize: Bool) -> UIImage {
        // Implementation for this function is missing
        return image
    }
}
private class BBADynamicLaunchImage {
    static func launchImageCacheDirectory() -> String? {
        let bundleID = Bundle.main.infoDictionary?["CFBundleIdentifier"] as? String
        let fm = FileManager.default
        // iOS13之前
        if var cachesDirectory = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first {
            cachesDirectory.append(contentsOf: "Snapshots")
            cachesDirectory.append(contentsOf: bundleID!)
            if fm.fileExists(atPath: cachesDirectory) {
                return cachesDirectory
            }
        }
        // iOS13
        if let libraryDirectory = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).first {
            let snapshotsPath = String(format: "%@/SplashBoard/Snapshots/%@ - {DEFAULT GROUP}", libraryDirectory, bundleID ?? "")
            if fm.fileExists(atPath: snapshotsPath) {
                return snapshotsPath
            }
        }
        return nil
    }
    static func isSnapShotName(_ name: String) -> Bool {
        // 新系统后缀
        let snapshotSuffixs = ".ktx"
        if name.hasSuffix(snapshotSuffixs) {
            return true
        }
        // 老系统后缀
        let snapshotSuffixs2 = ".png"
        if name.hasSuffix(snapshotSuffixs2) {
            return true
        }
        return false
    }
    @discardableResult
    static func replaceLaunchImage(_ replacementImage: UIImage?) -> Bool {
        guard let image = replacementImage else {return false}
        return self.replaceLaunchImage(replacementImage: image, compressionQuality: 0.8, customValidation: nil)
    }
    @discardableResult
    static func replaceLaunchImage(_ replacementImage: UIImage?, compressionQuality: CGFloat) -> Bool {
        guard let image = replacementImage else {return false}
        return self.replaceLaunchImage(replacementImage: image, compressionQuality: compressionQuality, customValidation: nil)
    }
    static func replaceLaunchImage(replacementImage: UIImage, compressionQuality: CGFloat, customValidation: ((UIImage,UIImage) -> Bool)?) -> Bool {
        let data = replacementImage.jpegData(compressionQuality: compressionQuality)
        if data == nil {
            return false
        }
        //        if !checkImageMatchScreenSize(image: replacementImage) {
        //            return false
        //        }
        guard let cacheDir = launchImageCacheDirectory() else {
            return false
        }
        let cachesParentDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
        let tmpDir = (cachesParentDir as NSString).appendingPathComponent("_tmpLaunchImageCaches")
        let fm = FileManager.default
        if fm.fileExists(atPath: tmpDir) {
            do {
                try fm.removeItem(atPath: tmpDir)
            } catch {
                return false
            }
        }
        do {
            try fm.moveItem(atPath: cacheDir, toPath: tmpDir)
        } catch {
            return false
        }
        var cacheImageNames = [String]()
        if let contents = try? fm.contentsOfDirectory(atPath: tmpDir) {
            for name in contents {
                if isSnapShotName(name) {
                    cacheImageNames.append(name)
                }
            }
        }
        for name in cacheImageNames {
            let filePath = (tmpDir as NSString).appendingPathComponent(name)
            var result = true
            if customValidation != nil{
                if let cachedImageData = try? Data(contentsOf: URL(string: filePath)!),let cachedImage = imageFromData(data: cachedImageData as NSData){
                    result = customValidation!(cachedImage,replacementImage)
                }
            }
            if result {
                do {
                    try data?.write(to: URL(fileURLWithPath: filePath), options: .atomic)
                } catch {
                    return false
                }
            }
        }
        try? fm.moveItem(atPath: tmpDir, toPath: cacheDir)
        if fm.fileExists(atPath: tmpDir) {
            do {
                try fm.removeItem(atPath: tmpDir)
            } catch {
                return false
            }
        }
        return true
    }
    static func imageFromData(data: NSData) -> UIImage? {
        guard let source = CGImageSourceCreateWithData(data, nil) else {
            return nil
        }
        if let imageRef = CGImageSourceCreateImageAtIndex(source, 0, nil) {
            let originImage = UIImage(cgImage: imageRef)
            return originImage
        }
        return nil
    }
    func getImageSize(imageData: NSData) -> CGSize {
        guard let source = CGImageSourceCreateWithData(imageData, nil) else {
            return CGSize.zero
        }
        if let imageRef = CGImageSourceCreateImageAtIndex(source, 0, nil) {
            let width = CGFloat(imageRef.width)
            let height = CGFloat(imageRef.height)
            return CGSize(width: width, height: height)
        }
        return CGSize.zero
    }
    /// 检查图片大小
    static func checkImageMatchScreenSize(image: UIImage) -> Bool {
        let screenSize = CGSize(width: UIScreen.main.bounds.size.width * UIScreen.main.scale,
                                height: UIScreen.main.bounds.size.height * UIScreen.main.scale)
        let imageSize = CGSize(width: image.size.width * image.scale,
                               height: image.size.height * image.scale)
        if imageSize.equalTo(screenSize) {
            return true
        }
        if imageSize.equalTo(CGSize(width: screenSize.height, height: screenSize.width)) {
            return true
        }
        return false
    }
}
XQMuse/Root/.DS_Store
Binary files differ
XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -17,8 +17,12 @@
                <rect key="frame" x="0.0" y="0.0" width="114" height="109"/>
                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                <subviews>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_1" translatesAutoresizingMaskIntoConstraints="NO" id="D7q-iI-B0n">
                        <rect key="frame" x="39.666666666666671" y="29" width="34.666666666666671" height="31.666666666666671"/>
                    <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="course_1" translatesAutoresizingMaskIntoConstraints="NO" id="D7q-iI-B0n">
                        <rect key="frame" x="39.666666666666664" y="29" width="34.999999999999993" height="31.666666666666671"/>
                        <constraints>
                            <constraint firstAttribute="width" relation="lessThanOrEqual" constant="35" id="A6U-Ns-BoS"/>
                            <constraint firstAttribute="height" relation="lessThanOrEqual" constant="31.5" id="xu0-nX-9PR"/>
                        </constraints>
                    </imageView>
                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eyG-jG-ONh">
                        <rect key="frame" x="51.666666666666664" y="77" width="10.666666666666664" height="14.333333333333329"/>
XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift
@@ -50,7 +50,7 @@
                let vc = VIPCenterVC()
                JQ_currentViewController().jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true)
                let vc = PaymentOrderVC(courseItemModel: m,type: .course,giftToOther: true)
                JQ_currentViewController().jq_push(vc:vc)
            }
                                }
XQMuse/Root/Course/VC/CourseDetialVC.swift
@@ -152,7 +152,7 @@
                    }
                    if needPayment{
                        let attribute    = AttributedStringbuilder.build().add(string: "    疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.generalPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "  立即购买     ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                        let attribute    = AttributedStringbuilder.build().add(string: "    疗愈币", withFont: .systemFont(ofSize: 12,weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "\(m.iosPrice.jq_formatFloat)", withFont: .systemFont(ofSize: 21.71, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).add(string: "  立即购买     ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
                        weakSelf.studyBtn.setAttributedTitle(attribute, for: .normal)
                    }else{
                        let attribute = AttributedStringbuilder.build().add(string: "    立即学习    ", withFont: .systemFont(ofSize: 16, weight: .bold), withColor: UIColor(hexString: "#F6F6F6")!).mutableAttributedString
@@ -164,7 +164,7 @@
                                                                }else{
                    weakSelf.style = .style2
                    DispatchQueue.main.asyncAfter(delay: 0.5) {
                        weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl, delegate: self!)
                        weakSelf.headerView.setVideo(url: m.detailUrl, coverImageUrl: m.coverUrl.jq_urlEncoded(), delegate: self!)
                    }
                    weakSelf.pageMenu.setItems(["简介"], selectedItemIndex: 0)
                                                                }
@@ -268,15 +268,15 @@
                                                                push(vc: vc);return
                                                }
                                                let vc = PaymentOrderVC(id: m.id, type: .course)
            let vc = PaymentOrderVC(courseItemModel: m, type: .course)
                                                push(vc: vc)
                                }
                }
                @objc func sendGift(_ btn:QMUIButton){
                                if let price = courseDetailModel?.generalPrice{
        if let price = courseDetailModel?.iosPrice{
                                                CourseSendGiftView.show(price:price) {
                let vc = PaymentOrderVC(id: self.courseDetailModel!.id,type: .course,giftToOther: true)
                let vc = PaymentOrderVC(courseItemModel: self.courseDetailModel!,type: .course,giftToOther: true)
                                                                self.push(vc: vc)
                                                }
                                }
XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift
@@ -34,14 +34,14 @@
                                Services.getCourseCategory().subscribe(onNext: {data in
                                                for v in data.data ?? []{
                                                                self.subTitleItems.append(TitleItem(id:v.id,title: v.name,coverImage: v.imageUrl))
                                                                self.subTitleItems.append(TitleItem(id:v.id,title: v.name,coverImage: v.imageUrl.jq_urlEncoded()))
                                                }
                                                self.collectionView.reloadData()
                                }).disposed(by: disposeBag)
                                Services.getCourseBannerList().subscribe(onNext: {data in
                                                for (index,v) in (data.data ?? []).enumerated(){
                self.bannerModels.append(CommonBannerModel(index: index, id: v.id, name: v.name, resource:v.imageUrl, mediaType: .imageUrl,courseId: v.courseId))
                self.bannerModels.append(CommonBannerModel(index: index, id: v.id, name: v.name, resource:v.imageUrl.jq_urlEncoded(), mediaType: .imageUrl,courseId: v.courseId))
                                                }
                                                self.collectionView.reloadData()
                                }).disposed(by: disposeBag)
XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift
@@ -36,7 +36,7 @@
                                                                self.cell0!.setContent(title: "导师简介", content: m.tutorIntroduction)
                                                                self.cell1!.setItems(m.list)
                                                                self.tableView?.reloadData()
                                                                self.headerView.updateVideoUrl(m.videoUrl,autoPlay: false,placeHoderImageUrl: m.coverUrl)
                                                                self.headerView.updateVideoUrl(m.videoUrl,autoPlay: false,placeHoderImageUrl: m.coverUrl.jq_urlEncoded())
                                                }
                                }).disposed(by: disposeBag)
    }
XQMuse/Root/Course/View/CourseDetailHeaderView.swift
@@ -27,7 +27,7 @@
                                label_title.text = model.courseTitle
                                label_teacher.text = "导师 \(model.tutor)"
                                label_studyNum.text = "\(model.count)人已加入学习"
                                image_cover.sd_setImage(with: URL(string: model.coverUrl))
                                image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded()))
                }
    func setVideo(url:String,coverImageUrl:String,delegate:CLPlayerDelegate){
XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift
@@ -31,9 +31,8 @@
                func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
        img_offine.isHidden = true
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
        let imageUrls = model.coverUrl.components(separatedBy: ",")
        let imageUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",")
        if showType == .horizontal{
            img_cover.sd_setImage(with: URL(string: imageUrls.first))
        }else{
@@ -53,7 +52,7 @@
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
@@ -61,7 +60,7 @@
                }
                func setCourseModel(_ model:CourseModel){
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
                                img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded()))
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
@@ -82,7 +81,7 @@
                case .payment:
                    image_free.isHidden = true
                    view_price.isHidden = false
                    label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
                    label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
                default:break
            }
        }
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift
@@ -40,14 +40,15 @@
                }
                func setCourseModel(_ model:CourseModel){
                                img_cover.sd_setImage(with: URL(string: model.coverUrl))
        img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").first))
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
        if model.courseType == .online{
            img_offline.isHidden = true
            setChargePrice(model.chargeType, price: model.generalPrice)
            setChargePrice(model.chargeType, price: model.iosPrice)
        }else{
            img_offline.isHidden = false
            img_vip.isHidden = true
@@ -57,13 +58,13 @@
                }
    func setMeditationModel(_ model:MeditationModel){
        img_cover.sd_setImage(with: URL(string: model.coverUrl))
        img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").first))
        label_title.text = model.meditationTitle
        label_subTitle.text = model.coverDescription
        label_num.text = "\(model.realLearnedNum)"
        img_offline.isHidden = true
        setChargePrice(model.chargeType, price: model.generalPrice)
        setChargePrice(model.chargeType, price: model.iosPrice)
    }
    private func setChargePrice(_ type:ChargeType,price:Double){
XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift
@@ -44,17 +44,17 @@
    }
                func setMeditationModel(_ model:MeditationModel){
        img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last))
        img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").last))
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
                                label_num.text = "\(model.realLearnedNum)"
        img_offline.isHidden = true
        setChargePrice(model.chargeType, price: model.generalPrice)
        setChargePrice(model.chargeType, price: model.iosPrice)
                }
                func setCourseModel(_ model:CourseModel){
                                img_cover.sd_setImage(with: URL(string: model.coverUrl.components(separatedBy: ",").last))
                                img_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded().components(separatedBy: ",").last))
                                label_title.text = model.courseTitle
                                label_subTitle.text = model.briefIntroduction
                                label_num.text = "\(model.count)"
@@ -62,7 +62,7 @@
        if model.courseType == .online{
            img_offline.isHidden = true
            setChargePrice(model.chargeType, price: model.generalPrice)
            setChargePrice(model.chargeType, price: model.iosPrice)
        }else{
            img_offline.isHidden = false
            img_vip.isHidden = true
XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift
@@ -18,7 +18,7 @@
    }
                func setModel(_ model:BGMModel){
                                imgView.sd_setImage(with: URL(string: model.imageUrl))
        imgView.sd_setImage(with: URL(string: model.imageUrl.jq_urlEncoded()))
                }
}
XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift
@@ -26,10 +26,15 @@
                func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
        if model.id == 0{
            cover_bgImage.image = UIImage(named: "bt_private");return
        }
                                label_title.text = model.meditationTitle
                                label_subTitle.text = model.coverDescription
        let imgUrls = model.coverUrl.components(separatedBy: ",")
        let imgUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",")
        if showType == .horizontal{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.first))
        }else{
XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift
@@ -43,11 +43,17 @@
    func setMeditationModel(_ model:MeditationModel,showType:DisplayType){
        self.showType = showType
        if model.id == 0{
            cover_bgImage.image = UIImage(named: "bt_private");return
        }
        label_title.text = model.meditationTitle
        label_subTitle.text = model.coverDescription
        let imgUrls = model.coverUrl.components(separatedBy: ",")
        let imgUrls = model.coverUrl.jq_urlEncoded().components(separatedBy: ",")
        if showType == .horizontal{
            cover_bgImage.sd_setImage(with: URL(string: imgUrls.first))
        }else{
@@ -64,7 +70,7 @@
            case .payment:
                image_free.isHidden = true
                view_price.isHidden = false
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.generalPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: UIFont(name: "DIN-Bold", size: 7.11) ?? UIFont.systemFont(ofSize: 7, weight: .bold), withColor: .white).add(string: "\(model.iosPrice.jq_formatFloat)", withFont: UIFont(name: "DIN-Bold", size: 11.44) ?? .systemFont(ofSize: 11,weight: .bold), withColor: .white).mutableAttributedString
            default:break
        }
    }
XQMuse/Root/Home/HomeVC.swift
@@ -10,6 +10,7 @@
import RxSwift
import MediaPlayer
import MJRefresh
import SDWebImage
let SetBGMSuccess_Noti = Notification.Name.init("SetBGMSuccess_Noti")
@@ -55,6 +56,12 @@
        })
                                getData()
//        DispatchQueue.main.asyncAfter(delay: 3.0) {
//            Popup_1_View.show(state: .success, title: "修改成功", subtitle: "您的密码已修改成功,快去登录账户吧") {
//                self.navigationController?.popToRootViewController(animated: true)
//            }
//        }
    }
                override func setUI() {
@@ -157,7 +164,7 @@
                                Services.getCategoryListByType(type: 1).subscribe(onNext: { data in
                                                var items = [HomeTopMenuItem]()
                                                for v in data.data ?? []{
                                                                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl, imageFrom: .url)
                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.firstIconUrl.jq_urlEncoded(), imageFrom: .url)
                                                                items.append(model)
                                                }
@@ -172,7 +179,7 @@
                                Services.getCategoryListByType(type: 2).subscribe(onNext: { data in
                                                var items = [HomeTopMenuItem]()
                                                for v in data.data ?? []{
                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl, imageFrom: .url)
                let model = HomeTopMenuItem(id: v.id, title: v.categoryName, image: v.secondIconUrl.jq_urlEncoded(), imageFrom: .url)
                                                                items.append(model)
                                                }
            self.viewModel.homeBottomMenuItems = items
@@ -186,7 +193,13 @@
                                Services.getPersonalityPlan().subscribe(onNext: { data in
                                                if let m = data.data{
                if m.count > 0{
                                                                self.viewModel.privateTodyModels = m
                }else{
                    let m = MeditationModel()
                    m.id = 0
                    self.viewModel.privateTodyModels = [m]
                }
                                                                self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none)
                                                }
                                }).disposed(by: disposeBag)
@@ -207,6 +220,31 @@
                                                                }
                                                                self.tableView.reloadData()
                                                }
                                }).disposed(by: disposeBag)
        Services.getLunchPage().subscribe(onNext: {data in
            if let url = data.data{
                let path = DocumentPath! + "/launchScreen/"
                let image = SDImageCache(namespace: url.jq_md5String(), diskCacheDirectory: path)
                let loader = SDImageLoadersManager.shared
                let manager = SDWebImageManager(cache: image, loader: loader)
                //不存在缓存
                if image.imageFromDiskCache(forKey: url) == nil{
                    manager.loadImage(with: URL(string: url), progress: nil) { image, _, _, _, complete, _ in
                        LaunchImageHelper.changeAllLaunchImageToPortrait(image)
                    }
                }
                else{
                    //取缓存
                    if let data = image.diskImageData(forKey: url){
                        let image = UIImage(data: data)
                        LaunchImageHelper.changeAllLaunchImageToPortrait(image)
                    }
                }
            }
                                }).disposed(by: disposeBag)
                }
@@ -248,6 +286,8 @@
            if let m = viewModel.todyModel{
                let vc = HomeItemDetailVC(id: m.id)
                push(vc: vc)
            }else{
                alert(msg: "平台暂未设置今日疗愈")
            }
        }
@@ -262,7 +302,13 @@
                                if indexPath.section == 0{
            //每日疗愈
                                                let cell = tableView.dequeueReusableCell(withIdentifier: "_Home_Style_1_TCell") as! Home_Style_1_TCell
            if viewModel.todyModel?.id != 0{
                                                cell.model = viewModel.todyModel
                cell.view_data.isHidden = false
            }else{
                cell.img_cover.image = UIImage(named: "bg_today")
                cell.view_data.isHidden = true
            }
                                                return cell
                                }else if indexPath.section == 1{
            //私人定制
XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift
@@ -22,6 +22,7 @@
                @IBOutlet weak var label_title: UILabel!
                @IBOutlet weak var label_joinNum: UILabel!
                @IBOutlet weak var img_play: UIImageView!
    @IBOutlet weak var view_data: UIView!
                
    override func awakeFromNib() {
        super.awakeFromNib()
XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
@@ -24,13 +24,13 @@
                        <rect key="frame" x="0.0" y="247.66666666666663" width="398" height="27"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="缓解压力|00:00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bu5-9N-LaQ">
                                <rect key="frame" x="19.666666666666664" y="7.3333333333333428" width="81.333333333333343" height="12"/>
                                <rect key="frame" x="19.666666666666671" y="7.3333333333333428" width="80.999999999999986" height="12"/>
                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/>
                                <color key="textColor" red="0.94901960784313721" green="0.92549019607843142" blue="0.97254901960784312" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0人已参加练习" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KpH-Aq-7Pf">
                                <rect key="frame" x="310.66666666666669" y="7.3333333333333428" width="69.333333333333314" height="12"/>
                                <rect key="frame" x="312.33333333333331" y="7.3333333333333428" width="67.666666666666686" height="12"/>
                                <fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/>
                                <color key="textColor" red="0.94901960780000005" green="0.92549019610000005" blue="0.97254901959999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
@@ -76,6 +76,7 @@
                <outlet property="img_play" destination="g9v-rM-WZr" id="eqA-n5-5Qy"/>
                <outlet property="label_joinNum" destination="KpH-Aq-7Pf" id="51p-uN-6M7"/>
                <outlet property="label_title" destination="bu5-9N-LaQ" id="TM0-io-hMz"/>
                <outlet property="view_data" destination="KW7-hr-gUW" id="xQA-2a-Hfe"/>
            </connections>
            <point key="canvasLocation" x="140.45801526717557" y="104.92957746478874"/>
        </tableViewCell>
XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift
@@ -53,14 +53,14 @@
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (isVip == .yes && m.chargeType == .vipFree){
        if m.chargeType == .free || (isVip == .yes && m.chargeType == .vipFree) || (m.chargeType == .payment && m.isBuy == .yes){
                                                let vc = HomeItemDetailVC(id: m.id)
                                                JQ_currentViewController().jq_push(vc: vc)
                                                return
                                }
                                if m.chargeType == .payment && m.paidStatus == .no{
            let vc = PaymentOrderVC(id: m.id,type: .muse)
                                if m.chargeType == .payment && m.isBuy == .no{
            let vc = PaymentOrderVC(museItemModel: m,type: .muse)
                                                JQ_currentViewController().jq_push(vc: vc)
                                                return
                                }
XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift
@@ -43,10 +43,13 @@
                func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let m = meditationModels[indexPath.row]
        guard m.id != 0 else{
            alert(msg: "平台暂未设置私人定制");return
        }
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
            let detailVC = HomeItemDetailVC(id: meditationModels[indexPath.row].id)
            JQ_currentViewController().jq_push(vc: detailVC)
        }else{
@@ -54,7 +57,7 @@
                let vc = VIPCenterVC()
                JQ_currentViewController().jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .muse)
                let vc = PaymentOrderVC(museItemModel: m,type: .muse)
                JQ_currentViewController().jq_push(vc:vc)
            }
        }
XQMuse/Root/Home/VC/BackgroundVoiceVC.swift
@@ -20,6 +20,7 @@
                private var playAtIndex:IndexPath?
                private var tempPlayer:AVPlayer?
                private var isPlaying:Bool = false
    private var needPopRoot = false
                override func viewDidDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
@@ -34,6 +35,14 @@
                override func viewDidLoad() {
        super.viewDidLoad()
                                title = "心泉·疗愈"
        yy_popBlock = { [weak self] in
            if self?.needPopRoot ?? false{
                NotificationCenter.default.post(name: PlantGuideQuit_Noti, object: nil, userInfo: nil)
            }else{
                self?.navigationController?.popViewController(animated: true)
            }
        }
                                slider_voice.isEnabled = false
                                slider_voice.value = Float(settingModel?.volume ?? 0.5)
@@ -96,7 +105,11 @@
                                                UserDefaultSettingViewModel.saveSetting(settingModel!)
                                                audioPlayer.playSceneAt(items[index.row].audioFile)
                                                alertSuccess(msg: "设置成功")
            needPopRoot = true
                                                NotificationCenter.default.post(name: SetBGMSuccess_Noti, object: items[index.row])
            DispatchQueue.main.asyncAfter(delay: 0.6) {
                self.navigationController?.popViewController()
            }
                                }
                }
XQMuse/Root/Home/VC/HomeItemDetailVC.swift
@@ -63,12 +63,16 @@
                                }
                                Services.getMeditationDetail(id: id).subscribe(onNext: {[unowned self] data in
                                                self.model = data.data
                                                self.collect_bitem.image = data.data?.favorite == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect_1")
                                                self.collect_bitem.tintColor = data.data?.favorite == .yes ? UIColor(hexString: "fe5b60"):.white
            if let m = data.data{
                self.model = m
                let dateTuple = Date.jq_formateToTime_tuple(m.meditationSecondList.first ?? 0)
                self.label_totalTime.text = String(format: "%02ld:%02ld", dateTuple.hour * 60 + dateTuple.minute,dateTuple.second)
                self.collect_bitem.image = m.favorite == .yes ? UIImage(named: "btn_collect_1_s"):UIImage(named: "btn_collect_1")
                self.collect_bitem.tintColor = m.favorite == .yes ? UIColor(hexString: "fe5b60"):.white
            self.img_background.sd_setImage(with: URL(string: data.data?.backgroundUrl ?? ""))
                                                if audioPlayer.meditationModel?.id == data.data?.id{
                if audioPlayer.meditationModel?.id == m.id{
                                                                audioPlayer.delegate = self
                }
                                                }
                                }).disposed(by: disposeBag)
@@ -92,7 +96,7 @@
        if let m = model,timeLook > 0{
            Services.watchMuse(id: m.id, timeLook: timeLook).subscribe(onNext: {_ in
                NotificationCenter.default.post(name: TreeTaskUpdate_Noti, object: nil)
            }).disposed(by: disposeBag)
        }
    }
@@ -119,7 +123,7 @@
                                slider_voice.setThumbImage(v1.qmui_snapshotLayerImage(), for: .highlighted)
                                view_coutdown.isHidden = true
                                view_function.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.15).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 1), endPoint: CGPoint(x: 0, y: 0), bounds: nil, locations: nil)
                                view_function.jq_gradientColor(colorArr: [UIColor.black.withAlphaComponent(0.35).cgColor,UIColor.clear.cgColor], cornerRadius: 0, startPoint: CGPoint(x: 0, y: 1), endPoint: CGPoint(x: 0, y: 0), bounds: nil, locations: nil)
                }
XQMuse/Root/Home/VC/HomeItemDetailVC.xib
@@ -94,13 +94,13 @@
                            </connections>
                        </button>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oe5-fX-A8S" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="351" y="113.33333333333336" width="20" height="37.333333333333329"/>
                            <rect key="frame" x="348.66666666666669" y="113.33333333333336" width="25" height="37.333333333333329"/>
                            <subviews>
                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="btn_comment" translatesAutoresizingMaskIntoConstraints="NO" id="6hW-9j-lFc">
                                    <rect key="frame" x="0.0" y="0.0" width="20" height="19"/>
                                    <rect key="frame" x="0.0" y="0.0" width="25" height="19"/>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IkS-qR-riK">
                                    <rect key="frame" x="6" y="24" width="8" height="13.333333333333336"/>
                                    <rect key="frame" x="6" y="24" width="13" height="13.333333333333336"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="13.333333333333336" id="cJY-hI-tRV"/>
                                    </constraints>
@@ -110,6 +110,7 @@
                                </label>
                            </subviews>
                            <constraints>
                                <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25" id="0On-N0-3L2"/>
                                <constraint firstItem="IkS-qR-riK" firstAttribute="leading" secondItem="oe5-fX-A8S" secondAttribute="leading" constant="6" id="8Og-t3-zKZ"/>
                                <constraint firstItem="6hW-9j-lFc" firstAttribute="top" secondItem="oe5-fX-A8S" secondAttribute="top" id="9f0-MM-MKO"/>
                                <constraint firstItem="6hW-9j-lFc" firstAttribute="centerX" secondItem="oe5-fX-A8S" secondAttribute="centerX" id="DCO-uI-WCX"/>
@@ -123,13 +124,13 @@
                            </connections>
                        </view>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="--" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xYv-9B-0fk">
                            <rect key="frame" x="22.666666666666657" y="73" width="257.33333333333337" height="17"/>
                            <rect key="frame" x="22.666666666666657" y="73" width="348.33333333333337" height="17"/>
                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
                            <color key="textColor" red="1" green="1" blue="1" alpha="1" 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="0CQ-Qn-OOa">
                            <rect key="frame" x="22.666666666666657" y="20.000000000000004" width="257.33333333333337" height="32.333333333333343"/>
                        <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="0CQ-Qn-OOa">
                            <rect key="frame" x="22.666666666666657" y="20.000000000000004" width="348.33333333333337" height="32.333333333333343"/>
                            <fontDescription key="fontDescription" type="system" pointSize="27"/>
                            <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
@@ -138,20 +139,19 @@
                    <constraints>
                        <constraint firstItem="xYv-9B-0fk" firstAttribute="top" secondItem="0CQ-Qn-OOa" secondAttribute="bottom" constant="20.5" id="3KZ-8O-C20"/>
                        <constraint firstItem="zwK-yd-ILF" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" id="AJS-lE-vP8"/>
                        <constraint firstAttribute="trailing" secondItem="oe5-fX-A8S" secondAttribute="trailing" constant="22" id="AKK-8O-ib9"/>
                        <constraint firstItem="zwK-yd-ILF" firstAttribute="top" secondItem="9ky-8U-0Iq" secondAttribute="bottom" constant="26" id="CE1-LO-1wC"/>
                        <constraint firstItem="xYv-9B-0fk" firstAttribute="leading" secondItem="0CQ-Qn-OOa" secondAttribute="leading" id="Fmy-xW-6Ac"/>
                        <constraint firstItem="P8W-2A-zOo" firstAttribute="centerY" secondItem="zwK-yd-ILF" secondAttribute="centerY" id="IGL-Li-8gU"/>
                        <constraint firstItem="xYv-9B-0fk" firstAttribute="trailing" secondItem="0CQ-Qn-OOa" secondAttribute="trailing" id="J00-LT-ihn"/>
                        <constraint firstItem="Soz-NO-Sl6" firstAttribute="centerX" secondItem="oe5-fX-A8S" secondAttribute="centerX" id="JQk-V6-Wr2"/>
                        <constraint firstItem="rML-fW-BqA" firstAttribute="leading" secondItem="P8W-2A-zOo" secondAttribute="trailing" id="LQh-3z-ZWN"/>
                        <constraint firstAttribute="height" constant="260" id="Nfj-Hc-QTz"/>
                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="260" id="Nfj-Hc-QTz"/>
                        <constraint firstItem="9ky-8U-0Iq" firstAttribute="top" secondItem="xYv-9B-0fk" secondAttribute="bottom" constant="22" id="NrV-Mq-ATf"/>
                        <constraint firstItem="Soz-NO-Sl6" firstAttribute="top" secondItem="oe5-fX-A8S" secondAttribute="bottom" constant="26" id="QAM-jd-nhq"/>
                        <constraint firstItem="9t3-fS-clT" firstAttribute="centerY" secondItem="9ky-8U-0Iq" secondAttribute="centerY" id="RCH-if-FSR"/>
                        <constraint firstItem="P8W-2A-zOo" firstAttribute="leading" secondItem="zwK-yd-ILF" secondAttribute="trailing" constant="12.5" id="Re5-xC-yA4"/>
                        <constraint firstItem="9ky-8U-0Iq" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" constant="23.5" id="Tcc-7u-zff"/>
                        <constraint firstAttribute="trailing" secondItem="xYv-9B-0fk" secondAttribute="trailing" constant="113" id="WeW-cL-yXy"/>
                        <constraint firstAttribute="trailing" secondItem="0CQ-Qn-OOa" secondAttribute="trailing" constant="22" id="WUP-DX-tnt"/>
                        <constraint firstItem="xYv-9B-0fk" firstAttribute="leading" secondItem="vIs-Dn-PVO" secondAttribute="leading" constant="22.5" id="a5m-GS-Y4H"/>
                        <constraint firstItem="0CQ-Qn-OOa" firstAttribute="top" secondItem="vIs-Dn-PVO" secondAttribute="top" constant="20" id="az1-qw-mly"/>
                        <constraint firstItem="Soz-NO-Sl6" firstAttribute="leading" secondItem="rML-fW-BqA" secondAttribute="trailing" id="jUL-Yt-qbu"/>
@@ -232,9 +232,9 @@
            </subviews>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstAttribute="bottom" secondItem="vIs-Dn-PVO" secondAttribute="bottom" id="8Lx-5h-KB7"/>
                <constraint firstAttribute="bottom" secondItem="pbM-Fi-Xil" secondAttribute="bottom" id="A2E-n1-Phu"/>
                <constraint firstItem="vIs-Dn-PVO" firstAttribute="top" secondItem="3rZ-t0-pdK" secondAttribute="bottom" constant="38.5" id="GhF-Jw-JhV"/>
                <constraint firstAttribute="bottom" secondItem="vIs-Dn-PVO" secondAttribute="bottom" id="IG2-2Q-lSs"/>
                <constraint firstItem="Qgc-UW-rO1" firstAttribute="centerX" secondItem="pbM-Fi-Xil" secondAttribute="centerX" id="Kd3-PJ-yeJ"/>
                <constraint firstAttribute="trailing" secondItem="vIs-Dn-PVO" secondAttribute="trailing" id="Lty-fJ-f1s"/>
                <constraint firstItem="Qgc-UW-rO1" firstAttribute="centerY" secondItem="pbM-Fi-Xil" secondAttribute="centerY" id="M19-kC-51O"/>
XQMuse/Root/Home/VC/HomeItemListVC.swift
@@ -82,7 +82,7 @@
        let isVip = UserViewModel.getAvatarInfo().isVip
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
        if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
            let detailVC = HomeItemDetailVC(id: m.id)
            jq_push(vc: detailVC)
        }else{
@@ -90,7 +90,7 @@
                let vc = VIPCenterVC()
                jq_push(vc: vc)
            }else{
                let vc = PaymentOrderVC(id: m.id,type: .muse)
                let vc = PaymentOrderVC(museItemModel: m,type: .muse)
                jq_push(vc: vc)
            }
        }
XQMuse/Root/Home/VC/PaymentOrderVC.swift
@@ -38,7 +38,8 @@
                @IBOutlet weak var tf_phone: QMUITextField!
                @IBOutlet weak var label_walletBalance: UILabel!
                @IBOutlet weak var btn_isreadAgreement: UIButton!
                private var id:Int!
                private var museItemModel:MeditationModel?
    private var courseItemModel:CourseModel?
                private var giftUserId:Int?
                private var giftToOther:Bool!
                private var courseModel:CourseModel?
@@ -46,9 +47,10 @@
                private var balance:Double = 0
    private var type:PaymentOrderType!
    init(id:Int,type:PaymentOrderType,giftToOther:Bool = false) {
    init(museItemModel:MeditationModel? = nil,courseItemModel:CourseModel? = nil,type:PaymentOrderType,giftToOther:Bool = false) {
                                super.init(nibName: nil, bundle: nil)
                                self.id = id
        self.museItemModel = museItemModel
        self.courseItemModel = courseItemModel
                                self.giftToOther = giftToOther
        self.type = type
                }
@@ -66,36 +68,34 @@
                                getBalance()
        if type == .course{
            Services.getCourseDetail(courseId: id).subscribe(onNext: {data in
            Services.getCourseDetail(courseId: courseItemModel!.id).subscribe(onNext: {data in
                if let m = data.data{
                    self.courseModel = m
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl))
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded()))
                    self.label_courseName.text = m.courseTitle
                    self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                    self.label_teacher.text = "导师\(m.tutor)"
                    self.label_paymentCount.text = "x\(m.count)"
                    self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                }
            }).disposed(by: disposeBag)
        }
        if type == .muse{
            Services.getMeditationDetail(id: id).subscribe(onNext: {data in
            Services.getMeditationDetail(id: museItemModel!.id).subscribe(onNext: {data in
                if let m = data.data{
                    self.museModel = m
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl))
                    self.image_cover.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded()))
                    self.label_courseName.text = m.meditationTitle
                    self.label_price.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_price.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                    self.label_teacher.text = ""
                    self.label_paymentCount.text = "x1"
                    self.label_orderPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.generalPrice.jq_formatFloat)"
                    self.label_orderPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                    self.label_totalPrice.text = "愈疗币\(m.iosPrice.jq_formatFloat)"
                }
            }).disposed(by: disposeBag)
        }
    }
                override func setUI() {
@@ -165,12 +165,12 @@
        var id:Int = 0
        if let m = courseModel{
            money = m.generalPrice
            money = m.iosPrice
            id = m.id
        }
        if let m = museModel{
            money = m.generalPrice
            money = m.iosPrice
            id = m.id
        }
@@ -200,6 +200,10 @@
        Services.gvieCourse(orderForm: type, targetId: id,receiverId: giftUserId).subscribe(onNext: {[weak self]data in
            guard let weakSelf = self else { return }
            self?.museItemModel?.isBuy = .yes
            self?.courseItemModel?.isBuy = .yes
            self?.museModel?.isBuy = .yes
            self?.courseModel?.isBuy = .yes
            let vc = PaymentOrderResultVC(type: weakSelf.type, id: id, price: money)
            self?.push(vc: vc)
        }).disposed(by: disposeBag)
XQMuse/Root/Home/VC/SearchContentVC.swift
@@ -141,14 +141,14 @@
                        let vc = VIPCenterVC()
                        JQ_currentViewController().jq_push(vc: vc)
                    }else{
                        let vc = PaymentOrderVC(id: m.id,type: .course,giftToOther: true)
                        let vc = PaymentOrderVC(courseItemModel: m,type: .course,giftToOther: true)
                        JQ_currentViewController().jq_push(vc:vc)
                    }
                }
            case .muse:
                let m = museViewModel!.dataSource.value!.list[indexPath.row]
                if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.paidStatus == .yes){
                if m.chargeType == .free || (m.chargeType == .vipFree && isVip == .yes) || (m.chargeType == .payment && m.isBuy == .yes){
                    let detailVC = HomeItemDetailVC(id: m.id)
                    JQ_currentViewController().jq_push(vc: detailVC)
                }else{
@@ -156,7 +156,7 @@
                        let vc = VIPCenterVC()
                        JQ_currentViewController().jq_push(vc: vc)
                    }else{
                        let vc = PaymentOrderVC(id: m.id,type: .muse)
                        let vc = PaymentOrderVC(museItemModel: m,type: .muse)
                        JQ_currentViewController().jq_push(vc:vc)
                    }
                }
XQMuse/Root/Home/VC/SearchVC.swift
@@ -106,11 +106,6 @@
                                }).disposed(by: disposeBag)
                }
                override func viewDidDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
        SearchCache.writeToPath(serchType)
                }
                override func setUI() {
                                super.setUI()
                                view.backgroundColor = UIColor(hexString: "f6f6f6")
@@ -129,7 +124,8 @@
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.separatorStyle = .none
                                tableView.isScrollEnabled = false
        tableView.showsVerticalScrollIndicator = false
        tableView.showsHorizontalScrollIndicator = false
                                tableView.backgroundColor = .clear
                                tableView.register(UINib(nibName: "SearchHotTCell", bundle: nil), forCellReuseIdentifier: "_SearchHotTCell")
@@ -169,8 +165,13 @@
                                tf_search.resignFirstResponder()
                                SearchCache.writeToList(tf_search.text!)
        SearchCache.writeToPath(serchType)
        let vc = SearchContentVC(content: tf_search.text!, type: serchType)
                                jq_push(vc: vc)
        cacheSearchCollectionView.reloadData()
        tf_search.text = ""
                }
}
XQMuse/Root/Home/View/HomeTopMenuView.swift
@@ -48,7 +48,7 @@
                }
                func resetTopImage(){
                                if let imgUrl = UserDefaultSettingViewModel.getSetting()?.bgm?.imageUrl{
                                if let imgUrl = UserDefaultSettingViewModel.getSetting()?.bgm?.imageUrl.jq_urlEncoded(){
                                                image_top.sd_setImage(with: URL(string: imgUrl))
                                }
                }
XQMuse/Root/Login/LoginVC.swift
@@ -62,6 +62,7 @@
                @IBOutlet weak var btn_sendCode: UIButton!
                @IBOutlet weak var btn_isRead: UIButton!
    @IBOutlet weak var btn_wechat: UIButton!
    @IBOutlet weak var image_security: UIImageView!
    private var cellularData:CTCellularData!
@@ -181,8 +182,10 @@
                                switch viewModel.loginType.value{
                                                case .code:
                                                                tf_content.isSecureTextEntry = false
                image_security.image = UIImage(named: "icon_code")
                                                case .pwd:
                                                                tf_content.isSecureTextEntry = btn_eye.isSelected
                image_security.image = UIImage(named: "icon_pwd")
                                }
                }
                
@@ -202,8 +205,8 @@
                                guard viewModel.loginPhone.value.jq_isPhone else {alert(msg: "请输入正确手机号");return}
        Services.sendCode(phone:tf_phone.text!,type: .codeLogin).subscribe(onNext: {data in
                                                if let _ = data.data{
                                                                sender.jq_openCountDown(60, defultTitle: "发送验证码") {
            if data.code == 200{
                                                                sender.jq_openCountDown(60, defultTitle: "获取验证码") {
                                                                                sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
                                                                                sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
                                                                } completeClouse: {
@@ -218,7 +221,7 @@
                                guard viewModel.checkSafe() else {return}
                                guard btn_isRead.isSelected else {
                                                alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
            alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
                                }
                                Services.loginBy(phone: viewModel.loginPhone.value, content: viewModel.loginContent.value, type: viewModel.loginType.value).subscribe(onNext: { data in
@@ -238,23 +241,31 @@
                }
                @IBAction func userRegisterTreatyAction(_ sender: UIButton) {
                                let vc = LoginTreatyVC()
                                vc.topIndex = 0
                                vc.clickHandle {[unowned self] state in
                                                self.btn_isRead.isSelected = state
                                }
                                vc.modalPresentationStyle = .custom
                                present(vc, animated: true)
        let vc = WebVC(type: .user)
        vc.title = "用户注册协议"
        push(vc: vc)
//                                let vc = LoginTreatyVC()
//                                vc.topIndex = 0
//                                vc.clickHandle {[unowned self] state in
//                                                self.btn_isRead.isSelected = state
//                                }
//                                vc.modalPresentationStyle = .custom
//                                present(vc, animated: true)
                }
                @IBAction func userPrivateTreatyAction(_ sender: UIButton) {
                                let vc = LoginTreatyVC()
                                vc.topIndex = 1
                                vc.clickHandle {[unowned self] state in
                                                self.btn_isRead.isSelected = state
                                }
                                vc.modalPresentationStyle = .custom
                                present(vc, animated: true)
//                                let vc = LoginTreatyVC()
//                                vc.topIndex = 1
//                                vc.clickHandle {[unowned self] state in
//                                                self.btn_isRead.isSelected = state
//                                }
//                                vc.modalPresentationStyle = .custom
//                                present(vc, animated: true)
        let vc = WebVC(type: .privacy)
        vc.title = "用户隐私协议"
        push(vc: vc)
                }
                
                @IBAction func registerAction(_ sender: UIButton) {
@@ -264,14 +275,14 @@
                @IBAction func loginByWechatAction(_ sender: UIButton) {
        guard btn_isRead.isSelected else {
            alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
            alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
        }
        WeChatTools.sendAuthRequest()
                }
                @IBAction func loginByAppleAction(_ sender: UIButton) {
        guard btn_isRead.isSelected else {
            alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
            alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
        }
        let provider = ASAuthorizationAppleIDProvider() //主要作用是用创建相应的请求,查询用户授权状态
XQMuse/Root/Login/LoginVC.xib
@@ -18,6 +18,7 @@
                <outlet property="btn_register" destination="k1h-gO-9vj" id="AxQ-S9-3oN"/>
                <outlet property="btn_sendCode" destination="cUd-a4-RTn" id="n26-3e-uaI"/>
                <outlet property="btn_wechat" destination="2Fj-Y0-NYp" id="M7L-LL-Se8"/>
                <outlet property="image_security" destination="8PR-dw-BH2" id="zYv-ai-058"/>
                <outlet property="tf_content" destination="x0Y-XG-Xsv" id="GVf-UU-yCe"/>
                <outlet property="tf_phone" destination="9rD-4T-K6b" id="ynF-y5-xQD"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
@@ -67,7 +68,10 @@
                            <rect key="frame" x="31" y="118" width="24" height="24"/>
                        </imageView>
                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入您的手机号" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9rD-4T-K6b" customClass="QMUITextField">
                            <rect key="frame" x="66" y="120.6666666666667" width="111.33333333333331" height="18.666666666666671"/>
                            <rect key="frame" x="66" y="110" width="296" height="40"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="qpe-84-EuW"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                            <userDefinedRuntimeAttributes>
@@ -87,7 +91,10 @@
                            <rect key="frame" x="31" y="187" width="24" height="24"/>
                        </imageView>
                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入密码" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="x0Y-XG-Xsv" customClass="QMUITextField">
                            <rect key="frame" x="66" y="189.66666666666669" width="69.666666666666686" height="18.666666666666657"/>
                            <rect key="frame" x="66" y="179" width="219" height="40"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="KA0-uB-9Hk"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
                            <textInputTraits key="textInputTraits"/>
                        </textField>
@@ -185,7 +192,7 @@
                            <rect key="frame" x="295" y="184.66666666666669" width="70" height="29"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                            <state key="normal" title="发送验证码">
                            <state key="normal" title="获取验证码">
                                <color key="titleColor" red="0.58823529411764708" green="0.67843137254901964" blue="0.50588235294117645" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            </state>
                            <connections>
@@ -239,12 +246,14 @@
                        <constraint firstItem="eq2-Wp-Yza" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="083-Vl-7Nc"/>
                        <constraint firstItem="Ec8-sg-6R6" firstAttribute="top" secondItem="Cxv-rm-1Fq" secondAttribute="top" constant="22" id="1A0-PI-Pgu"/>
                        <constraint firstItem="esZ-HR-QwQ" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="3EO-Xv-RNw"/>
                        <constraint firstItem="WEh-Dp-WMI" firstAttribute="trailing" secondItem="9rD-4T-K6b" secondAttribute="trailing" id="8SR-l5-rI9"/>
                        <constraint firstItem="6Xe-Xr-eHg" firstAttribute="top" secondItem="Oyy-8c-eua" secondAttribute="bottom" constant="9" id="9SA-Os-bVk"/>
                        <constraint firstItem="EBj-o7-Mca" firstAttribute="leading" secondItem="Cxv-rm-1Fq" secondAttribute="leading" constant="31" id="B4S-Om-agc"/>
                        <constraint firstItem="k1h-gO-9vj" firstAttribute="centerY" secondItem="EBj-o7-Mca" secondAttribute="centerY" id="Bvm-1l-kEG"/>
                        <constraint firstItem="MNJ-Ag-zfE" firstAttribute="leading" secondItem="esZ-HR-QwQ" secondAttribute="trailing" constant="5" id="C6j-4e-yc6"/>
                        <constraint firstItem="WEh-Dp-WMI" firstAttribute="top" secondItem="jUu-IQ-vCE" secondAttribute="bottom" constant="12" id="CJJ-9i-GMf"/>
                        <constraint firstItem="jUu-IQ-vCE" firstAttribute="top" secondItem="Ec8-sg-6R6" secondAttribute="bottom" constant="74" id="D8q-hk-tjK"/>
                        <constraint firstItem="cUd-a4-RTn" firstAttribute="leading" secondItem="x0Y-XG-Xsv" secondAttribute="trailing" constant="10" id="Duu-fF-i6C"/>
                        <constraint firstItem="8PR-dw-BH2" firstAttribute="leading" secondItem="Cxv-rm-1Fq" secondAttribute="leading" constant="31" id="EJX-7K-0Sx"/>
                        <constraint firstItem="cUd-a4-RTn" firstAttribute="centerY" secondItem="8PR-dw-BH2" secondAttribute="centerY" id="HU9-kD-mb5"/>
                        <constraint firstItem="MNJ-Ag-zfE" firstAttribute="centerY" secondItem="6Xe-Xr-eHg" secondAttribute="centerY" id="HWY-A4-Ukq"/>
XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift
@@ -31,7 +31,7 @@
                
                override func viewDidLoad() {
        super.viewDidLoad()
        title = "找回密码"
        title = "修改密码"
    }
                override func setUI() {
XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -22,8 +22,8 @@
            <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="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aIe-la-VEd">
                    <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aIe-la-VEd">
                    <rect key="frame" x="31" y="90" width="84" height="26"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="26" id="lCe-Vg-TdC"/>
                    </constraints>
@@ -32,7 +32,7 @@
                    <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="54B-JI-JvE">
                    <rect key="frame" x="31" y="131" width="185.66666666666666" height="14"/>
                    <rect key="frame" x="31" y="131" width="181" height="14"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="14" id="hZb-2Y-F08"/>
                    </constraints>
@@ -62,7 +62,7 @@
                    </connections>
                </button>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="至少8个字符,不能全是字母或数字" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XwG-d3-D1z">
                    <rect key="frame" x="31" y="249.66666666666663" width="227" height="17"/>
                    <rect key="frame" x="31.000000000000014" y="249.66666666666663" width="221.33333333333337" height="17"/>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                    <color key="textColor" red="0.6588235294117647" green="0.76078431372549016" blue="0.5725490196078431" alpha="1" colorSpace="calibratedRGB"/>
                    <nil key="highlightedColor"/>
XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift
@@ -48,7 +48,7 @@
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "找回密码"
                                title = "修改密码"
                                c1.delegate = self
                                c2.delegate = self
@@ -66,7 +66,7 @@
                                                make.left.right.equalToSuperview()
                                                make.height.equalTo(30)
                                }
                                label_hint.text = "验证码已发送至:" + phone.jq_blotOutPhone()
                                label_hint.text = "验证码已发送至:" + phone.jq_insertBlank()
                }
                override func setRx() {
@@ -105,7 +105,12 @@
                                btn_retry.alpha = 0.5
                                timer = Timer(timeInterval: 1.0, repeats: true) {[weak self] t in
                                                self?.times -= 1
                                                self?.label_retryCode.text = "\(self?.times ?? 0)s后可重新发送验证码"
            self?.label_retryCode.attributedText = AttributedStringbuilder.build()
                .add(string: "\(self?.times ?? 0)s", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#98B083"))
                .add(string: "后可重新获取验证码", withFont: .systemFont(ofSize: 12, weight: .medium), withColor: UIColor(hexStr: "#B7B7B7")).mutableAttributedString
//                                                self?.label_retryCode.text = "\(self?.times ?? 0)s后可重新获取验证码"
                                                if self?.times == 0{
                                                                self?.label_retryCode.text = ""
                                                                self?.btn_retry.isEnabled = true
XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -29,8 +29,8 @@
            <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="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jDh-kq-o20">
                    <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jDh-kq-o20">
                    <rect key="frame" x="31" y="90" width="84" height="26"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="26" id="wIX-wp-8Cr"/>
                    </constraints>
@@ -39,7 +39,7 @@
                    <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="42Y-AF-WYy">
                    <rect key="frame" x="30.999999999999993" y="131" width="127.33333333333331" height="14"/>
                    <rect key="frame" x="30.999999999999993" y="131" width="124.33333333333331" height="14"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="14" id="hT6-iS-45s"/>
                    </constraints>
@@ -182,8 +182,8 @@
                        <constraint firstAttribute="height" constant="48" id="XvV-hO-SgT"/>
                    </constraints>
                </stackView>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0s后可重新发送验证码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FGZ-7g-h6V">
                    <rect key="frame" x="13.999999999999993" y="247" width="126.33333333333331" height="14.333333333333314"/>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0s后可重新获取验证码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FGZ-7g-h6V">
                    <rect key="frame" x="13.999999999999993" y="247" width="123.33333333333331" height="14.333333333333314"/>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                    <color key="textColor" red="0.71764705882352942" green="0.71764705882352942" blue="0.71764705882352942" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <nil key="highlightedColor"/>
@@ -215,7 +215,7 @@
                    </constraints>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                    <state key="normal" title="重新发送验证码">
                    <state key="normal" title="重新获取验证码">
                        <color key="titleColor" red="0.68627450980000004" green="0.79215686269999996" blue="0.59607843140000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </state>
                    <userDefinedRuntimeAttributes>
XQMuse/Root/Login/VC/ForgotPasswordVC.swift
@@ -18,11 +18,7 @@
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "找回密码"
                                #if DEBUG
                                tf_phone.text = "18111223301"
                                #endif
                                title = "修改密码"
    }
                override func setUI() {
XQMuse/Root/Login/VC/ForgotPasswordVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -21,8 +21,8 @@
            <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="忘记密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Zc-Ks-ApW">
                    <rect key="frame" x="30.999999999999993" y="90" width="89.333333333333314" height="26"/>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="修改密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Zc-Ks-ApW">
                    <rect key="frame" x="31" y="90" width="84" height="26"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="26" id="CF4-AX-aMk"/>
                    </constraints>
@@ -31,7 +31,7 @@
                    <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="kEn-9P-7XH">
                    <rect key="frame" x="31" y="131" width="86" height="14"/>
                    <rect key="frame" x="31.000000000000007" y="131" width="83.666666666666686" height="14"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="14" id="Zj2-at-b0v"/>
                    </constraints>
XQMuse/Root/Login/VC/RegisterVC.swift
@@ -91,7 +91,7 @@
        Services.sendCode(phone:viewModel.phone.value,type: .register).subscribe(onNext: {data in
            if data.code == 200{
                                                                sender.jq_openCountDown(60, defultTitle: "发送验证码") {
                                                                sender.jq_openCountDown(60, defultTitle: "获取验证码") {
                                                                                sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
                                                                                sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
                                                                } completeClouse: {
@@ -107,8 +107,11 @@
                                view.endEditing(true)
                                guard viewModel.checkSafe() else {return}
                                guard btn_isRead.isSelected else {
                                                alertError(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
            alert(msg: "请阅读并同意《用户注册协议》和《用户隐私协议》");return
                                }
        guard viewModel.pwd.value.count >= 8 else {alertError(msg: "密码至少8个字符,不能全是字母或数字");return}
        guard viewModel.pwd.value.jq_isComplexPassword else {alertError(msg: "密码至少8个字符,不能全是字母或数字");return}
                                Services.register(cellPhone: viewModel.phone.value, captcha: viewModel.code.value, password: viewModel.pwd.value).subscribe(onNext: {data in
                                                if let model = data.data{
@@ -116,9 +119,13 @@
                                                                UserViewModel.saveLoginInfo(model)
                                                                Services.getUserInfo().subscribe(onNext: {data in
                                                                                if let model = data.data{
                        sceneDelegate?.loginSuccess()
                                                                                                UserViewModel.saveAvatarInfo(model)
                        self.dismiss(animated: true)
                        self.dismiss(animated: true) {
                            JQ_currentViewController().navigationController?.tabBarController?.selectedIndex = 0
                            DispatchQueue.main.asyncAfter(delay: 0.5) {
                                sceneDelegate?.loginSuccess()
                            }
                        }
                                                                                }
                                                                }).disposed(by: self.disposeBag)
                                                }
XQMuse/Root/Login/VC/UpdatePhoneVC.swift
@@ -45,8 +45,8 @@
        }
        Services.sendCode(phone:tf_phone.text!,type: .threePlantform).subscribe(onNext: {data in
            if let _ = data.data{
                sender.jq_openCountDown(60, defultTitle: "发送验证码") {
            if data.code == 200{
                sender.jq_openCountDown(60, defultTitle: "获取验证码") {
                    sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
                    sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
                } completeClouse: {
XQMuse/Root/Login/View/Popup_1_View.swift
@@ -44,14 +44,14 @@
                                sceneDelegate?.window?.addSubview(popupView)
                                popupView.frame = sceneDelegate?.window?.frame ?? .zero
                                var t = 3
                                var t = 2
                                UIView.animate(withDuration: 0.4) {
                                                popupView.alpha = 1
                                                popupView.view_content.transform = .init(scaleX: 1.0, y: 1.0)
                                }completion: { _ in
                                                Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
                                                                t -= 1
                                                                popupView.label_times.text = "\(t)s"
                                                                popupView.label_times.text = "\(min(t,1))s"
                                                                if t == 0{
                                                                                popupView.hidden()
                                                                }
XQMuse/Root/Login/View/Popup_1_View.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -40,7 +40,7 @@
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.68999999999999995" colorSpace="custom" customColorSpace="calibratedRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3s" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hJb-yZ-H1O">
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2s" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hJb-yZ-H1O">
                            <rect key="frame" x="266" y="14" width="21" height="21"/>
                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
                            <color key="textColor" red="0.67450980392156867" green="0.7803921568627451" blue="0.58823529411764708" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
XQMuse/Root/Me/MeVC.swift
@@ -94,7 +94,7 @@
            self.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "0", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
            self.image_vipBg.image = UIImage(named: "bg_vip_u")
            self.label_vipInfo.text = "升级为高级会员,解锁全部体验"
            self.label_vipInfo.text = "升级为会员,解锁会员专属体验"
            self.label_expirtTime.text = "你还未开通会员服务"
        }).disposed(by: disposeBag)
@@ -119,13 +119,13 @@
    private func setUserUI(model:UserInfoModel){
        self.image_userAvatar.sd_setImage(with: URL(string: model.avatar))
        self.label_userName.text = model.nickname
        self.label_phone.text = model.cellPhone.jq_blotOutPhone()
        self.label_phone.text = model.cellPhone
        self.label_totalDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.cumulative)", withFont: UIFont.init(name: "PingFang-SC-Regular", size: 60)!, withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 16), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
        self.label_sustainDay.attributedText = AttributedStringbuilder.build().add(string: "\(model.continuity)", withFont: .systemFont(ofSize: 23), withColor: UIColor(hexString: "#152715")!).add(string: "天", withFont: .systemFont(ofSize: 12), withColor: UIColor(hexString: "#152715")!).mutableAttributedString
        self.image_medal.sd_setImage(with: URL(string: model.levelIcon))
        self.image_medal.sd_setImage(with: URL(string: model.levelIcon.jq_urlEncoded()))
        let timeTurple = Date.jq_formateToTime_tuple(model.today * 60)
@@ -133,11 +133,11 @@
        if model.isVip == .yes{
            self.image_vipBg.image = UIImage(named: "bg_vip")
            self.label_vipInfo.text = "你已是高级会员"
            self.label_expirtTime.text = model.vipExpireTime + "到期"
            self.label_vipInfo.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界"
            self.label_expirtTime.text = model.vipExpireTime.components(separatedBy: " ").first! + "到期"
        }else{
            self.image_vipBg.image = UIImage(named: "bg_vip_u")
            self.label_vipInfo.text = "升级为高级会员,解锁全部体验"
            self.label_vipInfo.text = "升级为会员,解锁会员专属体验"
            self.label_expirtTime.text = "你还未开通会员服务"
        }
    }
XQMuse/Root/Me/MeVC.xib
@@ -63,7 +63,7 @@
                                    </userDefinedRuntimeAttributes>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请先登录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xiq-PE-zPH">
                                    <rect key="frame" x="86" y="17.666666666666671" width="67.666666666666686" height="20.333333333333329"/>
                                    <rect key="frame" x="86" y="17.666666666666671" width="210" height="20.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                    <color key="textColor" red="0.082352941176470587" green="0.15294117647058825" blue="0.082352941176470587" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -86,7 +86,7 @@
                                            <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" 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="pJK-nH-NXm">
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="升级为会员,解锁会员专属体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pJK-nH-NXm">
                                            <rect key="frame" x="19" y="85" width="139.33333333333334" height="12"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                            <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -284,13 +284,13 @@
                                                            </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="flg-Hv-HHC">
                                                            <rect key="frame" x="266.66666666666669" y="18.666666666666742" width="44" height="13.333333333333336"/>
                                                            <rect key="frame" x="264.66666666666669" y="18.666666666666742" width="44" height="13.333333333333336"/>
                                                            <fontDescription key="fontDescription" type="system" pointSize="11"/>
                                                            <color key="textColor" red="0.40392156862745099" green="0.40392156862745099" blue="0.40392156862745099" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                            <nil key="highlightedColor"/>
                                                        </label>
                                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="IKY-cB-8Vd">
                                                            <rect key="frame" x="316.66666666666669" y="20.333333333333371" width="5.3333333333333144" height="10"/>
                                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="IKY-cB-8Vd">
                                                            <rect key="frame" x="311.66666666666669" y="20.333333333333371" width="5.3333333333333144" height="10"/>
                                                            <constraints>
                                                                <constraint firstAttribute="width" constant="5.5" id="UAN-uc-0l9"/>
                                                                <constraint firstAttribute="height" constant="10" id="mje-aH-Ehd"/>
@@ -299,14 +299,14 @@
                                                    </subviews>
                                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                                                    <constraints>
                                                        <constraint firstAttribute="trailing" secondItem="IKY-cB-8Vd" secondAttribute="trailing" constant="3" id="Bxd-yS-Xk9"/>
                                                        <constraint firstAttribute="trailing" secondItem="IKY-cB-8Vd" secondAttribute="trailing" constant="8" id="Bxd-yS-Xk9"/>
                                                        <constraint firstItem="IKY-cB-8Vd" firstAttribute="centerY" secondItem="n62-aO-gnS" secondAttribute="centerY" id="GIW-CX-om4"/>
                                                        <constraint firstItem="z63-U0-xCY" firstAttribute="leading" secondItem="n62-aO-gnS" secondAttribute="leading" constant="4.5" id="MIn-56-hSL"/>
                                                        <constraint firstItem="IKY-cB-8Vd" firstAttribute="centerY" secondItem="flg-Hv-HHC" secondAttribute="centerY" id="Wz3-II-c2W"/>
                                                        <constraint firstItem="dut-7H-aMv" firstAttribute="leading" secondItem="z63-U0-xCY" secondAttribute="trailing" constant="10" id="bMN-qR-89Z"/>
                                                        <constraint firstItem="z63-U0-xCY" firstAttribute="centerY" secondItem="n62-aO-gnS" secondAttribute="centerY" id="eWq-BR-eYS"/>
                                                        <constraint firstItem="dut-7H-aMv" firstAttribute="centerY" secondItem="z63-U0-xCY" secondAttribute="centerY" id="lXT-MR-Dt1"/>
                                                        <constraint firstItem="IKY-cB-8Vd" firstAttribute="leading" secondItem="flg-Hv-HHC" secondAttribute="trailing" constant="6" id="ve2-NZ-tDu"/>
                                                        <constraint firstItem="IKY-cB-8Vd" firstAttribute="leading" secondItem="flg-Hv-HHC" secondAttribute="trailing" constant="3" id="ve2-NZ-tDu"/>
                                                        <constraint firstAttribute="height" constant="50.5" id="xbT-9l-3ue"/>
                                                    </constraints>
                                                    <connections>
@@ -543,7 +543,7 @@
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" image="icon_profileSetting"/>
                                    <connections>
                                        <action selector="userProfileAction:" destination="-1" eventType="touchUpInside" id="f8T-XY-tt1"/>
                                        <action selector="settingAction:" destination="-1" eventType="touchUpInside" id="yff-k5-poL"/>
                                    </connections>
                                </button>
                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cNy-lc-dn6" customClass="NoticeBtn" customModule="XQMuse" customModuleProvider="target">
@@ -584,6 +584,7 @@
                                <constraint firstAttribute="trailing" secondItem="uES-HP-Bfe" secondAttribute="trailing" constant="21.5" id="gPj-cP-mH9"/>
                                <constraint firstItem="dFl-Si-mEi" firstAttribute="leading" secondItem="No9-Oz-bER" secondAttribute="leading" constant="14.5" id="hZd-x5-wiC"/>
                                <constraint firstAttribute="trailing" secondItem="Z1J-zC-UdE" secondAttribute="trailing" constant="12.5" id="j06-P7-YsO"/>
                                <constraint firstItem="cNy-lc-dn6" firstAttribute="leading" secondItem="Xiq-PE-zPH" secondAttribute="trailing" constant="10" id="jeQ-bV-hW9"/>
                                <constraint firstItem="Xiq-PE-zPH" firstAttribute="leading" secondItem="dFl-Si-mEi" secondAttribute="trailing" constant="6.5" id="k6Q-5X-UXd"/>
                                <constraint firstItem="uES-HP-Bfe" firstAttribute="centerY" secondItem="Xiq-PE-zPH" secondAttribute="centerY" id="l8f-di-yWr"/>
                                <constraint firstItem="uES-HP-Bfe" firstAttribute="leading" secondItem="cNy-lc-dn6" secondAttribute="trailing" constant="24.5" id="lxo-L4-nFQ"/>
@@ -625,6 +626,7 @@
        <image name="icon_collect" width="24.666666030883789" height="21"/>
        <image name="icon_customer" width="23" height="23"/>
        <image name="icon_love" width="28" height="25"/>
        <image name="icon_more" width="6" height="10.666666984558105"/>
        <image name="icon_msg" width="19" height="17.666666030883789"/>
        <image name="icon_profileSetting" width="20.666666030883789" height="18.666666030883789"/>
        <image name="icon_setting" width="24" height="22"/>
XQMuse/Root/Me/VC/AddBankInfoVC.swift
@@ -120,7 +120,7 @@
                                }
        Services.sendCode(phone:tf_phone.text!,type: .addBank).subscribe(onNext: {_ in
                                                sender.jq_openCountDown(60, defultTitle: "发送验证码") {
                                                sender.jq_openCountDown(60, defultTitle: "获取验证码") {
                                                                sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
                                                                sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
                                                } completeClouse: {
XQMuse/Root/Me/VC/AddBankInfoVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -33,7 +33,7 @@
                            <rect key="frame" x="0.0" y="0.0" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="开户行:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hKJ-gl-2cy">
                                    <rect key="frame" x="10.000000000000004" y="15.333333333333327" width="57.333333333333343" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333327" width="56" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -58,7 +58,7 @@
                            <rect key="frame" x="0.0" y="50" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="卡号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x3A-cI-UqF">
                                    <rect key="frame" x="10" y="15.333333333333341" width="41" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333341" width="40" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -94,7 +94,7 @@
                            <rect key="frame" x="0.0" y="0.0" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="持卡人:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wd8-Qe-HeI">
                                    <rect key="frame" x="10.000000000000004" y="15.333333333333341" width="57.333333333333343" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333341" width="56" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -129,7 +129,7 @@
                            <rect key="frame" x="0.0" y="50" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="身份证号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rNC-EN-G1G">
                                    <rect key="frame" x="10" y="15.333333333333341" width="73.666666666666671" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333341" width="71.666666666666671" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -169,7 +169,7 @@
                            <rect key="frame" x="0.0" y="100" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="手机号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ASX-h9-DTo">
                                    <rect key="frame" x="10.000000000000004" y="15.333333333333313" width="57.333333333333343" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333313" width="56" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -209,13 +209,13 @@
                            <rect key="frame" x="0.0" y="150" width="365" height="50"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="请输入验证码:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ck5-E9-RWu">
                                    <rect key="frame" x="10" y="15.333333333333313" width="106.33333333333333" height="19.333333333333329"/>
                                    <rect key="frame" x="10" y="15.333333333333313" width="103.66666666666667" height="19.333333333333329"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.80000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
                                </label>
                                <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fdw-nZ-t66" customClass="QMUITextField">
                                    <rect key="frame" x="126.33333333333334" y="14.666666666666686" width="100" height="21"/>
                                    <rect key="frame" x="123.66666666666666" y="14.666666666666686" width="100" height="21"/>
                                    <constraints>
                                        <constraint firstAttribute="width" constant="100" id="d1y-dU-luk"/>
                                    </constraints>
@@ -235,10 +235,10 @@
                                    </constraints>
                                </view>
                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nRC-hW-ER0">
                                    <rect key="frame" x="272" y="9" width="82" height="32"/>
                                    <rect key="frame" x="274" y="9" width="80" height="32"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
                                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                                    <state key="normal" title="发送验证码">
                                    <state key="normal" title="获取验证码">
                                        <color key="titleColor" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    </state>
                                    <connections>
XQMuse/Root/Me/VC/BindAccountVC.swift
@@ -15,7 +15,7 @@
    override func viewDidLoad() {
        super.viewDidLoad()
                                title = "账号绑定"
                                label_phone.text = UserViewModel.getAvatarInfo().cellPhone.jq_blotOutPhone()
                                label_phone.text = UserViewModel.getAvatarInfo().cellPhone
        label_wechatBind.text = UserViewModel.getAvatarInfo().wxOpenId.isEmpty ? "未绑定":"已绑定"
    }
XQMuse/Root/Me/VC/BindPhone_1_VC.swift
@@ -18,7 +18,7 @@
                                title = "绑定手机号"
                                //原型设计漏洞,可绕过原手机号的验证,直接通过截取Token修改新手机号【产品要求:涉及到的时候再优化 2024-09-19】
                                label_phone.text = UserViewModel.getAvatarInfo().cellPhone.jq_blotOutPhone()
                                label_phone.text = UserViewModel.getAvatarInfo().cellPhone
    }
                override func viewDidLayoutSubviews() {
XQMuse/Root/Me/VC/BindPhone_2_VC.swift
@@ -21,8 +21,8 @@
                @IBAction func sendCodeAction(_ sender: UIButton) {
        Services.sendCode(phone:tf_phone.text!,type: .exchangePhone).subscribe(onNext: { data in
                                                if let _ = data.data{
                                                                sender.jq_openCountDown(60, defultTitle: "发送验证码") {
                                                if data.code == 200{
                                                                sender.jq_openCountDown(60, defultTitle: "获取验证码") {
                                                                                sender.titleLabel?.font = UIFont.systemFont(ofSize: 12)
                                                                                sender.setTitleColor(.black.withAlphaComponent(0.3), for: .normal)
                                                                } completeClouse: {
XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift
@@ -37,20 +37,21 @@
                                Services.commonQuestionDetailBy(id: model.id).subscribe(onNext: {[weak self] data in
                                                if let m = data.data{
                                                                self?.webView.loadHTMLString(m.content.jq_wrapHtml(), baseURL: nil)
                self?.image_qrCode.sd_setImage(with: URL(string: m.customerServiceQrCode))
                                                }
                                }).disposed(by: disposeBag)
                                
                                if let image = customerImage{
                                                self.image_qrCode.image = image
                                }else{
                                                Services.getCustomerCode().subscribe(onNext: {data in
                                                                if let m = data.data{
                                                                                self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200)
                                                                                self.image_qrCode.image = self.customerImage
                                                                }
                                                }).disposed(by: disposeBag)
                                }
//                                if let image = customerImage{
//                                                self.image_qrCode.image = image
//                                }else{
//                                                Services.getCustomerCode().subscribe(onNext: {data in
//                                                                if let m = data.data{
//                                                                                self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200)
//                                                                                self.image_qrCode.image = self.customerImage
//                                                                }
//                                                }).disposed(by: disposeBag)
//                                }
    }
                override func setUI() {
XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -73,14 +73,14 @@
                    </constraints>
                </view>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="咨询客服" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WL0-dE-4xa">
                    <rect key="frame" x="172" y="803.66666666666663" width="49.333333333333343" height="14.333333333333371"/>
                    <rect key="frame" x="172.66666666666666" y="803.66666666666663" width="48" height="14.333333333333371"/>
                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                    <color key="textColor" red="0.098039215686274508" green="0.12941176470588234" blue="0.24313725490196078" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                    <nil key="highlightedColor"/>
                </label>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2kC-yj-fW4">
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="2kC-yj-fW4">
                    <rect key="frame" x="148.66666666666666" y="703.66666666666663" width="96" height="96"/>
                    <color key="backgroundColor" red="0.098039215690000001" green="0.12941176469999999" blue="0.24313725489999999" alpha="0.67000000000000004" colorSpace="custom" customColorSpace="sRGB"/>
                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                    <constraints>
                        <constraint firstAttribute="width" constant="96" id="Idf-Z4-2b1"/>
                        <constraint firstAttribute="height" constant="96" id="n5B-wR-B6d"/>
XQMuse/Root/Me/VC/ContactCustomerVC.swift
@@ -7,6 +7,7 @@
import UIKit
import RxSwift
import JQTools
class ContactCustomerViewModel:RefreshInnerModel<CommonQuestionModel>{
                override func api() -> (Observable<BaseResponse<BaseResponseList<CommonQuestionModel>>>)? {
@@ -17,7 +18,12 @@
class ContactCustomerVC: BaseVC {
                @IBOutlet weak var tableView: UITableView!
                @IBOutlet weak var image_qrCode: UIImageView!
    private var customerImageView:UIImageView?
    private var headView:UIView = {
        let v = UIView()
        return v
    }()
                
                private var viewModel = ContactCustomerViewModel()
                private var customerImage:UIImage?
@@ -26,7 +32,28 @@
        super.viewDidLoad()
                                title = "联系客服"
        headView.bounds = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 248)
        customerImageView = UIImageView()
        headView.addSubview(customerImageView!)
        customerImageView!.snp.makeConstraints { make in
            make.top.equalTo(50.5)
            make.centerX.equalToSuperview()
            make.width.height.equalTo(130.8)
        }
        let hintL = UILabel()
        hintL.text = "扫码添加客服微信"
        hintL.textColor = UIColor(hexString: "#333333")
        hintL.font = .systemFont(ofSize: 13, weight: .medium)
        headView.addSubview(hintL)
        hintL.snp.makeConstraints { make in
            make.top.equalTo(customerImageView!.snp.bottom).offset(13)
            make.centerX.equalToSuperview()
        }
        tableView.tableHeaderView = headView
                                tableView.separatorStyle = .none
        tableView.backgroundColor = .clear
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.showsVerticalScrollIndicator = false
@@ -37,25 +64,24 @@
                                Services.getCustomerCode().subscribe(onNext: {data in
                                                if let m = data.data{
                                                                self.customerImage = UIImage.jq_GenerateQRCode(with: m, width: 200)
                                                                self.image_qrCode.image = self.customerImage
                self.customerImageView?.sd_setImage(with: URL(string: m))
                                                }
                                }).disposed(by: disposeBag)
        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:)))
        longPress.minimumPressDuration = 0.8
        image_qrCode.isUserInteractionEnabled = true
        image_qrCode.addGestureRecognizer(longPress)
//        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressCopyAction(_:)))
//        longPress.minimumPressDuration = 0.8
//        image_qrCode.isUserInteractionEnabled = true
//        image_qrCode.addGestureRecognizer(longPress)
    }
    @objc private  func longPressCopyAction(_ gesture:UILongPressGestureRecognizer){
        if gesture.state == .began{
            if let img = image_qrCode.image{
                image_qrCode.isUserInteractionEnabled = false
                UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil)
                alertSuccess(msg: "保存成功")
            }
        }
//        if gesture.state == .began{
//            if let img = image_qrCode.image{
//                image_qrCode.isUserInteractionEnabled = false
//                UIImageWriteToSavedPhotosAlbum(img, nil,nil, nil)
//                alertSuccess(msg: "保存成功")
//            }
//        }
    }
}
@@ -74,6 +100,29 @@
                                return cell
                }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 51
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        var headView  = tableView.dequeueReusableHeaderFooterView(withIdentifier: "headerView")
        if headView == nil{
            headView = UITableViewHeaderFooterView(reuseIdentifier: "headerView")
            headView?.contentView.backgroundColor = .white
            let label = UILabel()
            label.text = "问题类型"
            label.font = .systemFont(ofSize: 15, weight: .bold)
            headView?.contentView.addSubview(label)
            label.snp.makeConstraints { make in
                make.left.equalTo(18)
                make.bottom.equalToSuperview().offset(-4.5)
            }
        }
        headView?.backgroundColor = .white
        return headView
    }
                func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                                return viewModel.dataSource.value?.list.count ?? 0
                }
XQMuse/Root/Me/VC/ContactCustomerVC.xib
@@ -11,7 +11,6 @@
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ContactCustomerVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="image_qrCode" destination="5jI-tQ-uLM" id="Fxg-dZ-zU2"/>
                <outlet property="tableView" destination="cf6-0I-xxB" id="kE1-aF-snG"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
@@ -21,85 +20,31 @@
            <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="bg_voice_top" translatesAutoresizingMaskIntoConstraints="NO" id="eRQ-03-F3I">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="297"/>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_task_f" translatesAutoresizingMaskIntoConstraints="NO" id="d1C-cp-vrj">
                    <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
                </imageView>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qdl-41-EV1">
                    <rect key="frame" x="130.33333333333331" y="106.66666666666667" width="132.33333333333331" height="132.33333333333331"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="5jI-tQ-uLM">
                            <rect key="frame" x="0.0" y="0.0" width="132.33333333333334" height="132.33333333333334"/>
                        </imageView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="width" constant="132.5" id="3xI-p5-QcI"/>
                        <constraint firstAttribute="trailing" secondItem="5jI-tQ-uLM" secondAttribute="trailing" id="75F-nx-DFC"/>
                        <constraint firstItem="5jI-tQ-uLM" firstAttribute="top" secondItem="Qdl-41-EV1" secondAttribute="top" id="AvE-uP-sXr"/>
                        <constraint firstItem="5jI-tQ-uLM" firstAttribute="leading" secondItem="Qdl-41-EV1" secondAttribute="leading" id="DpG-ZI-XEO"/>
                        <constraint firstAttribute="height" constant="132.5" id="ffo-MU-W1a"/>
                        <constraint firstAttribute="bottom" secondItem="5jI-tQ-uLM" secondAttribute="bottom" id="g7M-oD-LE2"/>
                    </constraints>
                </view>
                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fc3-8Q-v5s">
                    <rect key="frame" x="145" y="252.00000000000003" width="103.33333333333331" height="31.333333333333343"/>
                    <constraints>
                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12.5" id="GbW-jb-gwo"/>
                    </constraints>
                    <string key="text">扫码添加客服微信
(长按保存图片)</string>
                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                    <nil key="textColor"/>
                    <nil key="highlightedColor"/>
                </label>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kph-H0-jYO">
                    <rect key="frame" x="0.0" y="339.66666666666674" width="393" height="478.33333333333326"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="问题类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aYd-s7-IT0">
                            <rect key="frame" x="17.999999999999996" y="31.999999999999996" width="59.666666666666657" height="14.333333333333332"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="14.5" id="ZBR-Iq-kZa"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="cf6-0I-xxB">
                            <rect key="frame" x="0.0" y="50.999999999999972" width="393" height="427.33333333333326"/>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <rect key="frame" x="0.0" y="59" width="393" height="759"/>
                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        </tableView>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="aYd-s7-IT0" firstAttribute="top" secondItem="Kph-H0-jYO" secondAttribute="top" constant="32" id="1LK-Hp-TQm"/>
                        <constraint firstAttribute="bottom" secondItem="cf6-0I-xxB" secondAttribute="bottom" id="5tn-Bo-4he"/>
                        <constraint firstItem="aYd-s7-IT0" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" constant="18" id="GqS-Np-07g"/>
                        <constraint firstItem="cf6-0I-xxB" firstAttribute="leading" secondItem="Kph-H0-jYO" secondAttribute="leading" id="Ofc-BY-Wqi"/>
                        <constraint firstItem="cf6-0I-xxB" firstAttribute="top" secondItem="aYd-s7-IT0" secondAttribute="bottom" constant="4.5" id="gpz-TQ-avQ"/>
                        <constraint firstAttribute="trailing" secondItem="cf6-0I-xxB" secondAttribute="trailing" id="j7I-Y3-ieq"/>
                    </constraints>
                </view>
            </subviews>
            <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
            <constraints>
                <constraint firstItem="fc3-8Q-v5s" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="6Ul-xw-5ay"/>
                <constraint firstItem="eRQ-03-F3I" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="6gV-vl-oVQ"/>
                <constraint firstItem="fc3-8Q-v5s" firstAttribute="top" secondItem="Qdl-41-EV1" secondAttribute="bottom" constant="13" id="7zz-7V-nFb"/>
                <constraint firstItem="Qdl-41-EV1" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" constant="47.5" id="9lB-L9-Qr2"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="Kph-H0-jYO" secondAttribute="bottom" id="AyY-VT-MA6"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Kph-H0-jYO" secondAttribute="trailing" id="RCa-FS-6eC"/>
                <constraint firstItem="eRQ-03-F3I" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="S88-LS-Gq1"/>
                <constraint firstItem="Qdl-41-EV1" firstAttribute="centerX" secondItem="fnl-2z-Ty3" secondAttribute="centerX" id="UgY-bA-Bs9"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="eRQ-03-F3I" secondAttribute="trailing" id="b9W-Du-LpC"/>
                <constraint firstItem="Kph-H0-jYO" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="bse-U0-2rA"/>
                <constraint firstItem="Kph-H0-jYO" firstAttribute="top" secondItem="eRQ-03-F3I" secondAttribute="bottom" constant="42.5" id="hlP-SK-cY2"/>
                <constraint firstAttribute="bottom" secondItem="d1C-cp-vrj" secondAttribute="bottom" id="Ak8-y8-vAD"/>
                <constraint firstItem="d1C-cp-vrj" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Bug-6T-IZY"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="d1C-cp-vrj" secondAttribute="trailing" id="FsY-3f-DVG"/>
                <constraint firstItem="cf6-0I-xxB" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="Fu8-xi-zh2"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="cf6-0I-xxB" secondAttribute="bottom" id="SnM-6n-0ji"/>
                <constraint firstItem="cf6-0I-xxB" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="Zgg-py-H3r"/>
                <constraint firstItem="d1C-cp-vrj" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="ami-vu-Rsz"/>
                <constraint firstItem="cf6-0I-xxB" firstAttribute="top" secondItem="fnl-2z-Ty3" secondAttribute="top" id="dyc-nI-4mt"/>
            </constraints>
            <point key="canvasLocation" x="59" y="21"/>
            <point key="canvasLocation" x="58.778625954198468" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
        <image name="bg_voice_top" width="390" height="297"/>
        <image name="bg_task_f" width="300" height="263"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
XQMuse/Root/Me/VC/InviteVC.swift
@@ -42,7 +42,7 @@
    @IBAction func shareAction(_ sender: UIButton) {
        let string = String(format: "%@%@?userId=%ld", ShareUrl,"/poster/poster",UserViewModel.getAvatarInfo().id)
        ShareView.show(URL(string: string)!, title: "心泉疗愈", desc: "心泉疗愈1")
        ShareView.show(URL(string: string)!, title: "心泉·疗愈", desc: "心泉疗愈1")
    }
}
XQMuse/Root/Me/VC/LevelVC.swift
@@ -29,10 +29,10 @@
                                                                }
                                                                self.image_level.sd_setImage(with: URL(string: m.levelIcon))
                                                                self.label_currentLevel.text = String(format: "%ld/%ld", m.level,10)
                self.label_currentLevel.text = String(format: "%ld/%ld", m.growthValue,m.nextLevel)
                                                                self.label_nextLevel.isHidden = m.level == 10
                                                                self.label_nextLevel.text = String(format: "你离下一等级还差%ld经验值,加油!", m.growthValue,m.nextLevel)
                                                                self.label_nextLevel.text = String(format: "你离下一等级还差%ld经验值,加油!",m.differenceLevel)
                                                                self.webView.loadHTMLString(m.content.jq_wrapHtml(), baseURL: nil)
                                                }
XQMuse/Root/Me/VC/LogoutAccountVC.swift
@@ -19,12 +19,17 @@
    }
                @IBAction func completeAction(_ sender: UIButton) {
                                Services.deleteUser().subscribe(onNext: {data in
                                                CommonAlertView.show(title: "提示", content: "已提交注销申请,请耐心等待平台审核", cancelStr: nil, completeStr: "确定", isSingle: true) { _ in
                                                CommonAlertView.show(title: "提示", content: "注销成功", cancelStr: nil, completeStr: "确定", isSingle: true) { _ in
                                                                sceneDelegate?.needLogin()
                                                }
                                }).disposed(by: disposeBag)
                }
                
    @IBAction func quitAction(_ sender: UIButton) {
        self.navigationController?.popViewController()
    }
                override func viewDidLayoutSubviews() {
                                super.viewDidLayoutSubviews()
                                btn_logout.jq_gradientNibColor(colorArr: [UIColor(hexStr: "#8EA47A").cgColor,UIColor(hexStr: "#AFCA98").cgColor], cornerRadius: 20)
XQMuse/Root/Me/VC/LogoutAccountVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -43,6 +43,9 @@
                                    <color key="value" red="0.54117647058823526" green="0.68235294117647061" blue="0.396078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="quitAction:" destination="-1" eventType="touchUpInside" id="IMV-fK-p8K"/>
                            </connections>
                        </button>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Xo-o1-mrz">
                            <rect key="frame" x="170.66666666666663" y="0.0" width="142.33333333333337" height="40"/>
XQMuse/Root/Me/VC/SettingVC.swift
@@ -13,6 +13,7 @@
    @IBOutlet weak var btn_exchange: UIButton!
    @IBOutlet weak var btn_logout: UIButton!
    @IBOutlet weak var btn_dispel: TapBtn!
    @IBOutlet weak var label_version: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
@@ -21,6 +22,10 @@
        btn_exchange.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true
        btn_logout.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true
        btn_dispel.isHidden = UserViewModel.getLoginInfo()?.accessToken.isEmpty ?? true
        if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
            label_version.text = JQTool.currentVersion()
        }
    }
                override func setUI() {
@@ -56,25 +61,31 @@
                                push(vc: vc)
                }
                @IBAction func exchangeAccountAction(_ sender: UIButton) {
        CommonAlertView.show(title: "提示", content: "是否切换当前账号?") {[weak self] s in
            if s{
                sceneDelegate?.needLogin()
                self?.btn_exchange.isHidden = true
                self?.btn_logout.isHidden = true
                self?.btn_dispel.isHidden = true
            }
    @IBAction func checkVersion(_ sender: TapBtn) {
        JQTool.checkVersion(appid: "") { stat, model, url in
        }
                }
                @IBAction func quitAccountAction(_ sender: UIButton) {
        CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in
            if s{
                @IBAction func exchangeAccountAction(_ sender: UIButton) {
//        CommonAlertView.show(title: "提示", content: "是否切换当前账号?") {[weak self] s in
//            if s{
                sceneDelegate?.needLogin()
                self?.btn_exchange.isHidden = true
                self?.btn_logout.isHidden = true
                self?.btn_dispel.isHidden = true
                self.btn_exchange.isHidden = true
                self.btn_logout.isHidden = true
                self.btn_dispel.isHidden = true
//            }
//        }
            }
        }
                @IBAction func quitAccountAction(_ sender: UIButton) {
//        CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in
//            if s{
                sceneDelegate?.needLogin()
                self.btn_exchange.isHidden = true
                self.btn_logout.isHidden = true
                self.btn_dispel.isHidden = true
//            }
//        }
                }
}
XQMuse/Root/Me/VC/SettingVC.xib
@@ -14,6 +14,7 @@
                <outlet property="btn_dispel" destination="ta8-pP-aEf" id="cYz-J5-XFi"/>
                <outlet property="btn_exchange" destination="yK9-0E-44J" id="Dlg-Zq-IOs"/>
                <outlet property="btn_logout" destination="7uR-yB-LEb" id="scc-Tc-lfH"/>
                <outlet property="label_version" destination="IK1-Xd-41F" id="pKX-Sr-qOw"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
@@ -23,7 +24,7 @@
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="QyJ-S3-Hmq">
                    <rect key="frame" x="7" y="83" width="382" height="240"/>
                    <rect key="frame" x="7" y="83" width="382" height="288"/>
                    <subviews>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="F30-OV-73c" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="0.0" width="382" height="48"/>
@@ -130,8 +131,51 @@
                                <action selector="aboutUsAction:" destination="-1" eventType="touchUpInside" id="N3z-Cr-91f"/>
                            </connections>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ta8-pP-aEf" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UeB-2r-ZNF" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="144" width="382" height="48"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本更新" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gMu-uO-B2v">
                                    <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
                                </label>
                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="Fcf-aE-CQR">
                                    <rect key="frame" x="360" y="18.666666666666657" width="6" height="10.666666666666664"/>
                                </imageView>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="L5Z-5G-cW3">
                                    <rect key="frame" x="8.6666666666666572" y="47.666666666666686" width="365" height="0.3333333333333357"/>
                                    <color key="backgroundColor" red="0.85490196080000003" green="0.85490196080000003" blue="0.85490196080000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="0.5" id="J75-p6-6cN"/>
                                    </constraints>
                                </view>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.0.0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IK1-Xd-41F">
                                    <rect key="frame" x="318.33333333333331" y="15" width="31.666666666666686" height="18"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                    <nil key="textColor"/>
                                    <nil key="highlightedColor"/>
                                </label>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstItem="L5Z-5G-cW3" firstAttribute="leading" secondItem="UeB-2r-ZNF" secondAttribute="leading" constant="8.5" id="2Mo-vS-HT5"/>
                                <constraint firstItem="Fcf-aE-CQR" firstAttribute="centerY" secondItem="UeB-2r-ZNF" secondAttribute="centerY" id="5sX-Qo-RuQ"/>
                                <constraint firstAttribute="bottom" secondItem="L5Z-5G-cW3" secondAttribute="bottom" id="8Na-OA-mMq"/>
                                <constraint firstAttribute="trailing" secondItem="L5Z-5G-cW3" secondAttribute="trailing" constant="8.5" id="DA3-NI-kTy"/>
                                <constraint firstAttribute="trailing" secondItem="Fcf-aE-CQR" secondAttribute="trailing" constant="16" id="Dl1-ch-jrV"/>
                                <constraint firstItem="Fcf-aE-CQR" firstAttribute="leading" secondItem="IK1-Xd-41F" secondAttribute="trailing" constant="10" id="cHc-uL-Z1x"/>
                                <constraint firstItem="IK1-Xd-41F" firstAttribute="centerY" secondItem="gMu-uO-B2v" secondAttribute="centerY" id="hp3-w7-pnw"/>
                                <constraint firstItem="gMu-uO-B2v" firstAttribute="leading" secondItem="UeB-2r-ZNF" secondAttribute="leading" constant="11.5" id="lHO-Pt-WQF"/>
                                <constraint firstItem="gMu-uO-B2v" firstAttribute="centerY" secondItem="UeB-2r-ZNF" secondAttribute="centerY" id="nLT-wN-42F"/>
                                <constraint firstAttribute="height" constant="48" id="wXm-em-1ey"/>
                            </constraints>
                            <connections>
                                <action selector="checkVersion:" destination="-1" eventType="touchUpInside" id="qNB-Fr-hcr"/>
                            </connections>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ta8-pP-aEf" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="192" width="382" height="48"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注销账号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tVJ-zS-iAQ">
                                    <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/>
@@ -140,7 +184,7 @@
                                    <nil key="highlightedColor"/>
                                </label>
                                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_more" translatesAutoresizingMaskIntoConstraints="NO" id="azP-kc-GSH">
                                    <rect key="frame" x="360" y="18.666666666666657" width="6" height="10.666666666666664"/>
                                    <rect key="frame" x="360" y="18.666666666666686" width="6" height="10.666666666666664"/>
                                </imageView>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nd7-cz-feh">
                                    <rect key="frame" x="8.6666666666666572" y="47.666666666666686" width="365" height="0.3333333333333357"/>
@@ -166,7 +210,7 @@
                            </connections>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UKx-wx-JbB" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
                            <rect key="frame" x="0.0" y="192" width="382" height="48"/>
                            <rect key="frame" x="0.0" y="240" width="382" height="48"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="协议政策" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bcv-yx-5hJ">
                                    <rect key="frame" x="11.666666666666668" y="15" width="59.666666666666657" height="18"/>
@@ -200,7 +244,7 @@
                    </userDefinedRuntimeAttributes>
                </stackView>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yK9-0E-44J">
                    <rect key="frame" x="7" y="332" width="382" height="49.666666666666686"/>
                    <rect key="frame" x="7" y="380" width="382" height="49.666666666666686"/>
                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="49.5" id="7pi-r8-XGT"/>
@@ -221,7 +265,7 @@
                    </connections>
                </button>
                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7uR-yB-LEb">
                    <rect key="frame" x="7" y="391" width="382" height="49.666666666666686"/>
                    <rect key="frame" x="7" y="439" width="382" height="49.666666666666686"/>
                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    <constraints>
                        <constraint firstAttribute="height" constant="49.5" id="gU8-HE-2Kr"/>
XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -25,12 +25,12 @@
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FLL-3F-OgN">
                    <rect key="frame" x="14" y="100" width="365" height="259"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QxB-tg-ivp">
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_ccc" translatesAutoresizingMaskIntoConstraints="NO" id="QxB-tg-ivp">
                            <rect key="frame" x="0.0" y="0.0" width="365" height="259"/>
                            <color key="backgroundColor" red="0.59215686270000001" green="0.59215686270000001" blue="0.59215686270000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可用余额(元)" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5wO-F5-AbK">
                            <rect key="frame" x="135" y="53" width="95.333333333333314" height="21"/>
                            <rect key="frame" x="136" y="53" width="93" height="21"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="21" id="grS-X9-lbC"/>
                            </constraints>
@@ -103,6 +103,7 @@
        </view>
    </objects>
    <resources>
        <image name="bg_ccc" width="362" height="258"/>
        <image name="bg_voice_top" width="390" height="297"/>
        <systemColor name="systemBackgroundColor">
            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
XQMuse/Root/Me/VC/UserProfileVC.swift
@@ -30,6 +30,8 @@
                @IBOutlet weak var tf_email: QMUITextField!
    @IBOutlet weak var image_placeholder: UIImageView!
    
    private var userClipAvar:UIImage?
                private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小
                private var clipFrame:CGRect{
                                get{
@@ -48,7 +50,15 @@
                                super.viewDidLoad()
                                title = "个人资料"
        image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty
        let saveBtn = UIButton(type: .custom)
        saveBtn.setTitle("保存", for: .normal)
        saveBtn.titleLabel?.font = .systemFont(ofSize: 15)
        saveBtn.setTitleColor(UIColor(hexString: "#353535"), for: .normal)
        saveBtn.addTarget(self, action: #selector(saveAction), for: .touchUpInside)
        navigationItem.rightBarButtonItem = UIBarButtonItem(customView: saveBtn)
//        image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty
        if let url = URL(string: UserViewModel.getAvatarInfo().avatar){
            image_user.sd_setImage(with: url)
@@ -67,48 +77,8 @@
                                tf_birthland.text = UserViewModel.getAvatarInfo().hometown
                                tf_email.text = UserViewModel.getAvatarInfo().email
        yy_popBlock = {[weak self] in
            guard let weakSelf = self else { return }
            let nickname = weakSelf.tf_nickName.text
            let realname = weakSelf.tf_realName.text
            let signature = weakSelf.tf_sign.text
            let gender = GenderType.GenderBy(weakSelf.tf_gender.text!)
            let birthday = weakSelf.tf_birthday.text
            let education = weakSelf.tf_degree.text
            let industry = weakSelf.tf_industry.text
            let company = weakSelf.tf_company.text
            let occupation = weakSelf.tf_job.text
            let location = weakSelf.tf_address.text
            let hometown = weakSelf.tf_birthland.text
            let email = weakSelf.tf_email.text
        tf_nickName.maximumTextLength = 12
            if nickname != UserViewModel.getAvatarInfo().nickname
                || realname != UserViewModel.getAvatarInfo().realname
                || signature != UserViewModel.getAvatarInfo().signature
                || gender != UserViewModel.getAvatarInfo().gender
                || birthday != UserViewModel.getAvatarInfo().birthday
                || education != UserViewModel.getAvatarInfo().education
                || industry != UserViewModel.getAvatarInfo().industry
                || company != UserViewModel.getAvatarInfo().company
                || occupation != UserViewModel.getAvatarInfo().occupation
                || location != UserViewModel.getAvatarInfo().location
                || hometown != UserViewModel.getAvatarInfo().hometown
                || email != UserViewModel.getAvatarInfo().email{
                CommonAlertView.show(title: "提示", content: "是否保存修改?",cancelStr: "不保存",completeStr: "保存") { state in
                    if state{
                        Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in
                            NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                            weakSelf.navigationController?.popViewController(animated: true)
                        }).disposed(by: weakSelf.disposeBag)
                    }else{
                        weakSelf.navigationController?.popViewController(animated: true)
                    }
                }
            }else{
                weakSelf.navigationController?.popViewController(animated: true)
            }
        }
                }
                override func setUI() {
@@ -122,22 +92,39 @@
                                image_user.addGestureRecognizer(tap)
                }
                @objc func selectUserProfile(){
                                CommonAlertSheetView.show(items: ["拍照","从相册选择"]) {[unowned self] index in
                                                if index == 0{
    @objc func saveAction(){
        let nickname = tf_nickName.text
        let realname = tf_realName.text
        let signature = tf_sign.text
        let gender = GenderType.GenderBy(tf_gender.text!)
        let birthday = tf_birthday.text
        let education = tf_degree.text
        let industry = tf_industry.text
        let company = tf_company.text
        let occupation = tf_job.text
        let location = tf_address.text
        let hometown = tf_birthland.text
        let email = tf_email.text
                                                                guard UIImagePickerController.isSourceTypeAvailable(.camera) else{
                                                                                alertError(msg: "当前设备相机不可用");return
        Services.updateUserInfo(birthday: birthday, company: company, education: education, email: email, gender: gender, hometown: hometown, industry: industry, location: location, nickname: nickname, realname: realname, occupation: occupation, signature: signature).subscribe(onNext: {data in
            NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
            alertSuccess(msg: "修改成功")
        }).disposed(by: disposeBag)
        userClipAvar?.uploadImg().subscribe(onNext: {[weak self]imageUrl in
            guard let weakSelf = self else { return }
            Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
                weakSelf.image_user.sd_setImage(with: URL(string: imageUrl.jq_urlEncoded())!)
                weakSelf.image_placeholder.isHidden = true
                NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
            }).disposed(by: weakSelf.disposeBag)
        }).disposed(by: disposeBag)
                                                                }
                                                                let p = UIImagePickerController()
                                                                p.delegate = self
                                                                p.modalPresentationStyle = .fullScreen
                                                                p.allowsEditing = true
                                                                p.sourceType = .camera
                                                                p.cameraDevice = .front
                                                                self.present(p, animated: true)
                                                }else{
    @objc func selectUserProfile(){
        CommonAlertSheetView.show(items: ["从相册选择"]) {[unowned self] index in
            if index == 0{
                                                                let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self)
                                                                p!.modalPresentationStyle = .fullScreen
                                                                p!.allowTakeVideo = false
@@ -149,6 +136,20 @@
                                                                p!.allowCrop = true
                                                                p!.cropRect = self.clipFrame
                                                                self.present(p!, animated: true, completion: nil)
//                guard UIImagePickerController.isSourceTypeAvailable(.camera) else{
//                    alertError(msg: "当前设备相机不可用");return
//                }
//
//                let p = UIImagePickerController()
//                p.delegate = self
//                p.modalPresentationStyle = .fullScreen
//                p.allowsEditing = true
//                p.sourceType = .camera
//                p.cameraDevice = .front
//                self.present(p, animated: true)
            }else{
                                                }
                                }
                }
@@ -159,9 +160,13 @@
                                if textField == tf_gender{
                                                let items = ["男","女","保密"]
                                                CommonAlertSheetView.show(items: items) { index in
            CommonAlertSheetView.show(items: items,hiddenTitle: true) { index in
                                                                guard textField.text != items[index] else {return}
                if items[index] == "保密"{
                    textField.text = ""
                }else{
                                                                textField.text = items[index]
                }
                                                }
                                }
@@ -172,7 +177,6 @@
                                                }
                                                return false
                                }
                                return false
                }
}
@@ -182,14 +186,8 @@
                                picker.selectedAssets = NSMutableArray(array: assets)
        if let photo = photos.first{
            photo.jq_scaled(to: CGSize(width: 250, height: 250)).uploadImg().subscribe(onNext: {[weak self]imageUrl in
                guard let weakSelf = self else { return }
                Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
                    weakSelf.image_placeholder.isHidden = true
                    weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!)
                    NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                }).disposed(by: weakSelf.disposeBag)
            }).disposed(by: disposeBag)
            self.userClipAvar = photo.jq_scaled(to: CGSize(width: 250, height: 250))
//            self.image_placeholder.isHidden = true
        }
                }
@@ -212,13 +210,8 @@
                                unowned let weakSelf = self
                                corpperVC.imageCropperHandler { (vc, image) in
            image.uploadImg().subscribe(onNext: {imageUrl in
                Services.updateUserAvatar(imageUrl).subscribe(onNext: {data in
                    weakSelf.image_user.sd_setImage(with: URL(string: imageUrl)!)
                    weakSelf.image_placeholder.isHidden = true
                    NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                }).disposed(by: weakSelf.disposeBag)
            }).disposed(by: weakSelf.disposeBag)
            weakSelf.userClipAvar = image
//            weakSelf.image_placeholder.isHidden = true
                                } cancelClouse: {
                                                corpperVC.dismiss(animated: true) {
XQMuse/Root/Me/VC/UserProfileVC.xib
@@ -39,7 +39,7 @@
                    <rect key="frame" x="0.0" y="59" width="393" height="759"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Qz0-bC-W38">
                            <rect key="frame" x="146.66666666666666" y="80" width="100" height="100"/>
                            <rect key="frame" x="146.66666666666666" y="27" width="100" height="100"/>
                            <color key="backgroundColor" red="0.4039215686" green="0.4039215686" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="100" id="1cn-SA-RtQ"/>
@@ -53,27 +53,28 @@
                            </userDefinedRuntimeAttributes>
                        </imageView>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_imgPlaceHolder" translatesAutoresizingMaskIntoConstraints="NO" id="cF8-lO-m5L">
                            <rect key="frame" x="180.66666666666666" y="114.33333333333333" width="31.666666666666657" height="31.333333333333329"/>
                            <rect key="frame" x="180.66666666666666" y="61.333333333333336" width="31.666666666666657" height="31.333333333333336"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="31.5" id="E7F-rL-NBo"/>
                                <constraint firstAttribute="width" constant="31.5" id="NeW-Nj-hGD"/>
                            </constraints>
                        </imageView>
                        <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="ZqJ-fT-wgQ">
                            <rect key="frame" x="0.0" y="210" width="393" height="600"/>
                            <rect key="frame" x="0.0" y="157" width="393" height="600"/>
                            <subviews>
                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W8z-Hs-75j">
                                    <rect key="frame" x="0.0" y="0.0" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fv9-E0-tp4">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <rect key="frame" x="16" y="17.333333333333343" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="xDs-61-9P0" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -107,13 +108,13 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zxo-Oa-ujz">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="7Wv-tW-0JD" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -147,13 +148,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="imv-PF-klz">
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HRg-rk-jcD" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -190,13 +192,14 @@
                                            <constraints>
                                                <constraint firstAttribute="width" constant="30" id="fzZ-XP-FuZ"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请选择" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eyM-56-9BV" customClass="QMUITextField">
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eyM-56-9BV" customClass="QMUITextField">
                                            <rect key="frame" x="46" y="0.0" width="320" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -242,13 +245,14 @@
                                            <constraints>
                                                <constraint firstAttribute="width" constant="30" id="TBD-JC-CIF"/>
                                            </constraints>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请选择" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mG1-O5-m2h" customClass="QMUITextField">
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="mG1-O5-m2h" customClass="QMUITextField">
                                            <rect key="frame" x="46" y="0.0" width="320" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -257,7 +261,7 @@
                                            </userDefinedRuntimeAttributes>
                                        </textField>
                                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8aT-z4-IIe">
                                            <rect key="frame" x="16" y="49.666666666666629" width="361" height="0.3333333333333357"/>
                                            <rect key="frame" x="16" y="49.666666666666686" width="361" height="0.3333333333333357"/>
                                            <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="zp9-cE-Fcd"/>
@@ -290,14 +294,15 @@
                                    <rect key="frame" x="0.0" y="250" width="393" height="50"/>
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学历" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lr9-FF-35j">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <rect key="frame" x="16" y="17.333333333333314" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NG9-8J-4PE" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -331,13 +336,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="行业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vsd-1g-qdV">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="OLk-lo-tWN" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -371,13 +377,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="公司" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bCL-7v-fEV">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="oBn-y6-tL8" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -411,13 +418,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="职业" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F4W-m1-aF5">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Shq-k9-lMd" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -451,13 +459,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="所在地" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4yt-IS-YWS">
                                            <rect key="frame" x="16" y="17.333333333333371" width="39" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="apd-WL-Sql" customClass="QMUITextField">
                                            <rect key="frame" x="55" y="0.0" width="322" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -491,13 +500,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="故乡" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3mI-9I-yxT">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8Mk-n3-NN5" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -531,13 +541,14 @@
                                    <subviews>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="邮箱" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qeP-Ob-ndd">
                                            <rect key="frame" x="16" y="17.333333333333371" width="26" height="15.666666666666664"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <nil key="textColor"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <nil key="highlightedColor"/>
                                        </label>
                                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="点击输入" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="S2r-9H-Zt2" customClass="QMUITextField">
                                            <rect key="frame" x="42" y="0.0" width="335" height="50"/>
                                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
                                            <textInputTraits key="textInputTraits"/>
                                            <userDefinedRuntimeAttributes>
                                                <userDefinedRuntimeAttribute type="color" keyPath="placeholderColor">
@@ -577,7 +588,7 @@
                        <constraint firstAttribute="bottom" secondItem="ZqJ-fT-wgQ" secondAttribute="bottom" id="J9F-4M-m4d"/>
                        <constraint firstItem="ZqJ-fT-wgQ" firstAttribute="top" secondItem="Qz0-bC-W38" secondAttribute="bottom" constant="30" id="Wv9-8J-cFo"/>
                        <constraint firstAttribute="trailing" secondItem="ZqJ-fT-wgQ" secondAttribute="trailing" id="ZN4-gA-jGw"/>
                        <constraint firstItem="Qz0-bC-W38" firstAttribute="top" secondItem="QFv-GO-e0l" secondAttribute="top" constant="80" id="aZ4-SM-G5A"/>
                        <constraint firstItem="Qz0-bC-W38" firstAttribute="top" secondItem="QFv-GO-e0l" secondAttribute="top" constant="27" id="aZ4-SM-G5A"/>
                        <constraint firstItem="ZqJ-fT-wgQ" firstAttribute="leading" secondItem="QFv-GO-e0l" secondAttribute="leading" id="tK0-be-0Qw"/>
                    </constraints>
                </scrollView>
XQMuse/Root/Me/VC/VIPCenterVC.swift
@@ -11,8 +11,11 @@
class VIPCenterVC: BaseVC {
    @IBOutlet weak var bg_vip: UIImageView!
    @IBOutlet weak var label_vipHint: UILabel!
                @IBOutlet weak var collectionView: UICollectionView!
    @IBOutlet weak var btn_isRead: UIButton!
    @IBOutlet weak var label_expirtTime: UILabel!
    private var selectIndex = 0
    private var productList = Set<String>()
@@ -39,6 +42,17 @@
                return p1.price.doubleValue < p2.price.doubleValue
            }
            self.collectionView.reloadData()
        }
        if UserViewModel.getAvatarInfo().isVip == .yes{
            self.bg_vip.image = UIImage(named: "bg_vip")
            self.label_vipHint.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界"
            self.label_expirtTime.text = UserViewModel.getAvatarInfo().vipExpireTime.components(separatedBy: " ").first! + "到期"
        }else{
            self.bg_vip.image = UIImage(named: "bg_vip_u")
            self.label_vipHint.text = "升级为会员,解锁会员专属体验"
            self.label_expirtTime.text = "你还未开通会员服务"
        }
    }
@@ -130,7 +144,7 @@
                                }
                                label_price  = UILabel()
                                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "199", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString
                                label_price.attributedText = AttributedStringbuilder.build().add(string: "¥", withFont: .systemFont(ofSize: 15, weight:.heavy), withColor: UIColor(hexString: "#353535")!).add(string: "0", withFont: .systemFont(ofSize: 20, weight:.heavy), withColor: UIColor(hexString: "#353535")!).mutableAttributedString
                                label_price.textAlignment = .center
                                label_price.font = .systemFont(ofSize: 16, weight: .medium)
                                contentView.addSubview(label_price)
XQMuse/Root/Me/VC/VIPCenterVC.xib
@@ -11,8 +11,11 @@
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VIPCenterVC" customModule="XQMuse" customModuleProvider="target">
            <connections>
                <outlet property="bg_vip" destination="w2X-DC-MsM" id="eUS-mm-b27"/>
                <outlet property="btn_isRead" destination="6ZY-8B-NMH" id="vPj-36-S58"/>
                <outlet property="collectionView" destination="Ue5-Zy-CjC" id="lPV-ex-sdB"/>
                <outlet property="label_expirtTime" destination="9TG-o4-3iP" id="gfB-ZZ-lSf"/>
                <outlet property="label_vipHint" destination="teL-7U-G1S" id="PaY-O3-zF6"/>
                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
            </connections>
        </placeholder>
@@ -36,6 +39,12 @@
                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_vip_u" translatesAutoresizingMaskIntoConstraints="NO" id="w2X-DC-MsM">
                                            <rect key="frame" x="0.0" y="0.0" width="365" height="113.33333333333333"/>
                                        </imageView>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="到期" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9TG-o4-3iP">
                                            <rect key="frame" x="332.66666666666669" y="87.333333333333329" width="14" height="9"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="7"/>
                                            <color key="textColor" red="0.039215686270000001" green="0.25882352939999997" blue="0.074509803920000006" alpha="1" 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="YxW-A0-Oga">
                                            <rect key="frame" x="19.666666666666657" y="23.333333333333329" width="142" height="21"/>
                                            <constraints>
@@ -45,7 +54,7 @@
                                            <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" 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="teL-7U-G1S">
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="升级为会员,解锁会员专属体验" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="teL-7U-G1S">
                                            <rect key="frame" x="19" y="85.999999999999986" width="139.33333333333334" height="12"/>
                                            <fontDescription key="fontDescription" type="system" pointSize="10"/>
                                            <color key="textColor" red="0.039215686274509803" green="0.25882352941176467" blue="0.074509803921568626" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -53,6 +62,8 @@
                                        </label>
                                    </subviews>
                                    <constraints>
                                        <constraint firstAttribute="trailing" secondItem="9TG-o4-3iP" secondAttribute="trailing" constant="18.5" id="6XA-hA-h9j"/>
                                        <constraint firstItem="9TG-o4-3iP" firstAttribute="centerY" secondItem="teL-7U-G1S" secondAttribute="centerY" id="FJQ-kB-MaP"/>
                                        <constraint firstAttribute="width" secondItem="h8a-aO-hri" secondAttribute="height" multiplier="1:0.311" id="HXf-AV-84L"/>
                                        <constraint firstAttribute="bottom" secondItem="w2X-DC-MsM" secondAttribute="bottom" id="Id9-B8-cpn"/>
                                        <constraint firstAttribute="trailing" secondItem="w2X-DC-MsM" secondAttribute="trailing" id="UQH-42-3iR"/>
@@ -200,7 +211,7 @@
                <constraint firstItem="Qa1-cj-VoU" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="m1A-Bv-NWm"/>
                <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="VLP-Hy-naC" secondAttribute="trailing" id="ul0-Xj-7Nb"/>
            </constraints>
            <point key="canvasLocation" x="140" y="21"/>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
    </objects>
    <resources>
XQMuse/Root/Network/Models.swift
@@ -96,11 +96,11 @@
                var showType: DisplayType = .horizontal
}
struct MeditationModel:HandyJSON{
class MeditationModel:HandyJSON{
                var backgroundUrl: String = ""
                var cateId: Int = 0
                var chargeType:ChargeType = .free
                var paidStatus:ConditionType = .no //是否购买
                var isBuy:ConditionType = .no //是否购买
                var coverDescription: String = ""
                var coverUrl: String = ""
                var detailDescription: String = ""
@@ -109,7 +109,7 @@
                var iconUrl: String = ""
                var id: Int = 0
                var questionCount:Int = 0
                var iosPrice: Int = 0
    var iosPrice: Double = 0
                var listingStatus: Int = 0
                var meditationTitle: String = ""
                var realLearnedNum: Int = 0
@@ -120,6 +120,9 @@
                var favorite:ConditionType = .no // 是否收藏:1:是 2:否
    var tutor:String = ""
    var meditationMusicList = [String]()
    var meditationSecondList = [Int]() //时长
    required init(){}
}
class CommentModel:HandyJSON{
@@ -166,7 +169,7 @@
    var courseId:String?
}
struct CourseModel:HandyJSON{
class CourseModel:HandyJSON{
                var address:String = ""
                var addressDetail:String = ""
                var briefIntroduction:String = ""
@@ -182,7 +185,7 @@
                var headers = [String]()
                var id: Int = 0
    var businessId:Int = 0 // 课程/音频id 收藏用
                var iosPrice: Int = 0
    var iosPrice: Double = 0
                var isBuy: ConditionType = .no
                var isVip: ConditionType = .no
                var latitude: Int = 0
@@ -196,6 +199,8 @@
                var list2 = [CourseModel]()
                var list = [CourseItemModel]()
    required init(){}
}
struct CourseItemModel:HandyJSON{
@@ -336,7 +341,7 @@
                var status: Int = 0
                var updateBy: String = ""
                var updateTime: String = ""
                var worth: Int = 0
    var worth: Double = 0
}
struct EnergyExchangeRecordModel:HandyJSON{
@@ -345,7 +350,7 @@
                var id: Int = 0
                var name: String = ""
                var status:ConditionType = .no
                var worth: Int = 0
    var worth: Double = 0
                var code:String = ""
}
XQMuse/Root/Network/Services.swift
@@ -82,7 +82,7 @@
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: true)
    }
                /// 发送验证码
                /// 获取验证码
    class func sendCode(phone:String,type:SendCodeType)->Observable<BaseResponse<SimpleModel>>{
                                let params = ParamsAppender.build(url: All_Url)
                                params.interface(url: "/auth/app/sendCaptchaCode")
@@ -425,7 +425,7 @@
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/user/client/app-user/updateUserAvatar")
            .append(key: "avatar", value: imageUrl)
        return NetworkRequest.request(params: params, method: .post, progress: true)
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
                /// 支付成功
@@ -750,4 +750,10 @@
                                                .append(key: "apipost_id", value: "37771d0cf0e312")
                                return NetworkRequest.request(params: params, method: .post, progress: false)
                }
    class func getLunchPage()->Observable<BaseResponse<String>>{
        let params = ParamsAppender.build(url: All_Url)
            .interface(url: "/system/system/page/getPage")
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding(), progress: false)
    }
}
XQMuse/Root/Other/View/CommonAlertSheetView.swift
@@ -14,23 +14,32 @@
                @IBOutlet weak var tableView: UITableView!
                @IBOutlet weak var cons_tableHei: NSLayoutConstraint!
                @IBOutlet weak var cons_viewBottom: NSLayoutConstraint!
    @IBOutlet weak var cons_titleH: NSLayoutConstraint!
    @IBOutlet weak var view_title: UIView!
                private var items = [String]()
                private var clouse:((Int)->Void)!
    private var hiddenTitle:Bool = false
                override func awakeFromNib() {
                                super.awakeFromNib()
                                alpha = 0
                                cons_viewBottom.constant = -JQ_ScreenW
                                layoutIfNeeded()
                                tableView.delegate = self
                                tableView.dataSource = self
                                tableView.separatorStyle = .none
        tableView.isScrollEnabled = false
                                tableView.register(CommonAlertSheetTCell.self, forCellReuseIdentifier: "TCell")
                }
                static func show(items:[String],clouse:@escaping (Int)->Void){
    static func show(items:[String],hiddenTitle:Bool = false,clouse:@escaping (Int)->Void){
                                let alertView = CommonAlertSheetView.jq_loadNibView()
        alertView.hiddenTitle = hiddenTitle
        alertView.cons_titleH.constant = hiddenTitle ? 0:56
        alertView.view_title.isHidden = hiddenTitle
                                alertView.frame = sceneDelegate?.window?.frame ?? .zero
                                alertView.cons_tableHei.constant = CGFloat(items.count * 56)
                                sceneDelegate?.window?.addSubview(alertView)
@@ -48,7 +57,13 @@
                override func layoutSubviews() {
                                super.layoutSubviews()
                                let totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56
        var totalH:Double = 0
        if hiddenTitle{
            totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56.0
        }else{
            totalH = Double(items.count * 56) + UIDevice.jq_safeEdges.bottom + 56.0 + 56.0
        }
                                view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20,height: totalH)
                }
@@ -82,6 +97,11 @@
                func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                                let cell = tableView.dequeueReusableCell(withIdentifier: "TCell") as! CommonAlertSheetTCell
                                cell.label_content.text = items[indexPath.row]
        if hiddenTitle{
            cell.label_content.textColor = UIColor(hexString: "#6B6B6B")
        }else{
            cell.label_content.textColor = UIColor(hexString: "#92A87D")
        }
                                return cell
                }
@@ -109,7 +129,7 @@
                                }
                                let lineView = UIView()
                                lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.05)
                                lineView.backgroundColor = UIColor(hexStr: "#979797").withAlphaComponent(0.1)
                                contentView.addSubview(lineView)
                                lineView.snp.makeConstraints { make in
                                                make.left.equalTo(15)
XQMuse/Root/Other/View/CommonAlertSheetView.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -16,10 +16,10 @@
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZCi-js-xyb">
                    <rect key="frame" x="0.0" y="654" width="393" height="198"/>
                    <rect key="frame" x="0.0" y="597.66666666666663" width="393" height="254.33333333333337"/>
                    <subviews>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5zv-r1-Tbh">
                            <rect key="frame" x="0.0" y="100" width="393" height="56"/>
                            <rect key="frame" x="0.0" y="156.33333333333337" width="393" height="56"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="56" id="UcK-me-kEd"/>
                            </constraints>
@@ -33,22 +33,55 @@
                            </connections>
                        </button>
                        <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="G6i-xu-rUK">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="100"/>
                            <rect key="frame" x="0.0" y="56.333333333333371" width="393" height="100"/>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="100" id="g8g-XN-qDa"/>
                            </constraints>
                        </tableView>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A58-yH-MOT">
                            <rect key="frame" x="0.0" y="56" width="393" height="0.3333333333333357"/>
                            <color key="backgroundColor" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="0.10000000000000001" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="0.5" id="FQN-4O-z5O"/>
                            </constraints>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hTf-8X-Zlq">
                            <rect key="frame" x="0.0" y="0.0" width="393" height="56"/>
                            <subviews>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="更换头像" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z6W-qo-71h">
                                    <rect key="frame" x="166.66666666666666" y="0.0" width="59.666666666666657" height="56"/>
                                    <constraints>
                                        <constraint firstAttribute="height" constant="56" id="rvj-tn-KX3"/>
                                    </constraints>
                                    <fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
                                    <color key="textColor" red="0.41960784313725491" green="0.41960784313725491" blue="0.41960784313725491" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
                                </label>
                            </subviews>
                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="56" id="Erd-6b-f1H"/>
                                <constraint firstItem="Z6W-qo-71h" firstAttribute="centerY" secondItem="hTf-8X-Zlq" secondAttribute="centerY" id="Qwd-T4-Viw"/>
                                <constraint firstItem="Z6W-qo-71h" firstAttribute="centerX" secondItem="hTf-8X-Zlq" secondAttribute="centerX" id="n42-9q-Gxf"/>
                            </constraints>
                        </view>
                    </subviews>
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstItem="5zv-r1-Tbh" firstAttribute="top" secondItem="G6i-xu-rUK" secondAttribute="bottom" id="9nv-QU-lZP"/>
                        <constraint firstItem="hTf-8X-Zlq" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="C1F-jK-YO0"/>
                        <constraint firstItem="G6i-xu-rUK" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="CDM-qJ-EpR"/>
                        <constraint firstAttribute="trailing" secondItem="G6i-xu-rUK" secondAttribute="trailing" id="CXj-DB-txN"/>
                        <constraint firstItem="5zv-r1-Tbh" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="GTh-3u-KPb"/>
                        <constraint firstItem="G6i-xu-rUK" firstAttribute="top" secondItem="A58-yH-MOT" secondAttribute="bottom" id="J7W-gt-1S7"/>
                        <constraint firstAttribute="trailing" secondItem="A58-yH-MOT" secondAttribute="trailing" id="Rpr-dp-8u7"/>
                        <constraint firstItem="A58-yH-MOT" firstAttribute="top" secondItem="hTf-8X-Zlq" secondAttribute="bottom" id="ZbK-DD-bh1"/>
                        <constraint firstItem="hTf-8X-Zlq" firstAttribute="top" secondItem="ZCi-js-xyb" secondAttribute="top" id="lRg-Jc-vzk"/>
                        <constraint firstAttribute="trailing" secondItem="5zv-r1-Tbh" secondAttribute="trailing" id="sac-WK-U2U"/>
                        <constraint firstAttribute="bottomMargin" secondItem="5zv-r1-Tbh" secondAttribute="bottom" id="t8S-hN-Jjh"/>
                        <constraint firstItem="G6i-xu-rUK" firstAttribute="top" secondItem="ZCi-js-xyb" secondAttribute="top" id="u2B-VM-PMP"/>
                        <constraint firstAttribute="trailing" secondItem="hTf-8X-Zlq" secondAttribute="trailing" id="ueK-WC-wfq"/>
                        <constraint firstItem="A58-yH-MOT" firstAttribute="leading" secondItem="ZCi-js-xyb" secondAttribute="leading" id="zRe-xm-hdW"/>
                    </constraints>
                </view>
            </subviews>
@@ -61,9 +94,11 @@
            </constraints>
            <connections>
                <outlet property="cons_tableHei" destination="g8g-XN-qDa" id="dhx-xA-6hC"/>
                <outlet property="cons_titleH" destination="Erd-6b-f1H" id="Db7-Kk-iDQ"/>
                <outlet property="cons_viewBottom" destination="0uK-bT-T9v" id="Dcm-l0-a8b"/>
                <outlet property="tableView" destination="G6i-xu-rUK" id="afR-iG-9IN"/>
                <outlet property="view_container" destination="ZCi-js-xyb" id="Mk8-7J-xes"/>
                <outlet property="view_title" destination="hTf-8X-Zlq" id="8or-uu-f3F"/>
            </connections>
            <point key="canvasLocation" x="139.69465648854961" y="20.422535211267608"/>
        </view>
XQMuse/Root/Other/View/CommonAlertView.swift
@@ -80,7 +80,7 @@
                override func layoutSubviews() {
                                super.layoutSubviews()
                                btn_complete.localGradientColor(cornerRadius: 20)
        btn_complete.localGradientColor(cornerRadius: 20,bounds: CGRect(x: 0, y: 0, width: JQ_ScreenW - 85 * 2, height: 40))
                }
XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift
@@ -24,7 +24,7 @@
    }
                func setPavilionDetailModel(_ model:PavilionDetailModel){
                                image_cover.sd_setImage(with: URL(string: model.coverUrl))
                                image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded()))
                                label_title.text = model.hallName
                                view_distance.isHidden = model.distance < 0
                                if model.distance >= 1000{
XQMuse/Root/Pavilion/PavilionVC.swift
@@ -53,8 +53,11 @@
                @IBAction func searchAction(_ sender: Any) {
        let tempViewModel = PavilionViewModel()
        tempViewModel.location.accept(viewModel.location.value)
                                let searchVC = PavilionSearchVC()
                                searchVC.viewModel = viewModel
                                searchVC.viewModel = tempViewModel
                                push(vc: searchVC)
                }
XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift
@@ -21,6 +21,7 @@
                @IBOutlet weak var label_openTime: UILabel!
                @IBOutlet weak var cons_webHei: NSLayoutConstraint!
    private var barStyle:UIStatusBarStyle = .lightContent
                private var id:Int!
    private var detailModel:PavilionDetailModel?
@@ -43,6 +44,7 @@
                                title = "疗愈馆详情"
                                scrollView.contentInsetAdjustmentBehavior = .never
                                webView.scrollView.isScrollEnabled = false
        scrollView.delegate = self
                                Services.getPavlilonDetail(id: id).subscribe(onNext: {data in
                                                if let m = data.data{
@@ -56,7 +58,7 @@
                                                                if bannerUrl.count > 0{
                                                                                var items = [CommonBannerModel]()
                                                                                for (index,v) in bannerUrl.enumerated(){
                                                                                                items.append(CommonBannerModel(index: index, id: index, name: nil, resource: v, mediaType: .imageUrl))
                        items.append(CommonBannerModel(index: index, id: index, name: nil, resource: v.jq_urlEncoded(), mediaType: .imageUrl))
                                                                                }
                                                                                self.view_bannerBg.setItems(items: items)
                                                                                self.view_bannerBg.collectionView.backgroundColor = .clear
@@ -154,7 +156,61 @@
                override var preferredStatusBarStyle: UIStatusBarStyle{
                                return .lightContent
        return barStyle
                }
}
extension PavilionDetailVC:UIScrollViewDelegate{
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let v = min(scrollView.contentOffset.y / JQ_NavBarHeight, 1)
        navigationController?.navigationBar.standardAppearance.backgroundColor = .white.withAlphaComponent(v)
        if v > 0{
            (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
            (navigationItem.rightBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.black.withAlphaComponent(v)), for: .normal)
//            collect_bitem.tintColor = .black
//            share_bitem.tintColor = .black
            self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:Def_NavFontColor.withAlphaComponent(v),.font:Def_NavFont]
            barStyle = .darkContent
        }else{
//            collect_bitem.tintColor =  self.courseDetailModel?.isCollect == .yes ? UIColor(hexString: "#fe5b60"):.white
//            share_bitem.tintColor = .white
            (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
            self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor:UIColor.white,.font:Def_NavFont]
        }
        if v == 1{
            barStyle = .darkContent
            setNeedsStatusBarAppearanceUpdate()
        }else{
            barStyle = .lightContent
            setNeedsStatusBarAppearanceUpdate()
        }
//        if let table = scrollView as? UITableView{
//            if v > 0{
//                table.contentInset = UIEdgeInsets(top: JQ_NavBarHeight + 9, left: 0, bottom: 118, right: 0)
//            }else{
//                table.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 118, right: 0)
//            }
//        }
//        let offSetY = scrollView.contentOffset.y + CGRectGetHeight(scrollView.frame) / 2;
//        if let currentIndex = tableView?.indexPathForRow(at: CGPoint(x: 0, y: offSetY)){
//
//            if !isAnimationing{
//                if currentShowIndex != currentIndex{
//                    currentShowIndex = currentIndex
//                    pageMenu.selectedItemIndex = currentIndex.row
//                }
//            }
//        }
    }
}
XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <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"/>
@@ -25,14 +25,14 @@
                    <rect key="frame" x="21.666666666666657" y="80.666666666666671" width="306" height="49.000000000000014"/>
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon_search" translatesAutoresizingMaskIntoConstraints="NO" id="hNQ-kz-xpp">
                            <rect key="frame" x="34" y="13.333333333333329" width="22.333333333333329" height="22"/>
                            <rect key="frame" x="15.33333333333333" y="13.333333333333329" width="22.666666666666679" height="22"/>
                            <constraints>
                                <constraint firstAttribute="width" constant="22.5" id="KpR-0C-YFT"/>
                                <constraint firstAttribute="height" constant="22" id="LHs-vU-Px6"/>
                            </constraints>
                        </imageView>
                        <textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="搜索你附近的疗愈馆" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NAr-DA-yxv">
                            <rect key="frame" x="68.000000000000014" y="0.0" width="226.33333333333337" height="49"/>
                            <rect key="frame" x="47.333333333333314" y="0.0" width="247" height="49"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
                            <textInputTraits key="textInputTraits"/>
                        </textField>
@@ -40,11 +40,11 @@
                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                    <constraints>
                        <constraint firstAttribute="bottom" secondItem="NAr-DA-yxv" secondAttribute="bottom" id="0Sg-DS-zeb"/>
                        <constraint firstItem="NAr-DA-yxv" firstAttribute="leading" secondItem="hNQ-kz-xpp" secondAttribute="trailing" constant="11.5" id="Qqk-Gb-mjh"/>
                        <constraint firstItem="NAr-DA-yxv" firstAttribute="leading" secondItem="hNQ-kz-xpp" secondAttribute="trailing" constant="9.5" id="Qqk-Gb-mjh"/>
                        <constraint firstItem="NAr-DA-yxv" firstAttribute="top" secondItem="amB-PO-kjr" secondAttribute="top" id="UXp-Jq-JiI"/>
                        <constraint firstAttribute="height" constant="49" id="bXE-9n-1MF"/>
                        <constraint firstItem="hNQ-kz-xpp" firstAttribute="centerY" secondItem="amB-PO-kjr" secondAttribute="centerY" id="goC-db-zlE"/>
                        <constraint firstItem="hNQ-kz-xpp" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="leading" constant="34" id="ix8-dD-VnV"/>
                        <constraint firstItem="hNQ-kz-xpp" firstAttribute="leading" secondItem="amB-PO-kjr" secondAttribute="leading" constant="15.5" id="ix8-dD-VnV"/>
                        <constraint firstAttribute="trailing" secondItem="NAr-DA-yxv" secondAttribute="trailing" constant="11.5" id="n1k-s3-h9Q"/>
                    </constraints>
                    <userDefinedRuntimeAttributes>
XQMuse/Root/PayMusicView/PayMusicVC.swift
@@ -37,7 +37,7 @@
                private var meditationModel:MeditationModel?{
                                didSet{
                                                if let m = meditationModel{
                                                                coverImage.sd_setImage(with: URL(string: m.coverUrl),placeholderImage: UIImage(named: "login_top_bg"))
                                                                coverImage.sd_setImage(with: URL(string: m.coverUrl.jq_urlEncoded()),placeholderImage: UIImage(named: "login_top_bg"))
                                                                label_name.text = m.meditationTitle
                                                }
                                }
XQMuse/Root/Plans/PlanGuideVC.swift
@@ -11,8 +11,6 @@
let PlantGuideQuit_Noti = Notification.Name.init(rawValue: "PlantGuideQuit_Noti")
let backgroundVoiceUrl = "https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/question/backgroundQuestion.wav"
class PlanGuideVC: BaseVC {
                @IBOutlet weak var view_gradient: UIView!
@@ -68,11 +66,13 @@
                override func viewWillAppear(_ animated: Bool) {
                                super.viewWillAppear(animated)
                                player.play()
        bgplayer.play()
                }
                override func viewDidDisappear(_ animated: Bool) {
                                super.viewDidDisappear(animated)
                                player.pause()
//        bgplayer.pause()
                }
                override func setUI() {
@@ -134,11 +134,11 @@
                                                                                let vc = PlanGuide_1_VC()
                                                                                self?.jq_push(vc: vc)
                                                                case .toSeting:
                                                                                self?.dismiss(animated: true) {
//                                                                                self?.dismiss(animated: true) {
                                                                                                let vc = BackgroundVoiceVC()
                                                                                                vc.hidesBottomBarWhenPushed = true
                                                                                                JQ_currentNavigationController().pushViewController(vc)
                                                                                }
//                                                                                }
                                                }
                                }
                }
XQMuse/Root/Plans/PlanGuide_2_VC.swift
@@ -8,6 +8,8 @@
import UIKit
import JQTools
let AnswerAgain_Noti = Notification.Name.init("AnswerAgain_Noti")
class PlanGuide_2_VC: BaseVC {
                @IBOutlet weak var label_title: UILabel!
@@ -40,6 +42,13 @@
                                btn.isHidden = true
                }
    override func setRx() {
        NotificationCenter.default.rx.notification(AnswerAgain_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in
            self?.questionIndex = 0
            self?.nextQuestion()
        }).disposed(by: disposeBag)
    }
                override func setUI() {
                                btn_sure.tag = 1000
XQMuse/Root/Plans/PlanGuide_3_VC.swift
@@ -30,7 +30,6 @@
                override func viewDidLoad() {
                                super.viewDidLoad()
                                var topIndex = 0
                                Services.getTag().subscribe(onNext: { data in
                                                self.items = Array<TagModel>.splitArray((data.data ?? []), subArraySize: 3)
@@ -77,6 +76,7 @@
                }
                @IBAction func previousAction(_ sender: UIButton) {
        NotificationCenter.default.post(name: AnswerAgain_Noti, object: nil)
                                self.navigationController?.popViewController()
                }
XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift
@@ -58,7 +58,7 @@
                }
                @IBAction func submitAndNextAction(_ sender: UIButton) {
                                clouse?("")
        clouse?(textView.text)
                                closeAction()
                }
                @IBAction func nextAction(_ sender: UIButton) {
XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift
@@ -30,8 +30,8 @@
                func setEnergyExchangeRecordModel(_ model:EnergyExchangeRecordModel){
                                label_title.text = model.name
                                image_cover.sd_setImage(with: URL(string: model.coverUrl))
                                label_price.text = "奖品价值:¥\(model.worth)"
        image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded()))
                                label_price.text = String(format: "奖品价值:¥%.2lf", model.worth)
                                label_energy.text = "所需能量值:\(model.energyValue)"
                                label_state.text = model.status == .yes ? "已领取":"待领取"
                                view_state.backgroundColor = model.status == .yes ? UIColor(hexString: "#B1CA99")! : UIColor(hexString: "#D0D0D0")!
XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift
@@ -30,9 +30,9 @@
                func setEnergyExchangeGiftModel(_ model:EnergyExchangeGiftModel){
                                image_exchanged.isHidden = model.receiveStatus == .no
                                view_container.alpha = model.receiveStatus == .yes ? 0.5:1
                                image_cover.sd_setImage(with: URL(string: model.coverUrl))
        image_cover.sd_setImage(with: URL(string: model.coverUrl.jq_urlEncoded()))
                                label_title.text = model.name
                                label_price.text = "奖品价值:¥\(model.worth)"
                                label_price.text = String(format: "奖品价值:¥%.2lf", model.worth)
                                label_energy.text = "所需能量值:\(model.energyValue)"
                }
}
XQMuse/Root/TreeGroup/TreeTeskVC.swift
@@ -11,6 +11,8 @@
import APNGKit
import UserDefaultsStore
let TreeTaskUpdate_Noti = Notification.Name.init(rawValue: "TreeTaskUpdate_Noti")
class TreeTeskVC: BaseVC {
                private let cacheTreeInfoModel = UserDefaultsStore<TreeInfoModel>(uniqueIdentifier: "cacheTreeInfoModel")!
@@ -147,6 +149,7 @@
                                }
                }
                private func getTreeData(){
                                //缓存的树苗信息
@@ -199,6 +202,10 @@
                                                                self?.aPNGTreeImageView?.startAnimating()
                                                }
                                }
        NotificationCenter.default.rx.notification(TreeTaskUpdate_Noti).take(until: self.rx.deallocated).subscribe(onNext: {[weak self] _ in
            self?.getTreeData()
        }).disposed(by: disposeBag)
                                taskListView.swipeClouse {[unowned self] dirition in
                                                guard self.treeTeskListSwipe != dirition else {return}
@@ -298,6 +305,7 @@
                weakSelf.treeInfoModel?.energyValue = 0
                weakSelf.treeInfoModel?.nextLevel = m.nextLevel
                weakSelf.updateTreeInfo()
                NotificationCenter.default.post(name: UpdateUserProfile_Noti, object: nil)
                                                }
                                }).disposed(by: disposeBag)
XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift
XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib
@@ -15,7 +15,7 @@
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4ru-7s-yUN">
                    <rect key="frame" x="24" y="191.33333333333334" width="345" height="469.33333333333326"/>
                    <rect key="frame" x="24" y="199.66666666666666" width="345" height="452.66666666666674"/>
                    <subviews>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="兑换成功" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uwa-22-p1n">
                            <rect key="frame" x="136.66666666666666" y="17" width="71.666666666666657" height="21"/>
@@ -60,16 +60,14 @@
                                <constraint firstAttribute="width" secondItem="GQk-cT-1IF" secondAttribute="height" multiplier="1:1" id="IQg-YH-wfl"/>
                            </constraints>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg">
                            <rect key="frame" x="75.333333333333329" y="347.66666666666663" width="194.66666666666669" height="33.666666666666686"/>
                            <string key="text">可添加助教微信,了解课程详情
长按保存图片</string>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="可添加助教微信,了解课程详情" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xal-zI-HOg">
                            <rect key="frame" x="75.333333333333329" y="347.66666666666674" width="194.66666666666669" height="17"/>
                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.59999999999999998" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
                        </label>
                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h25-4Z-I8T">
                            <rect key="frame" x="37" y="405.33333333333326" width="271" height="40"/>
                            <rect key="frame" x="37" y="388.66666666666674" width="271" height="40"/>
                            <color key="backgroundColor" red="0.56470588239999997" green="0.65490196079999996" blue="0.48627450979999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="40" id="om4-Kn-hqq"/>
XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift
@@ -34,7 +34,7 @@
                                ruleView.label_title.text = title
                                ruleView.label_content.attributedText = AttributedStringbuilder.build().add(string:content, withFont: .systemFont(ofSize: 14), withColor: .black.withAlphaComponent(0.59), lineSpace: 7).mutableAttributedString
                                ruleView.label_content.textAlignment = textAlignment
                                ruleView.cons_hei.constant = height
//                                ruleView.cons_hei.constant = height
                                ruleView.cons_textTop.constant = textTopOffset
                                sceneDelegate?.window?.addSubview(ruleView)
@@ -58,6 +58,6 @@
                
                override func layoutSubviews() {
                                super.layoutSubviews()
                                btn_complete.localGradientColor(cornerRadius: 20)
        btn_complete.localGradientColor(cornerRadius: 20,bounds: btn_complete.frame)
                }
}
XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -19,12 +19,12 @@
                    <subviews>
                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="top" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="bg_task_f" translatesAutoresizingMaskIntoConstraints="NO" id="WfK-ob-Idw">
                            <rect key="frame" x="0.0" y="0.0" width="303" height="263"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="263" id="lGv-pt-EKd"/>
                            </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="FMr-RI-3OU">
                            <rect key="frame" x="114.66666666666666" y="24" width="73.666666666666657" height="21"/>
                            <rect key="frame" x="115.66666666666666" y="24" width="71.666666666666657" height="21"/>
                            <constraints>
                                <constraint firstAttribute="height" constant="21" id="F4t-Os-4qR"/>
                            </constraints>
                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
                            <color key="textColor" red="0.5725490196078431" green="0.6588235294117647" blue="0.49411764705882355" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                            <nil key="highlightedColor"/>
@@ -49,7 +49,7 @@
                            </connections>
                        </button>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2A-aP-FsC">
                            <rect key="frame" x="18" y="67" width="267" height="83.666666666666686"/>
                            <rect key="frame" x="18" y="67" width="267" height="84"/>
                            <string key="text">亲爱的家人,感谢您用心的交流。
现在,您心灵之树的种子已经植入这片沃土,请以农夫的心态用心浇灌,不久的将来,将会长成苍天大树,结出丰硕的果实。加油哦!</string>
                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
@@ -67,6 +67,7 @@
                        <constraint firstAttribute="trailing" secondItem="H2A-aP-FsC" secondAttribute="trailing" constant="18" id="VYt-T5-9ey"/>
                        <constraint firstAttribute="bottom" secondItem="WfK-ob-Idw" secondAttribute="bottom" id="ZIv-kU-o3f"/>
                        <constraint firstItem="FMr-RI-3OU" firstAttribute="top" secondItem="26Z-P3-SaG" secondAttribute="top" constant="24" id="eZF-5D-9f9"/>
                        <constraint firstItem="2QG-Gl-6ul" firstAttribute="top" secondItem="H2A-aP-FsC" secondAttribute="bottom" constant="55" id="lIu-Jb-9la"/>
                        <constraint firstItem="H2A-aP-FsC" firstAttribute="leading" secondItem="26Z-P3-SaG" secondAttribute="leading" constant="18" id="mW0-7f-lsE"/>
                        <constraint firstAttribute="trailing" secondItem="WfK-ob-Idw" secondAttribute="trailing" id="vPP-Rj-LSs"/>
                        <constraint firstItem="2QG-Gl-6ul" firstAttribute="leading" secondItem="26Z-P3-SaG" secondAttribute="leading" constant="40" id="zVU-Mf-5Ks"/>
@@ -86,7 +87,6 @@
            </constraints>
            <connections>
                <outlet property="btn_complete" destination="2QG-Gl-6ul" id="tZP-OV-q0r"/>
                <outlet property="cons_hei" destination="lGv-pt-EKd" id="xdE-vZ-Lqf"/>
                <outlet property="cons_textTop" destination="6Ld-uV-0JF" id="kcH-v6-5sG"/>
                <outlet property="label_content" destination="H2A-aP-FsC" id="QFU-Ck-bRT"/>
                <outlet property="label_title" destination="FMr-RI-3OU" id="X2O-g1-Hvv"/>
XQMuse/Root/TreeGroup/View/TreeTeskListView.swift
@@ -21,6 +21,15 @@
                @IBOutlet weak var label_sign: UILabel!
                @IBOutlet weak var tap_sign: TapBtn!
                
    @IBOutlet weak var view_task1: UIView!
    @IBOutlet weak var label_task1: UILabel!
    @IBOutlet weak var view_task1_cricle: UIView!
    @IBOutlet weak var view_task2: UIView!
    @IBOutlet weak var label_task2: UILabel!
    @IBOutlet weak var view_task2_cricle: UIView!
                private var clouse:((TreeTeskListSwipe)->Void)?
    private var signClouse:(()->Void)?
                private var disposeBag = DisposeBag()
@@ -83,11 +92,24 @@
                                                view_sign.backgroundColor = .gray.withAlphaComponent(0.2)
                                                label_sign.textColor = .white
                                                view_sign_cricle.jq_borderColor = .gray.withAlphaComponent(0.2)
                                }else{
                                                tap_sign.isUserInteractionEnabled = true
                                                label_sign.text = "打卡签到"
                                                view_sign.backgroundColor = .white
                                                label_sign.textColor = UIColor(hexString: "#4E4E4E")
        }
        //        else{
        //                                                tap_sign.isUserInteractionEnabled = true
        //                                                label_sign.text = "打卡签到"
        //                                                view_sign.backgroundColor = .white
        //                                                label_sign.textColor = UIColor(hexString: "#4E4E4E")
        //                                }
        if model.taskOne == .yes{
            view_task1.backgroundColor = .gray.withAlphaComponent(0.2)
            label_task1.textColor = .white
            view_task1_cricle.jq_borderColor = .gray.withAlphaComponent(0.2)
        }
        if model.taskTwo == .yes{
            view_task2.backgroundColor = .gray.withAlphaComponent(0.2)
            label_task2.textColor = .white
            view_task2_cricle.jq_borderColor = .gray.withAlphaComponent(0.2)
                                }
                }
@@ -127,11 +149,16 @@
                }
            }
        }).disposed(by: disposeBag)
                }
                @IBAction func toMuse(_ sender: TapBtn) {
    @IBAction func toMuse1(_ sender: TapBtn) {
        guard treeInfoModel?.taskOne == .no else {return}
                                JQ_currentViewController().tabBarController?.selectedIndex = 0
                }
    @IBAction func toMuse2(_ sender: TapBtn) {
        guard treeInfoModel?.taskTwo == .no else {return}
        JQ_currentViewController().tabBarController?.selectedIndex = 0
    }
}
XQMuse/Root/TreeGroup/View/TreeTeskListView.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23094" 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="22685"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
        <capability name="System colors in document resources" minToolsVersion="11.0"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
@@ -21,7 +21,7 @@
                            <rect key="frame" x="50.666666666666664" y="17.333333333333329" width="17.666666666666664" height="17.666666666666671"/>
                        </imageView>
                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="任务列表" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pYG-Qr-ArP">
                            <rect key="frame" x="75" y="15.999999999999998" width="69.333333333333314" height="20.333333333333329"/>
                            <rect key="frame" x="75" y="15.999999999999998" width="67.666666666666686" height="20.333333333333329"/>
                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
                            <nil key="textColor"/>
                            <nil key="highlightedColor"/>
@@ -54,7 +54,7 @@
                                    <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日打卡签到【+10能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3pD-LK-hZd">
                                    <rect key="frame" x="44.333333333333329" y="14.333333333333329" width="148" height="14.333333333333336"/>
                                    <rect key="frame" x="44.333333333333329" y="14.333333333333329" width="144.66666666666669" height="14.333333333333336"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -135,7 +135,7 @@
                                    <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日冥想满30分钟【+10能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kag-M2-m2v">
                                    <rect key="frame" x="44.333333333333329" y="14.333333333333314" width="178.33333333333337" height="14.333333333333336"/>
                                    <rect key="frame" x="44.333333333333329" y="14.333333333333314" width="174.66666666666669" height="14.333333333333336"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -163,7 +163,7 @@
                                                </userDefinedRuntimeAttribute>
                                            </userDefinedRuntimeAttributes>
                                        </view>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往冥想" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oyl-lW-Kxr">
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往疗愈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oyl-lW-Kxr">
                                            <rect key="frame" x="23" y="0.0" width="67.333333333333329" height="25"/>
                                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
                                            <nil key="textColor"/>
@@ -206,7 +206,7 @@
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="toMuse:" destination="iN0-l3-epB" eventType="touchUpInside" id="UNZ-J1-qIE"/>
                                <action selector="toMuse1:" destination="iN0-l3-epB" eventType="touchUpInside" id="VYs-9e-HzQ"/>
                            </connections>
                        </view>
                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZUs-Tp-QZ9" customClass="TapBtn" customModule="XQMuse" customModuleProvider="target">
@@ -216,7 +216,7 @@
                                    <rect key="frame" x="25.333333333333336" y="16" width="10.666666666666664" height="10.666666666666664"/>
                                </imageView>
                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="每日冥想满60分钟【+20能量值】" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1oV-nk-0EQ">
                                    <rect key="frame" x="44.333333333333314" y="14.333333333333343" width="180" height="14.333333333333336"/>
                                    <rect key="frame" x="44.333333333333329" y="14.333333333333343" width="176.66666666666669" height="14.333333333333336"/>
                                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
                                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                    <nil key="highlightedColor"/>
@@ -244,7 +244,7 @@
                                                </userDefinedRuntimeAttribute>
                                            </userDefinedRuntimeAttributes>
                                        </view>
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往冥想" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rR9-r5-hle">
                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="前往疗愈" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rR9-r5-hle">
                                            <rect key="frame" x="23" y="0.0" width="67.333333333333329" height="25"/>
                                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/>
                                            <nil key="textColor"/>
@@ -287,7 +287,7 @@
                                </userDefinedRuntimeAttribute>
                            </userDefinedRuntimeAttributes>
                            <connections>
                                <action selector="toMuse:" destination="iN0-l3-epB" eventType="touchUpInside" id="9EX-0O-UFY"/>
                                <action selector="toMuse2:" destination="iN0-l3-epB" eventType="touchUpInside" id="3Z2-GE-GNB"/>
                            </connections>
                        </view>
                    </subviews>
@@ -305,9 +305,15 @@
            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
            <connections>
                <outlet property="label_sign" destination="Vzb-As-8Sv" id="jv7-Zj-Xma"/>
                <outlet property="label_task1" destination="oyl-lW-Kxr" id="4w7-Fq-BCL"/>
                <outlet property="label_task2" destination="rR9-r5-hle" id="b4s-FK-Gao"/>
                <outlet property="tap_sign" destination="QeN-rl-gb6" id="eP4-E2-KLg"/>
                <outlet property="view_sign" destination="bLC-YH-CzV" id="wAt-7y-Hql"/>
                <outlet property="view_sign_cricle" destination="vuQ-La-6pi" id="jIF-NF-3jH"/>
                <outlet property="view_task1" destination="mTi-vt-g8O" id="JRU-Fd-QdP"/>
                <outlet property="view_task1_cricle" destination="bo4-x0-d08" id="vgz-lc-htd"/>
                <outlet property="view_task2" destination="y6n-Lx-kuE" id="axr-5m-JW8"/>
                <outlet property="view_task2_cricle" destination="x7l-eb-8TL" id="ah5-HL-0WD"/>
            </connections>
            <point key="canvasLocation" x="64.885496183206101" y="154.22535211267606"/>
        </view>