From 0fb7413df54760ac6bd15b90b738e0706de1629e Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期二, 05 十一月 2024 19:03:09 +0800 Subject: [PATCH] fix bug --- XQMuse/Root/Course/VC/CourseDetialVC.swift | 10 XQMuse/Root/Me/VC/BindPhone_2_VC.swift | 4 XQMuse/Base/BaseTabBarVC.swift | 2 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png | 0 XQMuse/Root/TreeGroup/View/TreeTeskListView.swift | 161 ++- XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift | 2 XQMuse/Root/TreeGroup/TreeTeskVC.swift | 8 XQMuse/Root/Pavilion/PavilionVC.swift | 5 XQMuse/Root/.DS_Store | 0 XQMuse/Base/BaseNav.swift | 2 XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png | 0 XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png | 0 XQMuse.xcodeproj/project.pbxproj | 8 XQMuse/Root/Home/VC/BackgroundVoiceVC.swift | 13 XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json | 22 XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png | 0 XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift | 2 XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png | 0 XQMuse/Root/Me/VC/UserProfileVC.swift | 345 ++++----- XQMuse/Root/Me/VC/LogoutAccountVC.xib | 7 XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json | 22 XQMuse/Root/Home/VC/HomeItemListVC.swift | 4 XQMuse/Root/Me/VC/AddBankInfoVC.swift | 2 XQMuse/Root/Plans/PlanGuideVC.swift | 8 XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib | 9 XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png | 0 XQMuse/Root/Home/View/HomeTopMenuView.swift | 2 XQMuse/Root/Login/LoginVC.xib | 15 XQMuse/Root/Login/View/Popup_1_View.swift | 4 XQMuse/Root/Me/VC/LogoutAccountVC.swift | 9 XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png | 0 XQMuse/Root/Other/View/CommonAlertSheetView.swift | 28 XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift | 3 XQMuse/Root/Me/VC/InviteVC.swift | 2 XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift | 6 XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift | 7 XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib | 10 XQMuse/Root/Login/VC/UpdatePhoneVC.swift | 4 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png | 0 XQMuse/Root/Home/VC/PaymentOrderVC.swift | 38 XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png | 0 XQMuse/Root/Me/VC/SettingVC.swift | 41 XQMuse/Root/Me/VC/VIPCenterVC.xib | 15 XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift | 4 XQMuse/Root/Network/Models.swift | 19 XQMuse/Root/Plans/PlanGuide_3_VC.swift | 2 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png | 0 XQMuse/Root/Me/MeVC.xib | 18 XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib | 12 XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift | 2 XQMuse/Root/Me/VC/LevelVC.swift | 4 XQMuse/Root/Me/VC/BindPhone_1_VC.swift | 2 XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift | 2 XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift | 4 XQMuse/Root/Me/VC/VIPCenterVC.swift | 18 XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift | 2 XQMuse/Root/Other/View/CommonAlertView.swift | 2 XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift | 64 + XQMuse/Root/Home/VC/HomeItemDetailVC.xib | 20 XQMuse/Root/Me/VC/ContactCustomerVC.xib | 87 -- XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift | 11 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png | 0 XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@3x.png | 0 XQMuse/Config/LaunchImageHelper.swift | 253 +++++++ XQMuse/Root/Me/VC/BindAccountVC.swift | 2 XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift | 2 XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib | 16 XQMuse/Root/Me/VC/UserProfileVC.xib | 101 +- XQMuse/Root/Me/VC/ContactCustomerVC.swift | 81 + XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/组 20@2x.png | 0 XQMuse/Root/Login/VC/RegisterVC.swift | 15 XQMuse/Root/Other/View/CommonAlertSheetView.xib | 47 + XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib | 16 XQMuse/Root/TreeGroup/View/TreeTeskListView.xib | 26 XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift | 9 XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift | 8 XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib | 12 XQMuse/Root/Home/VC/HomeItemDetailVC.swift | 22 XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift | 21 XQMuse/Root/Login/LoginVC.swift | 51 XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib | 10 XQMuse/Root/Home/HomeVC.swift | 58 + XQMuse/Config/Enums/Enums.swift | 2 XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib | 11 XQMuse/Root/Network/Services.swift | 10 XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift | 7 XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift | 4 XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json | 22 XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift | 2 XQMuse/Config/Def.swift | 1 XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift | 10 XQMuse/Root/Login/VC/ForgotPasswordVC.xib | 10 XQMuse/Root/Home/VC/SearchContentVC.swift | 6 XQMuse/Root/Login/View/Popup_1_View.xib | 6 XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift | 4 XQMuse/Root/Home/VC/SearchVC.swift | 13 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png | 0 XQMuse/Root/Me/VC/SettingVC.xib | 56 + XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png | 0 XQMuse/Root/Login/VC/ForgotPasswordVC.swift | 6 XQMuse/Root/Me/VC/AddBankInfoVC.xib | 22 XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift | 9 XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png | 0 XQMuse/Root/PayMusicView/PayMusicVC.swift | 2 XQMuse/Root/Me/MeVC.swift | 12 XQMuse/Root/Plans/PlanGuide_2_VC.swift | 9 XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib | 12 XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png | 0 XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png | 0 XQMuse/Root/Course/View/CourseDetailHeaderView.swift | 2 110 files changed, 1,392 insertions(+), 689 deletions(-) diff --git a/XQMuse.xcodeproj/project.pbxproj b/XQMuse.xcodeproj/project.pbxproj index aefbb0e..9a6a464 100644 --- a/XQMuse.xcodeproj/project.pbxproj +++ b/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", diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png new file mode 100644 index 0000000..6802947 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png new file mode 100644 index 0000000..ddb46a8 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..ddb46a8 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png new file mode 100644 index 0000000..6ce91c9 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png new file mode 100644 index 0000000..3b3e4b1 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png new file mode 100644 index 0000000..139ee72 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png new file mode 100644 index 0000000..494d701 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon-small@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png new file mode 100644 index 0000000..d3aeacb --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png new file mode 100644 index 0000000..8213b8a --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/icon@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png new file mode 100644 index 0000000..d7eda68 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/ios-marketing.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png new file mode 100644 index 0000000..1ce4d29 --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png b/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png new file mode 100644 index 0000000..ed536dc --- /dev/null +++ b/XQMuse/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json new file mode 100644 index 0000000..4c6f433 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/Contents.json @@ -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 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png new file mode 100644 index 0000000..3dfa40e --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png new file mode 100644 index 0000000..8a8058f --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_ccc.imageset/bg_ccc@3x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json new file mode 100644 index 0000000..2ba0785 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/Contents.json @@ -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 + } +} diff --git "a/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@2x.png" "b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@2x.png" new file mode 100644 index 0000000..6083b1c --- /dev/null +++ "b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@2x.png" Binary files differ diff --git "a/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@3x.png" "b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@3x.png" new file mode 100644 index 0000000..0538471 --- /dev/null +++ "b/XQMuse/Assets.xcassets/Placeholder/bg_today.imageset/\347\273\204 20@3x.png" Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json new file mode 100644 index 0000000..530050c --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/Contents.json @@ -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 + } +} diff --git a/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png new file mode 100644 index 0000000..e3463e5 --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @2x.png Binary files differ diff --git a/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png new file mode 100644 index 0000000..677234e --- /dev/null +++ b/XQMuse/Assets.xcassets/Placeholder/bt_private .imageset/bt_private @3x.png Binary files differ diff --git a/XQMuse/Base/BaseNav.swift b/XQMuse/Base/BaseNav.swift index c2846ae..3c8a0b6 100644 --- a/XQMuse/Base/BaseNav.swift +++ b/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 diff --git a/XQMuse/Base/BaseTabBarVC.swift b/XQMuse/Base/BaseTabBarVC.swift index 00ae03a..520b9af 100644 --- a/XQMuse/Base/BaseTabBarVC.swift +++ b/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 diff --git a/XQMuse/Config/Def.swift b/XQMuse/Config/Def.swift index c6b580b..8f43b62 100644 --- a/XQMuse/Config/Def.swift +++ b/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? diff --git a/XQMuse/Config/Enums/Enums.swift b/XQMuse/Config/Enums/Enums.swift index fd21202..765ded2 100644 --- a/XQMuse/Config/Enums/Enums.swift +++ b/XQMuse/Config/Enums/Enums.swift @@ -136,7 +136,7 @@ switch self { case .man:return "男" case .woman:return "女" - case .encrypt:return "保密" + case .encrypt:return "" } } diff --git a/XQMuse/Config/LaunchImageHelper.swift b/XQMuse/Config/LaunchImageHelper.swift new file mode 100644 index 0000000..812f181 --- /dev/null +++ b/XQMuse/Config/LaunchImageHelper.swift @@ -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 + } +} diff --git a/XQMuse/Root/.DS_Store b/XQMuse/Root/.DS_Store index c327c96..f80f8c3 100644 --- a/XQMuse/Root/.DS_Store +++ b/XQMuse/Root/.DS_Store Binary files differ diff --git a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib b/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib index eb769a0..80b4e70 100644 --- a/XQMuse/Root/Course/CCell/CourseOfficialItemCCell.xib +++ b/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"/> diff --git a/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift b/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift index 901dd01..22adb47 100644 --- a/XQMuse/Root/Course/TCell/CourseDetail_2_TCell.swift +++ b/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) } } diff --git a/XQMuse/Root/Course/VC/CourseDetialVC.swift b/XQMuse/Root/Course/VC/CourseDetialVC.swift index 637f0d1..6c5f016 100644 --- a/XQMuse/Root/Course/VC/CourseDetialVC.swift +++ b/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) } } diff --git a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift b/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift index cce13d2..b17c83b 100644 --- a/XQMuse/Root/Course/VC/CourseVCOfficalCommentVC.swift +++ b/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) diff --git a/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift b/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift index 7944004..2912e66 100644 --- a/XQMuse/Root/Course/VC/CourseVCTeacherSpecialVC.swift +++ b/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) } diff --git a/XQMuse/Root/Course/View/CourseDetailHeaderView.swift b/XQMuse/Root/Course/View/CourseDetailHeaderView.swift index af512d1..c29e0ae 100644 --- a/XQMuse/Root/Course/View/CourseDetailHeaderView.swift +++ b/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){ diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift b/XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift index 89f8307..e07fb87 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBannerCCell.swift +++ b/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 } } diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift index b3e4722..7424f9d 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_1_CCell.swift +++ b/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){ diff --git a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift b/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift index d67b640..f829cc0 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxBanner_2_CCell.swift +++ b/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 diff --git a/XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift b/XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift index 3ce5a27..1ccb5e2 100644 --- a/XQMuse/Root/Home/CCell/HomeRelaxVoiceCCell.swift +++ b/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())) } } diff --git a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift index a19cc38..7834643 100644 --- a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_1_CCell.swift +++ b/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{ diff --git a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift b/XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift index 5093665..25b4c82 100644 --- a/XQMuse/Root/Home/CCell/Home_Style_4_Inner_CCell.swift +++ b/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 } } diff --git a/XQMuse/Root/Home/HomeVC.swift b/XQMuse/Root/Home/HomeVC.swift index 771cc53..296ad1f 100644 --- a/XQMuse/Root/Home/HomeVC.swift +++ b/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 @@ -185,10 +192,16 @@ }).disposed(by: disposeBag) Services.getPersonalityPlan().subscribe(onNext: { data in - if let m = data.data{ - self.viewModel.privateTodyModels = m + 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) Services.getMeditationAndCateList().subscribe(onNext: { data in @@ -208,6 +221,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) } @objc func searchAction(){ @@ -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 - cell.model = viewModel.todyModel + 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{ //私人定制 diff --git a/XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift b/XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift index 155c447..a294564 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift +++ b/XQMuse/Root/Home/TCell/Home_Style_1_TCell.swift @@ -22,7 +22,8 @@ @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() selectionStyle = .none diff --git a/XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib b/XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib index 8a2c700..eba4ee0 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_1_TCell.xib +++ b/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> diff --git a/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift b/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift index f7fbd78..0873903 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_3_TCell.swift +++ b/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 } diff --git a/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift b/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift index 376eabb..fd1fa6b 100644 --- a/XQMuse/Root/Home/TCell/Home_Style_4_TCell.swift +++ b/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) } } diff --git a/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift b/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift index 37b0d42..ef990c2 100644 --- a/XQMuse/Root/Home/VC/BackgroundVoiceVC.swift +++ b/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() + } } } diff --git a/XQMuse/Root/Home/VC/HomeItemDetailVC.swift b/XQMuse/Root/Home/VC/HomeItemDetailVC.swift index 9428343..061e2b2 100644 --- a/XQMuse/Root/Home/VC/HomeItemDetailVC.swift +++ b/XQMuse/Root/Home/VC/HomeItemDetailVC.swift @@ -63,13 +63,17 @@ } 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 - self.img_background.sd_setImage(with: URL(string: data.data?.backgroundUrl ?? "")) - if audioPlayer.meditationModel?.id == data.data?.id{ - audioPlayer.delegate = self - } + 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 == 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) } diff --git a/XQMuse/Root/Home/VC/HomeItemDetailVC.xib b/XQMuse/Root/Home/VC/HomeItemDetailVC.xib index 7efec0b..7e95c61 100644 --- a/XQMuse/Root/Home/VC/HomeItemDetailVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Home/VC/HomeItemListVC.swift b/XQMuse/Root/Home/VC/HomeItemListVC.swift index 49db712..257dfcd 100644 --- a/XQMuse/Root/Home/VC/HomeItemListVC.swift +++ b/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) } } diff --git a/XQMuse/Root/Home/VC/PaymentOrderVC.swift b/XQMuse/Root/Home/VC/PaymentOrderVC.swift index bae25cc..7275c78 100644 --- a/XQMuse/Root/Home/VC/PaymentOrderVC.swift +++ b/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) diff --git a/XQMuse/Root/Home/VC/SearchContentVC.swift b/XQMuse/Root/Home/VC/SearchContentVC.swift index ad4dcd0..d285ae3 100644 --- a/XQMuse/Root/Home/VC/SearchContentVC.swift +++ b/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) } } diff --git a/XQMuse/Root/Home/VC/SearchVC.swift b/XQMuse/Root/Home/VC/SearchVC.swift index 4da2fa7..606e913 100644 --- a/XQMuse/Root/Home/VC/SearchVC.swift +++ b/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 = "" } } diff --git a/XQMuse/Root/Home/View/HomeTopMenuView.swift b/XQMuse/Root/Home/View/HomeTopMenuView.swift index 51f2295..45788b4 100644 --- a/XQMuse/Root/Home/View/HomeTopMenuView.swift +++ b/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)) } } diff --git a/XQMuse/Root/Login/LoginVC.swift b/XQMuse/Root/Login/LoginVC.swift index 83a583b..21534f1 100644 --- a/XQMuse/Root/Login/LoginVC.swift +++ b/XQMuse/Root/Login/LoginVC.swift @@ -62,7 +62,8 @@ @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! private var viewModel = LoginViewModel() @@ -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() //主要作用是用创建相应的请求,查询用户授权状态 diff --git a/XQMuse/Root/Login/LoginVC.xib b/XQMuse/Root/Login/LoginVC.xib index ff9ac7c..59f77b1 100644 --- a/XQMuse/Root/Login/LoginVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift b/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift index d6ff281..cc85409 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift +++ b/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.swift @@ -31,7 +31,7 @@ override func viewDidLoad() { super.viewDidLoad() - title = "找回密码" + title = "修改密码" } override func setUI() { diff --git a/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib b/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib index 67d2a0d..7c6017d 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordChangeVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift b/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift index d40c0a7..46c4b02 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.swift +++ b/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 diff --git a/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib b/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib index 0cd1381..f897927 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordInputCodeVC.xib +++ b/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> diff --git a/XQMuse/Root/Login/VC/ForgotPasswordVC.swift b/XQMuse/Root/Login/VC/ForgotPasswordVC.swift index d50e0ca..131777a 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordVC.swift +++ b/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() { diff --git a/XQMuse/Root/Login/VC/ForgotPasswordVC.xib b/XQMuse/Root/Login/VC/ForgotPasswordVC.xib index 9472def..0198fd8 100644 --- a/XQMuse/Root/Login/VC/ForgotPasswordVC.xib +++ b/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> diff --git a/XQMuse/Root/Login/VC/RegisterVC.swift b/XQMuse/Root/Login/VC/RegisterVC.swift index 69f4423..b344c86 100644 --- a/XQMuse/Root/Login/VC/RegisterVC.swift +++ b/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) } diff --git a/XQMuse/Root/Login/VC/UpdatePhoneVC.swift b/XQMuse/Root/Login/VC/UpdatePhoneVC.swift index d958739..ec92c2d 100644 --- a/XQMuse/Root/Login/VC/UpdatePhoneVC.swift +++ b/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: { diff --git a/XQMuse/Root/Login/View/Popup_1_View.swift b/XQMuse/Root/Login/View/Popup_1_View.swift index 8021868..e199965 100644 --- a/XQMuse/Root/Login/View/Popup_1_View.swift +++ b/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() } diff --git a/XQMuse/Root/Login/View/Popup_1_View.xib b/XQMuse/Root/Login/View/Popup_1_View.xib index 953c508..d1eb44f 100644 --- a/XQMuse/Root/Login/View/Popup_1_View.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/MeVC.swift b/XQMuse/Root/Me/MeVC.swift index 92c2150..6c4dad3 100644 --- a/XQMuse/Root/Me/MeVC.swift +++ b/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 = "你还未开通会员服务" } } diff --git a/XQMuse/Root/Me/MeVC.xib b/XQMuse/Root/Me/MeVC.xib index 4fefff4..a4d1e43 100644 --- a/XQMuse/Root/Me/MeVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/AddBankInfoVC.swift b/XQMuse/Root/Me/VC/AddBankInfoVC.swift index 0707948..c8dfb83 100644 --- a/XQMuse/Root/Me/VC/AddBankInfoVC.swift +++ b/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: { diff --git a/XQMuse/Root/Me/VC/AddBankInfoVC.xib b/XQMuse/Root/Me/VC/AddBankInfoVC.xib index 152e270..0943bcf 100644 --- a/XQMuse/Root/Me/VC/AddBankInfoVC.xib +++ b/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> diff --git a/XQMuse/Root/Me/VC/BindAccountVC.swift b/XQMuse/Root/Me/VC/BindAccountVC.swift index 416d21c..0e1888c 100644 --- a/XQMuse/Root/Me/VC/BindAccountVC.swift +++ b/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 ? "未绑定":"已绑定" } diff --git a/XQMuse/Root/Me/VC/BindPhone_1_VC.swift b/XQMuse/Root/Me/VC/BindPhone_1_VC.swift index d3e69b8..a38e543 100644 --- a/XQMuse/Root/Me/VC/BindPhone_1_VC.swift +++ b/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() { diff --git a/XQMuse/Root/Me/VC/BindPhone_2_VC.swift b/XQMuse/Root/Me/VC/BindPhone_2_VC.swift index d334cca..6bd3b1f 100644 --- a/XQMuse/Root/Me/VC/BindPhone_2_VC.swift +++ b/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: { diff --git a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift index 28c88c2..508328f 100644 --- a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.swift +++ b/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() { diff --git a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib b/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib index 54a8ec6..4439add 100644 --- a/XQMuse/Root/Me/VC/ContactCustomerDetailVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/ContactCustomerVC.swift b/XQMuse/Root/Me/VC/ContactCustomerVC.swift index 4e334c2..9ac1df7 100644 --- a/XQMuse/Root/Me/VC/ContactCustomerVC.swift +++ b/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,8 +18,13 @@ 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 = "联系客服" - tableView.separatorStyle = .none + 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 } diff --git a/XQMuse/Root/Me/VC/ContactCustomerVC.xib b/XQMuse/Root/Me/VC/ContactCustomerVC.xib index 30eecba..6ce3057 100644 --- a/XQMuse/Root/Me/VC/ContactCustomerVC.xib +++ b/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"/> - </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> + <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="59" width="393" height="759"/> + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </tableView> </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> diff --git a/XQMuse/Root/Me/VC/InviteVC.swift b/XQMuse/Root/Me/VC/InviteVC.swift index 571c863..6de0983 100644 --- a/XQMuse/Root/Me/VC/InviteVC.swift +++ b/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") } } diff --git a/XQMuse/Root/Me/VC/LevelVC.swift b/XQMuse/Root/Me/VC/LevelVC.swift index 2f37089..aa00f37 100644 --- a/XQMuse/Root/Me/VC/LevelVC.swift +++ b/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) } diff --git a/XQMuse/Root/Me/VC/LogoutAccountVC.swift b/XQMuse/Root/Me/VC/LogoutAccountVC.swift index 2fdc47d..2cc1ffd 100644 --- a/XQMuse/Root/Me/VC/LogoutAccountVC.swift +++ b/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) diff --git a/XQMuse/Root/Me/VC/LogoutAccountVC.xib b/XQMuse/Root/Me/VC/LogoutAccountVC.xib index cdf8c93..9f3b12a 100644 --- a/XQMuse/Root/Me/VC/LogoutAccountVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/SettingVC.swift b/XQMuse/Root/Me/VC/SettingVC.swift index 0559046..56076d9 100644 --- a/XQMuse/Root/Me/VC/SettingVC.swift +++ b/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 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 quitAccountAction(_ sender: UIButton) { - CommonAlertView.show(title: "提示", content: "是否退出当前账号?") {[weak self] s in - if s{ +// 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 +// } +// } } } diff --git a/XQMuse/Root/Me/VC/SettingVC.xib b/XQMuse/Root/Me/VC/SettingVC.xib index cf24470..fa937b3 100644 --- a/XQMuse/Root/Me/VC/SettingVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib b/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib index 1b68dbb..5e62ff5 100644 --- a/XQMuse/Root/Me/VC/SpendingDetailHeaderVC.xib +++ b/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"/> diff --git a/XQMuse/Root/Me/VC/UserProfileVC.swift b/XQMuse/Root/Me/VC/UserProfileVC.swift index d323209..eb95c22 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.swift +++ b/XQMuse/Root/Me/VC/UserProfileVC.swift @@ -15,217 +15,210 @@ class UserProfileVC: BaseVC { - @IBOutlet weak var image_user: UIImageView! - @IBOutlet weak var tf_nickName: QMUITextField! - @IBOutlet weak var tf_realName: QMUITextField! - @IBOutlet weak var tf_sign: QMUITextField! - @IBOutlet weak var tf_gender: QMUITextField! - @IBOutlet weak var tf_birthday: QMUITextField! - @IBOutlet weak var tf_degree: QMUITextField! - @IBOutlet weak var tf_industry: QMUITextField! - @IBOutlet weak var tf_company: QMUITextField! - @IBOutlet weak var tf_job: QMUITextField! - @IBOutlet weak var tf_address: QMUITextField! - @IBOutlet weak var tf_birthland: QMUITextField! - @IBOutlet weak var tf_email: QMUITextField! + @IBOutlet weak var image_user: UIImageView! + @IBOutlet weak var tf_nickName: QMUITextField! + @IBOutlet weak var tf_realName: QMUITextField! + @IBOutlet weak var tf_sign: QMUITextField! + @IBOutlet weak var tf_gender: QMUITextField! + @IBOutlet weak var tf_birthday: QMUITextField! + @IBOutlet weak var tf_degree: QMUITextField! + @IBOutlet weak var tf_industry: QMUITextField! + @IBOutlet weak var tf_company: QMUITextField! + @IBOutlet weak var tf_job: QMUITextField! + @IBOutlet weak var tf_address: QMUITextField! + @IBOutlet weak var tf_birthland: QMUITextField! + @IBOutlet weak var tf_email: QMUITextField! @IBOutlet weak var image_placeholder: UIImageView! - - private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小 - private var clipFrame:CGRect{ - get{ - if clipSize.width == 0 || clipSize.height == 0 { - assert(false,"未设置裁剪框大小") - } - var clipFrame = CGRect.zero - clipFrame.size = clipSize - clipFrame.origin = CGPoint(x: (JQ_ScreenW - clipSize.width)/2.0, y: (JQ_ScreenH - clipSize.width)/2.0) - return clipFrame - } - } + private var userClipAvar:UIImage? - override func viewDidLoad() { - super.viewDidLoad() - title = "个人资料" + private var clipSize = CGSize(width: JQ_ScreenW, height: JQ_ScreenW) //裁剪大小 + private var clipFrame:CGRect{ + get{ + if clipSize.width == 0 || clipSize.height == 0 { + assert(false,"未设置裁剪框大小") + } - image_placeholder.isHidden = !UserViewModel.getAvatarInfo().avatar.isEmpty + var clipFrame = CGRect.zero + clipFrame.size = clipSize + clipFrame.origin = CGPoint(x: (JQ_ScreenW - clipSize.width)/2.0, y: (JQ_ScreenH - clipSize.width)/2.0) + return clipFrame + } + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "个人资料" + + + 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) } - tf_nickName.text = UserViewModel.getAvatarInfo().nickname - tf_realName.text = UserViewModel.getAvatarInfo().realname - tf_sign.text = UserViewModel.getAvatarInfo().signature - tf_gender.text = UserViewModel.getAvatarInfo().gender.rawTitle - tf_birthday.text = UserViewModel.getAvatarInfo().birthday - tf_degree.text = UserViewModel.getAvatarInfo().education - tf_industry.text = UserViewModel.getAvatarInfo().industry - tf_company.text = UserViewModel.getAvatarInfo().company - tf_job.text = UserViewModel.getAvatarInfo().occupation - tf_address.text = UserViewModel.getAvatarInfo().location - tf_birthland.text = UserViewModel.getAvatarInfo().hometown - tf_email.text = UserViewModel.getAvatarInfo().email + tf_nickName.text = UserViewModel.getAvatarInfo().nickname + tf_realName.text = UserViewModel.getAvatarInfo().realname + tf_sign.text = UserViewModel.getAvatarInfo().signature + tf_gender.text = UserViewModel.getAvatarInfo().gender.rawTitle + tf_birthday.text = UserViewModel.getAvatarInfo().birthday + tf_degree.text = UserViewModel.getAvatarInfo().education + tf_industry.text = UserViewModel.getAvatarInfo().industry + tf_company.text = UserViewModel.getAvatarInfo().company + tf_job.text = UserViewModel.getAvatarInfo().occupation + tf_address.text = UserViewModel.getAvatarInfo().location + tf_birthland.text = UserViewModel.getAvatarInfo().hometown + tf_email.text = UserViewModel.getAvatarInfo().email - yy_popBlock = {[weak self] in + tf_nickName.maximumTextLength = 12 + + } + + override func setUI() { + super.setUI() + view.backgroundColor = UIColor(hexString:"#fafafa") + tf_gender.delegate = self + tf_birthday.delegate = self + image_user.isUserInteractionEnabled = true + let tap = UITapGestureRecognizer(target: self, action: #selector(selectUserProfile)) + tap.numberOfTapsRequired = 1 + image_user.addGestureRecognizer(tap) + } + + @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 + + 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 } - 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 + 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) + } - 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{ + @objc func selectUserProfile(){ + CommonAlertSheetView.show(items: ["从相册选择"]) {[unowned self] index in + if index == 0{ - 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) - } - } + let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self) + p!.modalPresentationStyle = .fullScreen + p!.allowTakeVideo = false + p!.allowTakePicture = false + p!.sortAscendingByModificationDate = true + p!.scaleAspectFillCrop = true + p!.allowPickingVideo = false + p!.maxImagesCount = 1 + 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{ - weakSelf.navigationController?.popViewController(animated: true) + } } - } - - override func setUI() { - super.setUI() - view.backgroundColor = UIColor(hexString:"#fafafa") - tf_gender.delegate = self - tf_birthday.delegate = self - image_user.isUserInteractionEnabled = true - let tap = UITapGestureRecognizer(target: self, action: #selector(selectUserProfile)) - tap.numberOfTapsRequired = 1 - image_user.addGestureRecognizer(tap) - } - - @objc func selectUserProfile(){ - CommonAlertSheetView.show(items: ["拍照","从相册选择"]) {[unowned self] index in - if index == 0{ - - 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{ - let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self) - p!.modalPresentationStyle = .fullScreen - p!.allowTakeVideo = false - p!.allowTakePicture = false - p!.sortAscendingByModificationDate = true - p!.scaleAspectFillCrop = true - p!.allowPickingVideo = false - p!.maxImagesCount = 1 - p!.allowCrop = true - p!.cropRect = self.clipFrame - self.present(p!, animated: true, completion: nil) - } - } - } + } } extension UserProfileVC:QMUITextFieldDelegate{ - func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { - if textField == tf_gender{ - let items = ["男","女","保密"] - CommonAlertSheetView.show(items: items) { index in - guard textField.text != items[index] else {return} - textField.text = items[index] - } - } + if textField == tf_gender{ + let items = ["男","女","保密"] + 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] + } + } + } - if textField == tf_birthday{ - view.endEditing(true) - BitrhdayPickerView.show(title: "", type: .YMD) {[weak self] date in + if textField == tf_birthday{ + view.endEditing(true) + BitrhdayPickerView.show(title: "", type: .YMD) {[weak self] date in self?.tf_birthday.text = date.jq_format("yyyy-MM-dd") - } - return false - } - - return false - } + } + return false + } + return false + } } extension UserProfileVC:TZImagePickerControllerDelegate{ - public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) { - picker.selectedAssets = NSMutableArray(array: assets) + public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool) { + 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 } - } + } - public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingAndEditingVideo coverImage: UIImage!, outputPath: String!, error errorMsg: String!) { + public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingAndEditingVideo coverImage: UIImage!, outputPath: String!, error errorMsg: String!) { - } + } } extension UserProfileVC:UIImagePickerControllerDelegate & UINavigationControllerDelegate{ - //成功选取 - public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { + //成功选取 + public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { - var image:UIImage? - image = (info[UIImagePickerController.InfoKey.originalImage] as! UIImage) - let corpperVC = VPImageCropperViewController(image: image!, cropFrame: clipFrame, limitScaleRatio: Int(image!.scale)) - corpperVC.modalPresentationStyle = .fullScreen - DispatchQueue.main.asyncAfter(deadline: .now()+1.0) { - JQ_currentViewController().present(corpperVC, animated: true, completion: nil) - } + var image:UIImage? + image = (info[UIImagePickerController.InfoKey.originalImage] as! UIImage) + let corpperVC = VPImageCropperViewController(image: image!, cropFrame: clipFrame, limitScaleRatio: Int(image!.scale)) + corpperVC.modalPresentationStyle = .fullScreen + DispatchQueue.main.asyncAfter(deadline: .now()+1.0) { + JQ_currentViewController().present(corpperVC, animated: true, completion: nil) + } - 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) - } cancelClouse: { - corpperVC.dismiss(animated: true) { + unowned let weakSelf = self + corpperVC.imageCropperHandler { (vc, image) in + weakSelf.userClipAvar = image +// weakSelf.image_placeholder.isHidden = true + } cancelClouse: { + corpperVC.dismiss(animated: true) { - } - } - picker.dismiss(animated: true) { + } + } + picker.dismiss(animated: true) { - } - } + } + } } diff --git a/XQMuse/Root/Me/VC/UserProfileVC.xib b/XQMuse/Root/Me/VC/UserProfileVC.xib index 85ce5d8..1fe9799 100644 --- a/XQMuse/Root/Me/VC/UserProfileVC.xib +++ b/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> diff --git a/XQMuse/Root/Me/VC/VIPCenterVC.swift b/XQMuse/Root/Me/VC/VIPCenterVC.swift index ab1b820..a9d2e2a 100644 --- a/XQMuse/Root/Me/VC/VIPCenterVC.swift +++ b/XQMuse/Root/Me/VC/VIPCenterVC.swift @@ -11,8 +11,11 @@ class VIPCenterVC: BaseVC { - @IBOutlet weak var collectionView: UICollectionView! + @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) diff --git a/XQMuse/Root/Me/VC/VIPCenterVC.xib b/XQMuse/Root/Me/VC/VIPCenterVC.xib index 2466840..0aee0e1 100644 --- a/XQMuse/Root/Me/VC/VIPCenterVC.xib +++ b/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> diff --git a/XQMuse/Root/Network/Models.swift b/XQMuse/Root/Network/Models.swift index fab92ab..84a1e50 100644 --- a/XQMuse/Root/Network/Models.swift +++ b/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 = "" } diff --git a/XQMuse/Root/Network/Services.swift b/XQMuse/Root/Network/Services.swift index b66273f..2369e36 100644 --- a/XQMuse/Root/Network/Services.swift +++ b/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) + } } diff --git a/XQMuse/Root/Other/View/CommonAlertSheetView.swift b/XQMuse/Root/Other/View/CommonAlertSheetView.swift index 4ac98fa..8de2f64 100644 --- a/XQMuse/Root/Other/View/CommonAlertSheetView.swift +++ b/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) diff --git a/XQMuse/Root/Other/View/CommonAlertSheetView.xib b/XQMuse/Root/Other/View/CommonAlertSheetView.xib index 67069e5..4cf3e32 100644 --- a/XQMuse/Root/Other/View/CommonAlertSheetView.xib +++ b/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> diff --git a/XQMuse/Root/Other/View/CommonAlertView.swift b/XQMuse/Root/Other/View/CommonAlertView.swift index 4d5bdac..ca75341 100644 --- a/XQMuse/Root/Other/View/CommonAlertView.swift +++ b/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)) } diff --git a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift b/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift index 2c6414c..63ca103 100644 --- a/XQMuse/Root/Pavilion/CCell/PavilionItemCell.swift +++ b/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{ diff --git a/XQMuse/Root/Pavilion/PavilionVC.swift b/XQMuse/Root/Pavilion/PavilionVC.swift index 01f1293..da71fc1 100644 --- a/XQMuse/Root/Pavilion/PavilionVC.swift +++ b/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) } diff --git a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift b/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift index 9732bdd..34af10e 100644 --- a/XQMuse/Root/Pavilion/VC/PavilionDetailVC.swift +++ b/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 @@ -153,8 +155,62 @@ } - override var preferredStatusBarStyle: UIStatusBarStyle{ - return .lightContent - } + override var preferredStatusBarStyle: UIStatusBarStyle{ + 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 +// } +// } +// } + } +} diff --git a/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib b/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib index 937b9e2..f9e7c51 100644 --- a/XQMuse/Root/Pavilion/VC/PavilionSearchVC.xib +++ b/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> diff --git a/XQMuse/Root/PayMusicView/PayMusicVC.swift b/XQMuse/Root/PayMusicView/PayMusicVC.swift index bf0d700..49a0c82 100644 --- a/XQMuse/Root/PayMusicView/PayMusicVC.swift +++ b/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 } } diff --git a/XQMuse/Root/Plans/PlanGuideVC.swift b/XQMuse/Root/Plans/PlanGuideVC.swift index 5fd10aa..3fb11b0 100644 --- a/XQMuse/Root/Plans/PlanGuideVC.swift +++ b/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) - } +// } } } } diff --git a/XQMuse/Root/Plans/PlanGuide_2_VC.swift b/XQMuse/Root/Plans/PlanGuide_2_VC.swift index 19531cc..fd6546c 100644 --- a/XQMuse/Root/Plans/PlanGuide_2_VC.swift +++ b/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 diff --git a/XQMuse/Root/Plans/PlanGuide_3_VC.swift b/XQMuse/Root/Plans/PlanGuide_3_VC.swift index 3803240..f96cef5 100644 --- a/XQMuse/Root/Plans/PlanGuide_3_VC.swift +++ b/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() } diff --git a/XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift b/XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift index 6e88110..4ac2d14 100644 --- a/XQMuse/Root/Plans/View/PlanGuidePromptSupplyView.swift +++ b/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) { diff --git a/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift b/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift index 694a2b4..9c12e30 100644 --- a/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyExchangeRecordTCell.swift +++ b/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")! diff --git a/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift b/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift index b2ff824..cdb31ba 100644 --- a/XQMuse/Root/TreeGroup/TCell/TreeTeskEnergyTCell.swift +++ b/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)" } } diff --git a/XQMuse/Root/TreeGroup/TreeTeskVC.swift b/XQMuse/Root/TreeGroup/TreeTeskVC.swift index 11c3734..76ca601 100644 --- a/XQMuse/Root/TreeGroup/TreeTeskVC.swift +++ b/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) diff --git a/XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift b/XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift index 6e0751e..04ef4a6 100644 --- a/XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift +++ b/XQMuse/Root/TreeGroup/VC/TreeTeskEnergyExchangeVC.swift @@ -100,7 +100,7 @@ return } - let attribute = AttributedStringbuilder.build().add(string: "是否确认使用\(m.energyValue)能量值兑换当前礼品?\n兑换后系统将自动扣除能量值", withFont: .systemFont(ofSize: 14, weight: .medium), withColor: .black.withAlphaComponent(0.59), indent: 0, lineSpace: 6).mutableAttributedString + let attribute = AttributedStringbuilder.build().add(string: "是否确认使用 \(m.energyValue) 能量值兑换当前礼品?\n兑换后系统将自动扣除能量值", withFont: .systemFont(ofSize: 14, weight: .medium), withColor: .black.withAlphaComponent(0.59), indent: 0, lineSpace: 6).mutableAttributedString CommonAlertView.show(title: "提示", attribute: attribute, isSingle: false, cancelStr: "再想想", completeStr: "确认") { state in if state{ diff --git a/XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib b/XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib index 314a5ed..31fce08 100644 --- a/XQMuse/Root/TreeGroup/View/TreeTeskExchangeSuccessView.xib +++ b/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"/> diff --git a/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift b/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift index 21675ad..eef83a2 100644 --- a/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.swift +++ b/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) } } diff --git a/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib b/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib index 51bd1c5..c5d1090 100644 --- a/XQMuse/Root/TreeGroup/View/TreeTeskFirstRuleView.xib +++ b/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"/> diff --git a/XQMuse/Root/TreeGroup/View/TreeTeskListView.swift b/XQMuse/Root/TreeGroup/View/TreeTeskListView.swift index c5dbf38..66fde61 100644 --- a/XQMuse/Root/TreeGroup/View/TreeTeskListView.swift +++ b/XQMuse/Root/TreeGroup/View/TreeTeskListView.swift @@ -10,90 +10,112 @@ import RxSwift enum TreeTeskListSwipe{ - case up - case down + case up + case down } class TreeTeskListView: UIView,JQNibView{ - @IBOutlet weak var view_sign: UIView! - @IBOutlet weak var view_sign_cricle: UIView! - @IBOutlet weak var label_sign: UILabel! - @IBOutlet weak var tap_sign: TapBtn! - - private var clouse:((TreeTeskListSwipe)->Void)? + @IBOutlet weak var view_sign: UIView! + @IBOutlet weak var view_sign_cricle: UIView! + @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() + private var disposeBag = DisposeBag() - private var treeInfoModel:TreeInfoModel? + private var treeInfoModel:TreeInfoModel? - override func awakeFromNib() { - super.awakeFromNib() + override func awakeFromNib() { + super.awakeFromNib() - //添加一个上滑手势 - let swipe = UISwipeGestureRecognizer() - swipe.direction = .up - swipe.numberOfTouchesRequired = 1 - self.addGestureRecognizer(swipe) + //添加一个上滑手势 + let swipe = UISwipeGestureRecognizer() + swipe.direction = .up + swipe.numberOfTouchesRequired = 1 + self.addGestureRecognizer(swipe) - //手势响应 - swipe.rx.event - .subscribe(onNext: {[unowned self] recognizer in - //这个点是滑动的起点 - let point = recognizer.location(in: recognizer.view) - print(point) - if point.y <= 50{ - self.clouse?(.up) - } - }).disposed(by: disposeBag) + //手势响应 + swipe.rx.event + .subscribe(onNext: {[unowned self] recognizer in + //这个点是滑动的起点 + let point = recognizer.location(in: recognizer.view) + print(point) + if point.y <= 50{ + self.clouse?(.up) + } + }).disposed(by: disposeBag) - //添加一个上滑手势 - let swipeDown = UISwipeGestureRecognizer() - swipeDown.direction = .down - swipeDown.numberOfTouchesRequired = 1 - self.addGestureRecognizer(swipeDown) + //添加一个上滑手势 + let swipeDown = UISwipeGestureRecognizer() + swipeDown.direction = .down + swipeDown.numberOfTouchesRequired = 1 + self.addGestureRecognizer(swipeDown) - //手势响应 - swipeDown.rx.event - .subscribe(onNext: { recognizer in - //这个点是滑动的起点 - let point = recognizer.location(in: recognizer.view) - print(point) - if point.y <= 50{ - self.clouse?(.down) - } - }).disposed(by: disposeBag) - } + //手势响应 + swipeDown.rx.event + .subscribe(onNext: { recognizer in + //这个点是滑动的起点 + let point = recognizer.location(in: recognizer.view) + print(point) + if point.y <= 50{ + self.clouse?(.down) + } + }).disposed(by: disposeBag) + } - func swipeClouse(clouse:@escaping (TreeTeskListSwipe)->Void){ - self.clouse = clouse - } + func swipeClouse(clouse:@escaping (TreeTeskListSwipe)->Void){ + self.clouse = clouse + } func signSuccess(signClouse:@escaping ()->Void){ self.signClouse = signClouse } - func setTreeInfoModel(_ model:TreeInfoModel){ - self.treeInfoModel = model + func setTreeInfoModel(_ model:TreeInfoModel){ + self.treeInfoModel = model - if model.isSign == .yes{ - tap_sign.isUserInteractionEnabled = false - label_sign.text = "已签到" - 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") - } - } + if model.isSign == .yes{ + tap_sign.isUserInteractionEnabled = false + label_sign.text = "已签到" + 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") + // } - @IBAction func signAction(_ sender: TapBtn) { + 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) + } + } + + @IBAction func signAction(_ sender: TapBtn) { guard sceneDelegate!.checkisLoginState() else {return} - + Services.treeTaskSign().subscribe(onNext: {[weak self] _ in guard let weakSelf = self else { return } weakSelf.signClouse?() @@ -127,11 +149,16 @@ } } }).disposed(by: disposeBag) + } + @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 + } - @IBAction func toMuse(_ sender: TapBtn) { - JQ_currentViewController().tabBarController?.selectedIndex = 0 - } } diff --git a/XQMuse/Root/TreeGroup/View/TreeTeskListView.xib b/XQMuse/Root/TreeGroup/View/TreeTeskListView.xib index 27c86fd..902901a 100644 --- a/XQMuse/Root/TreeGroup/View/TreeTeskListView.xib +++ b/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> -- Gitblit v1.7.1