From: liangzhenying <867174124@qq.com> Date: Tue, 26 Aug 2025 10:16:04 +0000 (+0800) Subject: UI完善 X-Git-Tag: 1.0.2~106 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=1bb8fba69e16a28d849d36c99a80668a684b777f;p=mirrors%2FShenYin.git UI完善 --- diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index 9439323..56eef56 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -167,10 +167,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ShenYin/Pods-ShenYin-frameworks.sh\"\n"; diff --git a/ShenYin/ShenYin/Assets.xcassets/home/Frame 2247_slices/Contents.json b/ShenYin/ShenYin/Assets.xcassets/home/Frame 2247_slices/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/home/Frame 2247_slices/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/Contents.json new file mode 100644 index 0000000..758cc60 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "发送_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "发送_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@2x.png" "b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@2x.png" new file mode 100644 index 0000000..69fe279 Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@2x.png" differ diff --git "a/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@3x.png" "b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@3x.png" new file mode 100644 index 0000000..466c0d9 Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/home/send_icon.imageset/\345\217\221\351\200\201_1@3x.png" differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Contents.json similarity index 79% rename from ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Contents.json rename to ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Contents.json index 6ddd8c6..432df22 100644 --- a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Contents.json +++ b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "Frame-2 1.png", + "filename" : "Group@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Frame-2.png", + "filename" : "Group@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@2x.png b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@2x.png new file mode 100644 index 0000000..4655b6a Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@3x.png b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@3x.png new file mode 100644 index 0000000..aede087 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/logo_1.imageset/Group@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Contents.json new file mode 100644 index 0000000..391af57 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 7@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 7@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@2x.png b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@2x.png new file mode 100644 index 0000000..9c8b926 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@3x.png b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@3x.png new file mode 100644 index 0000000..d5ecc95 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/device_list_icon.imageset/Slice 7@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Contents.json new file mode 100644 index 0000000..416d6a4 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2465@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2465@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@2x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@2x.png new file mode 100644 index 0000000..2c830ee Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@3x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@3x.png new file mode 100644 index 0000000..594a773 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner1.imageset/Group_2465@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Contents.json new file mode 100644 index 0000000..66442b1 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2466@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2466@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@2x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@2x.png new file mode 100644 index 0000000..06a9e55 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@3x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@3x.png new file mode 100644 index 0000000..2060bfa Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner2.imageset/Group_2466@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Contents.json new file mode 100644 index 0000000..bc66a06 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2340@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2340@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@2x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@2x.png new file mode 100644 index 0000000..2c830ee Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@3x.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@3x.png new file mode 100644 index 0000000..594a773 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_banner3.imageset/Group_2340@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Contents.json index de43eee..c8994e8 100644 --- a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Contents.json +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "Frame-7 1.png", + "filename" : "Frame@2x(9).png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Frame-7.png", + "filename" : "Frame@3x(8).png", "idiom" : "universal", "scale" : "3x" } diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7 1.png deleted file mode 100644 index e05971b..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7.png deleted file mode 100644 index 50fac90..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame-7.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@2x(9).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@2x(9).png new file mode 100644 index 0000000..74e7869 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@2x(9).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@3x(8).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@3x(8).png new file mode 100644 index 0000000..fdb915b Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_about.imageset/Frame@3x(8).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1 1.png deleted file mode 100644 index 6e5f371..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1.png deleted file mode 100644 index a837952..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_device.imageset/Frame-1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Contents.json index f52764b..2bda9f7 100644 --- a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Contents.json +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "Frame-5 1.png", + "filename" : "Frame@2x(2).png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Frame-5.png", + "filename" : "Frame@3x(3).png", "idiom" : "universal", "scale" : "3x" } diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5 1.png deleted file mode 100644 index 9545fdc..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5.png deleted file mode 100644 index 669e9cc..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame-5.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@2x(2).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@2x(2).png new file mode 100644 index 0000000..a5d423e Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@2x(2).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@3x(3).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@3x(3).png new file mode 100644 index 0000000..8669b1b Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_feedback.imageset/Frame@3x(3).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Contents.json new file mode 100644 index 0000000..08f6a19 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x(6).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x(7).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@2x(6).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@2x(6).png new file mode 100644 index 0000000..18d9ed0 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@2x(6).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@3x(7).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@3x(7).png new file mode 100644 index 0000000..8a38a4b Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_instru.imageset/Frame@3x(7).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4 1.png deleted file mode 100644 index e4a7326..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4.png deleted file mode 100644 index 357cc23..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_language.imageset/Frame-4.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/Contents.json new file mode 100644 index 0000000..99ffc12 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "设置_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "设置_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@2x.png" "b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@2x.png" new file mode 100644 index 0000000..b856efd Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@2x.png" differ diff --git "a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@3x.png" "b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@3x.png" new file mode 100644 index 0000000..b7a2a2e Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_more.imageset/\350\256\276\347\275\256_1@3x.png" differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3 1.png deleted file mode 100644 index 111b122..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3.png deleted file mode 100644 index a1faecb..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_privacy.imageset/Frame-3.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Contents.json index 0b98d55..ffe9cff 100644 --- a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Contents.json +++ b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "Frame-6 1.png", + "filename" : "Frame@2x(4).png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Frame-6.png", + "filename" : "Frame@3x(5).png", "idiom" : "universal", "scale" : "3x" } diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6 1.png deleted file mode 100644 index d69e374..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6.png deleted file mode 100644 index dec7936..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame-6.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@2x(4).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@2x(4).png new file mode 100644 index 0000000..adaeb33 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@2x(4).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@3x(5).png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@3x(5).png new file mode 100644 index 0000000..3670036 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_update.imageset/Frame@3x(5).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame 1.png deleted file mode 100644 index d1b4769..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame.png deleted file mode 100644 index 06234dc..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_user.imageset/Frame.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2 1.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2 1.png deleted file mode 100644 index ac7c882..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2 1.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2.png b/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2.png deleted file mode 100644 index 14661fe..0000000 Binary files a/ShenYin/ShenYin/Assets.xcassets/mine/mine_cell_userAgreement.imageset/Frame-2.png and /dev/null differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Contents.json new file mode 100644 index 0000000..aca0edf --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Rectangle_745.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle_745@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle_745@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745.png b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745.png new file mode 100644 index 0000000..ec1e442 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@2x.png new file mode 100644 index 0000000..af0f00b Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@3x.png new file mode 100644 index 0000000..136aa0c Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/Rectangle_745.imageset/Rectangle_745@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Contents.json new file mode 100644 index 0000000..d215a52 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2302.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2302@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2302@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302.png new file mode 100644 index 0000000..2117bb4 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@2x.png new file mode 100644 index 0000000..383788c Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@3x.png new file mode 100644 index 0000000..68ad649 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_classic.imageset/Group_2302@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Contents.json new file mode 100644 index 0000000..217b6c0 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Slice 38.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 38@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 38@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38.png new file mode 100644 index 0000000..9537f55 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@2x.png new file mode 100644 index 0000000..83c576c Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@3x.png new file mode 100644 index 0000000..7cf12f6 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_anc.imageset/Slice 38@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Contents.json new file mode 100644 index 0000000..c658975 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Slice 38(2).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 38@2x(2).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 38@3x(2).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38(2).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38(2).png new file mode 100644 index 0000000..4c5abf3 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38(2).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@2x(2).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@2x(2).png new file mode 100644 index 0000000..e1d330f Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@2x(2).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@3x(2).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@3x(2).png new file mode 100644 index 0000000..39416ae Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_call.imageset/Slice 38@3x(2).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Contents.json new file mode 100644 index 0000000..06d9fc3 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Slice 38(1).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 38@2x(1).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 38@3x(1).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38(1).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38(1).png new file mode 100644 index 0000000..95b0479 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38(1).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@2x(1).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@2x(1).png new file mode 100644 index 0000000..80e3eef Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@2x(1).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@3x(1).png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@3x(1).png new file mode 100644 index 0000000..d4935fd Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_control_environment.imageset/Slice 38@3x(1).png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Contents.json new file mode 100644 index 0000000..8cf83b6 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2305.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2305@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2305@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305.png new file mode 100644 index 0000000..1a551bb Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@2x.png new file mode 100644 index 0000000..110ceb3 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@3x.png new file mode 100644 index 0000000..da04767 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_custom.imageset/Group_2305@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Contents.json new file mode 100644 index 0000000..4dbfa7d --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2300.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2300@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2300@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300.png new file mode 100644 index 0000000..92c6cc8 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@2x.png new file mode 100644 index 0000000..de37702 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@3x.png new file mode 100644 index 0000000..023a600 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_fashion.imageset/Group_2300@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Contents.json new file mode 100644 index 0000000..e998ac1 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2307.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2307@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2307@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307.png new file mode 100644 index 0000000..6f55536 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@2x.png new file mode 100644 index 0000000..9ac3ca0 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@3x.png new file mode 100644 index 0000000..9815aa5 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_jazz.imageset/Group_2307@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Contents.json new file mode 100644 index 0000000..2d6859b --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2301.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2301@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2301@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301.png new file mode 100644 index 0000000..306dba1 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@2x.png new file mode 100644 index 0000000..6dc86c6 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@3x.png new file mode 100644 index 0000000..fe74fe3 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_normal.imageset/Group_2301@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Contents.json new file mode 100644 index 0000000..db7b555 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_2304.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_2304@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_2304@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304.png new file mode 100644 index 0000000..11533a9 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@2x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@2x.png new file mode 100644 index 0000000..dca2d3a Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@3x.png b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@3x.png new file mode 100644 index 0000000..5d6e42b Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/mode/mode_rock.imageset/Group_2304@3x.png differ diff --git a/ShenYin/ShenYin/SceneDelegate.swift b/ShenYin/ShenYin/SceneDelegate.swift index dcaa1d8..90b78c5 100644 --- a/ShenYin/ShenYin/SceneDelegate.swift +++ b/ShenYin/ShenYin/SceneDelegate.swift @@ -20,9 +20,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { App.shared.window = window setConfig() - -// window?.rootViewController = UINavigationController(rootViewController: SetAccountVC()) window?.rootViewController = BaseTC() +// window?.rootViewController = UINavigationController(rootViewController: TextTranlateVC()) + } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/ShenYin/ShenYin/UI/Base/BaseNavigation.swift b/ShenYin/ShenYin/UI/Base/BaseNavigation.swift index 52f45b3..7ad014d 100644 --- a/ShenYin/ShenYin/UI/Base/BaseNavigation.swift +++ b/ShenYin/ShenYin/UI/Base/BaseNavigation.swift @@ -136,7 +136,7 @@ public class BaseNavigationBar: UIView { titleLabel.do { (v) in v.textColor = .rgb(0x121212) - v.font = .medium(20) + v.font = .medium(16) v.textAlignment = .center v.lineBreakMode = .byTruncatingTail v.text = navTitle @@ -191,7 +191,7 @@ public class BaseNavigationBar: UIView { else{ v.setTitle(item.title!, for: .normal) } - v.addTarget(self, action: item.action!, for: .touchUpInside) + v.addTarget(item.target, action: item.action!, for: .touchUpInside) } views.append(rightBtn) x = x + w diff --git a/ShenYin/ShenYin/UI/Base/BaseTC.swift b/ShenYin/ShenYin/UI/Base/BaseTC.swift index 383c318..afa86ac 100644 --- a/ShenYin/ShenYin/UI/Base/BaseTC.swift +++ b/ShenYin/ShenYin/UI/Base/BaseTC.swift @@ -55,6 +55,6 @@ class BaseTC:UITabBarController{ self.tabBar.backgroundColor = .white view.backgroundColor = .color(.bgColor) - self.selectedIndex = 2 + self.selectedIndex = 4 } } diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingCell.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingCell.swift new file mode 100644 index 0000000..c5a651c --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingCell.swift @@ -0,0 +1,134 @@ +// +// Fi.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +import UIKit + +/// Ai回应模型 +public class UBAiResponse { + /// 类型, + /// 0:AI录音解析错误(只发类型即可,后面字节均不发) + /// 1:AI录音解析内容 + /// 2:AI回应内容 + /// 3:AI回应错误(只发类型即可,后面字节均不发) + /// 4:AI回应结束(只发类型即可,后面字节均不发) + public var type: Int = 0 + /// 类型 start middle end + public var state:String = "" + + /// 回复id + public var reponseId: String = "" + /// 内容 + public var content: String = "" + /// 累积内容 + public var totalContent: String = "" + + + init(_ reponseId:String) { + self.reponseId = reponseId + } + + public var description: String { + return "UBAiResponse(type: \(type), state:\(state), content:\(content))" + } +} + + +class FieldRecordingCell:BaseTableViewCell{ + let bgView = UIView() + let line = BrokenLineView() + let originalLabel = UILabel() + let translationLabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func setupViews() { + contentView.backgroundColor = .rgb(0xF6F6F6) + + bgView.do { v in + v.yc.setCornerRadius(12) + v.backgroundColor = .white + } + originalLabel.do { v in + v.text = "你好,欢迎使用AI翻译,点击下方按钮立即开始咱们的对话吧" + v.font = .regular(14) + v.textColor = .hexString("#606D80") + v.numberOfLines = 0 + v.textAlignment = .left + } + translationLabel.do { v in + v.text = "Hello, welcome to AI translation, click the button below now Let's start our conversation" + v.font = .regular(14) + v.textColor = .hexString("#121212") + v.numberOfLines = 0 + v.textAlignment = .left + } + line.do { v in +// v.backgroundColor = .hexString("#93C6EC") + } + contentView.addSubview(bgView) + bgView.addSubviews([originalLabel,translationLabel,line]) + + +// let brokenLineView = BrokenLineView(frame: CGRect(x: 0, y: 0, width: 300, height:100)) +// addSubview(brokenLineView) + } + + override func setupLayout() { + bgView.snp.makeConstraints { make in + make.top.bottom.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 36) + make.left.equalToSuperview().inset(18) + } + + originalLabel.snp.makeConstraints { make in + make.top.equalToSuperview().inset(14) + make.left.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 60) + } + line.snp.makeConstraints { make in + make.left.right.equalToSuperview().inset(10) + make.height.equalTo(10) + make.top.equalTo(originalLabel.snp.bottom).offset(18) + } + + translationLabel.snp.makeConstraints { make in + make.top.equalTo(line.snp.bottom).offset(18) + make.left.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 60) + make.bottom.equalToSuperview().inset(10) + } + } + +// var data:UBAiResponse!{ +// didSet{ +// if data.type == 1 { +// bgView.snp.remakeConstraints { make in +// make.top.bottom.equalToSuperview().inset(10) +// make.right.equalToSuperview().inset(20) +// } +// } +// else{ +// +// bgView.snp.remakeConstraints { make in +// make.top.bottom.equalToSuperview().inset(10) +// make.left.equalToSuperview().inset(20) +// } +// } +// msgLabel.text = data.totalContent +// } +// } +} + + + diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift new file mode 100644 index 0000000..c85d261 --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/FieldRecordingVC.swift @@ -0,0 +1,73 @@ +// +// FieldRecordingVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/6. +// + +import UIKit + +class FieldRecordingVC:BaseVC{ + let toolBar = SendToolBar() + let tableView = UITableView(frame: CGRectZero, style: .plain) + var dataList = [1,2,3] + override func viewDidLoad() { + super.viewDidLoad() + } + override func setupViews() { + self.navBar.title = "现场录音" + tableView.backgroundColor = .clear + tableView.delegate = self + tableView.dataSource = self + tableView.estimatedRowHeight = 60 + tableView.separatorStyle = .none + tableView.register(FieldRecordingCell.self, forCellReuseIdentifier: FieldRecordingCell.reuseID) + view.addSubview(tableView) + + + toolBar.textField.text = "" + toolBar.delegate = self + view.addSubview(toolBar) + + } + override func setupLayout() { + toolBar.snp.makeConstraints { make in + make.width.centerX.equalToSuperview() + make.height.equalTo(52) + make.bottom.equalToSuperview().inset(20) + } + tableView.snp.makeConstraints { make in + make.top.equalToSuperview().inset(80) + make.left.right.equalToSuperview() + make.bottom.equalTo(toolBar.snp.top) + } + } + func scrollToBottom(){ + if dataList.count > 0 { + tableView.scrollToRow(at: IndexPath(row: dataList.count - 1, section: 0), at: .none, animated: true) + } + } +} +extension FieldRecordingVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataList.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = FieldRecordingCell.cell(withTableView: tableView, indexPath: indexPath) +// cell.data = dataList[indexPath.row] + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + + } +} +extension FieldRecordingVC:SendToolBarDelegate{ + func sendToolBar(_ toolBar: SendToolBar, _ text: String) { + toolBar.textField.resignFirstResponder() +// list.append(ChatCellModel(isSend:true,content:text)) +// tableView.reloadData() +// scrollToBottom() +// StartburstGlassesSdk.shared().chat.fireText(text) + } +} diff --git a/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordCell.swift b/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordCell.swift index 6197192..da7c364 100644 --- a/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordCell.swift +++ b/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordCell.swift @@ -15,11 +15,11 @@ class HistoryRecordCell: BaseTableViewCell { let dateLabel = UILabel() let typeLabel = UILabel() - var type:MineCellType = .user{ - didSet{ - titleLabel.text = type.title - } - } +// var type:MineCellType = .user{ +// didSet{ +// titleLabel.text = type.title +// } +// } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordVC.swift b/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordVC.swift index f63ca00..e465258 100644 --- a/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordVC.swift +++ b/ShenYin/ShenYin/UI/Home/HistoryRecord/HistoryRecordVC.swift @@ -10,7 +10,7 @@ import UIKit class HistoryRecordVC: BaseVC{ let tableView = UITableView(frame: .zero, style: .plain) let bottomView = HistoryBottonView() - var list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about] + var list = [1,2,3,4,5,6,7,8] override func viewDidLoad() { super.viewDidLoad() @@ -19,7 +19,7 @@ class HistoryRecordVC: BaseVC{ override func setupViews() { navBar.do { v in v.title = "历史录音" - let items = [NavigationRightItem(image: UIImage(named: "filter"),target: self, action: #selector(searchAction)),NavigationRightItem(image: UIImage(named: "search"), target: self,action: #selector(searchAction))] + let items = [NavigationRightItem(image: UIImage(named: "filter"),target: self, action: #selector(filterAction)),NavigationRightItem(image: UIImage(named: "search"), target: self,action: #selector(searchAction))] v.setupRightViews(items) } @@ -58,7 +58,7 @@ extension HistoryRecordVC:UITableViewDelegate,UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = HistoryRecordCell.cell(withTableView: tableView, indexPath: indexPath) - cell.type = list[indexPath.row] +// cell.type = list[indexPath.row] return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { diff --git a/ShenYin/ShenYin/UI/Home/HistoryRecord/SelecteCell.swift b/ShenYin/ShenYin/UI/Home/HistoryRecord/SelecteCell.swift index 97d14ab..fa414f1 100644 --- a/ShenYin/ShenYin/UI/Home/HistoryRecord/SelecteCell.swift +++ b/ShenYin/ShenYin/UI/Home/HistoryRecord/SelecteCell.swift @@ -38,7 +38,18 @@ enum ShareType:Int{ } } - +enum GenderType:Int{ + case man + case female + var title:String{ + switch self { + case .man: + return "男" + case .female: + return "女" + } + } +} class SelectCell: BaseTableViewCell { let bgView = UIView() @@ -57,7 +68,11 @@ class SelectCell: BaseTableViewCell { titleLabel.text = shareType.title } } - + var genderType:GenderType = .man{ + didSet{ + titleLabel.text = genderType.title + } + } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/ShenYin/ShenYin/UI/Home/RoleListVC.swift b/ShenYin/ShenYin/UI/Home/RoleListVC.swift index ff0f65f..fba3b1f 100644 --- a/ShenYin/ShenYin/UI/Home/RoleListVC.swift +++ b/ShenYin/ShenYin/UI/Home/RoleListVC.swift @@ -8,7 +8,7 @@ import UIKit class RoleListVC: BaseVC{ let tableView = UITableView(frame: .zero, style: .plain) - var list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about] + var list:[MineCellType] = [] override func viewDidLoad() { super.viewDidLoad() diff --git a/ShenYin/ShenYin/UI/Home/textTranslateVC/LanguageSelecteView.swift b/ShenYin/ShenYin/UI/Home/textTranslateVC/LanguageSelecteView.swift new file mode 100644 index 0000000..912c90a --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/textTranslateVC/LanguageSelecteView.swift @@ -0,0 +1,7 @@ +// +// LangeuageView.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + diff --git a/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift b/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift new file mode 100644 index 0000000..86b897f --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift @@ -0,0 +1,73 @@ +// +// TextTranlateVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/6. +// + +import UIKit + +class TextTranlateVC:BaseVC{ + let toolBar = SendToolBar() + let tableView = UITableView(frame: CGRectZero, style: .plain) + var dataList = [1,2,3] + override func viewDidLoad() { + super.viewDidLoad() + } + override func setupViews() { + self.navBar.title = "文本翻译" + tableView.backgroundColor = .clear + tableView.delegate = self + tableView.dataSource = self + tableView.estimatedRowHeight = 60 + tableView.separatorStyle = .none + tableView.register(TranslateCell.self, forCellReuseIdentifier: TranslateCell.reuseID) + view.addSubview(tableView) + + + toolBar.textField.text = "" + toolBar.delegate = self + view.addSubview(toolBar) + + } + override func setupLayout() { + toolBar.snp.makeConstraints { make in + make.width.centerX.equalToSuperview() + make.height.equalTo(52) + make.bottom.equalToSuperview().inset(20) + } + tableView.snp.makeConstraints { make in + make.top.equalToSuperview().inset(80) + make.left.right.equalToSuperview() + make.bottom.equalTo(toolBar.snp.top) + } + } + func scrollToBottom(){ + if dataList.count > 0 { + tableView.scrollToRow(at: IndexPath(row: dataList.count - 1, section: 0), at: .none, animated: true) + } + } +} +extension TextTranlateVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataList.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = TranslateCell.cell(withTableView: tableView, indexPath: indexPath) + // cell.data = dataList[indexPath.row] + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + + } +} +extension TextTranlateVC:SendToolBarDelegate{ + func sendToolBar(_ toolBar: SendToolBar, _ text: String) { + toolBar.textField.resignFirstResponder() + // list.append(ChatCellModel(isSend:true,content:text)) + // tableView.reloadData() + // scrollToBottom() + // StartburstGlassesSdk.shared().chat.fireText(text) + } +} diff --git a/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift b/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift new file mode 100644 index 0000000..6d455c5 --- /dev/null +++ b/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift @@ -0,0 +1,102 @@ +// +// TranslateCell.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +class TranslateCell:BaseTableViewCell{ + let bgView = UIView() + let line = BrokenLineView() + let originalLabel = UILabel() + let translationLabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func setupViews() { + contentView.backgroundColor = .rgb(0xF6F6F6) + + bgView.do { v in + v.yc.setCornerRadius(12) + v.backgroundColor = .white + } + originalLabel.do { v in + v.text = "你好,欢迎使用AI翻译,点击下方按钮立即开始咱们的对话吧" + v.font = .regular(14) + v.textColor = .hexString("#606D80") + v.numberOfLines = 0 + v.textAlignment = .left + } + translationLabel.do { v in + v.text = "Hello, welcome to AI translation, click the button below now Let's start our conversation" + v.font = .regular(14) + v.textColor = .hexString("#121212") + v.numberOfLines = 0 + v.textAlignment = .left + } + line.do { v in + // v.backgroundColor = .hexString("#93C6EC") + } + contentView.addSubview(bgView) + bgView.addSubviews([originalLabel,translationLabel,line]) + + + // let brokenLineView = BrokenLineView(frame: CGRect(x: 0, y: 0, width: 300, height:100)) + // addSubview(brokenLineView) + } + + override func setupLayout() { + bgView.snp.makeConstraints { make in + make.top.bottom.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 36) + make.left.equalToSuperview().inset(18) + } + + originalLabel.snp.makeConstraints { make in + make.top.equalToSuperview().inset(14) + make.left.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 60) + } + line.snp.makeConstraints { make in + make.left.right.equalToSuperview().inset(10) + make.height.equalTo(10) + make.top.equalTo(originalLabel.snp.bottom).offset(18) + } + + translationLabel.snp.makeConstraints { make in + make.top.equalTo(line.snp.bottom).offset(18) + make.left.equalToSuperview().inset(10) + make.width.lessThanOrEqualTo(kScreenWid - 60) + make.bottom.equalToSuperview().inset(10) + } + } + + // var data:UBAiResponse!{ + // didSet{ + // if data.type == 1 { + // bgView.snp.remakeConstraints { make in + // make.top.bottom.equalToSuperview().inset(10) + // make.right.equalToSuperview().inset(20) + // } + // } + // else{ + // + // bgView.snp.remakeConstraints { make in + // make.top.bottom.equalToSuperview().inset(10) + // make.left.equalToSuperview().inset(20) + // } + // } + // msgLabel.text = data.totalContent + // } + // } +} + + + diff --git a/ShenYin/ShenYin/UI/Mine/AboutVC.swift b/ShenYin/ShenYin/UI/Mine/AboutVC.swift index f1603d6..a08c322 100644 --- a/ShenYin/ShenYin/UI/Mine/AboutVC.swift +++ b/ShenYin/ShenYin/UI/Mine/AboutVC.swift @@ -6,19 +6,93 @@ // import UIKit - -class AboutVC:BaseVC{ +class AboutVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + let list:[CustomCellType] = [.update,.userAgreement,.privacyPolicy] override func viewDidLoad() { super.viewDidLoad() - - + // Do any additional setup after loading the view. } override func setupViews() { self.navBar.title = "关于我们" + tableView.do { v in + v.backgroundColor = .color(.bgColor) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.sectionHeaderHeight = 52 + v.separatorStyle = .none + v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID) + v.register(CustomSectionHeader.self, forHeaderFooterViewReuseIdentifier: CustomSectionHeader.reuseID) + v.tableHeaderView = AboutHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 175)) + } + view.addSubview(tableView) } override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(kNavBtm) + } + } +} + +extension AboutVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath) + cell.type = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + + } +} + + +class AboutHeaderView: BaseView { + let icon = UIImageView() + let titleLabel = UILabel() + + override func setupViews() { + addSubviews([titleLabel,icon]) + icon.do { v in + v.image = UIImage(named: "logo_1") + } + titleLabel.do { (v) in + v.textColor = .hexString("#666666") + v.font = .regular(14) + v.textAlignment = .left + v.text = "当前版本:2.1.1" + } + + } + + override func setupLayout() { + icon.snp.makeConstraints { (m) in + m.size.equalTo(70) + m.centerX.equalToSuperview() + m.top.equalToSuperview().offset(50) + } + titleLabel.snp.makeConstraints { (m) in + m.top.equalTo(icon.snp.bottom).offset(12) + m.centerX.equalToSuperview() + } } } diff --git a/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift b/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift index 2d67f7f..c4510ad 100644 --- a/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift +++ b/ShenYin/ShenYin/UI/Mine/AccountSetVC.swift @@ -23,9 +23,10 @@ class AccountSetVC: BaseVC{ v.rowHeight = 52 v.sectionHeaderHeight = 52 v.separatorStyle = .none - v.register(UserInfoCell.self, forCellReuseIdentifier: CustomCell1.reuseID) - v.register(UserInfoImageCell.self, forCellReuseIdentifier: UserInfoImageCell.reuseID) - v.register(UserInfoSectionHeader.self, forHeaderFooterViewReuseIdentifier: UserInfoSectionHeader.reuseID) + v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID) + v.register(CustomSectionHeader.self, forHeaderFooterViewReuseIdentifier: CustomSectionHeader.reuseID) + v.tableHeaderView = AccountSetHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 50)) + } @@ -48,7 +49,7 @@ extension AccountSetVC:UITableViewDelegate,UITableViewDataSource { return list[section].list.count } func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - let view = UserInfoSectionHeader.header(withTableView: tableView) + let view = CustomSectionHeader.header(withTableView: tableView) view.titleLabel.text = list[section].title return view } @@ -70,12 +71,75 @@ extension AccountSetVC:UITableViewDelegate,UITableViewDataSource { } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let data = list[indexPath.section].list[indexPath.row] - + switch data { + case .account: + App.shared.goToPage(SetAccountVC()) + case .phone: + App.shared.goToPage(SetPhoneVC()) + case .email: + App.shared.goToPage(SetEmailVC()) + case .thirdLogin: +// App.shared.goToPage(SetAccountVC()) + break + default: + break + } } } -extension AccountSetVC{ - @objc func logoutAction(){ + +class AccountSetHeaderView: BaseView { + let icon = UIImageView() + let titleLabel = UILabel() + let valueLabel = UILabel() + let nextIcon = UIImageView() + override func setupViews() { + addSubviews([titleLabel,icon,valueLabel,nextIcon]) + icon.do { v in + v.image = UIImage(named: "head") + v.yc.setCornerRadius(27) + v.backgroundColor = .black.withAlphaComponent(0.1) + } + titleLabel.do { (v) in + v.textColor = .rgb(0x121212) + v.font = .regular(20) + v.textAlignment = .left + v.text = "Juliaxxxx" + } + valueLabel.do { (v) in + v.textColor = .rgb(0x666666) + v.font = .regular(14) + v.textAlignment = .left + v.text = "手机号:+86 134****4811" + } + nextIcon.image = UIImage(named: "arrow_next") + yc.addTap(target: self, action: #selector(tapAction)) + } + + override func setupLayout() { + icon.snp.makeConstraints { (m) in + m.width.equalTo(54) + m.height.equalTo(54) + m.left.equalToSuperview().inset(15) + m.top.equalToSuperview() + } + titleLabel.snp.makeConstraints { (m) in + m.top.equalToSuperview().inset(5) + m.left.equalTo(icon.snp.right).offset(15) + } + valueLabel.snp.makeConstraints { (m) in + m.bottom.equalToSuperview().inset(5) + m.left.equalTo(icon.snp.right).offset(15) + } + nextIcon.snp.makeConstraints { (m) in + m.width.equalTo(8) + m.height.equalTo(12) + m.right.equalToSuperview().inset(15) + m.centerY.equalToSuperview() + } + } + @objc func tapAction(){ + App.shared.goToPage(UserInfoVC()) } } diff --git a/ShenYin/ShenYin/UI/Mine/InstructionsVC.swift b/ShenYin/ShenYin/UI/Mine/InstructionsVC.swift new file mode 100644 index 0000000..eb76678 --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/InstructionsVC.swift @@ -0,0 +1,66 @@ +// +// InstructionsVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +import UIKit +class InstructionsVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + let list:[CustomCellType] = [.notice,.language] + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + self.navBar.title = "电子说明书" + tableView.do { v in + v.backgroundColor = .color(.bgColor) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.sectionHeaderHeight = 52 + v.separatorStyle = .none + v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID) + v.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenHei, height: 20)) + } + + + + view.addSubview(tableView) + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(kNavBtm) + } + } +} + +extension InstructionsVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath) +// cell.type = list[indexPath.row] + cell.titleLabel.text = "Deep Gen2 Max" + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + + } +} diff --git a/ShenYin/ShenYin/UI/Mine/Login/View/PasswordView.swift b/ShenYin/ShenYin/UI/Mine/Login/View/PasswordView.swift index 06ff02b..e67cfdf 100644 --- a/ShenYin/ShenYin/UI/Mine/Login/View/PasswordView.swift +++ b/ShenYin/ShenYin/UI/Mine/Login/View/PasswordView.swift @@ -18,9 +18,7 @@ class PasswordView: BaseView { v.keyboardType = .phonePad v.placeholder = "请输入密码" v.isSecureTextEntry = true - } - - + } btn.setImage(UIImage(named: "pwd_close"), for: .normal) btn.setImage(UIImage(named: "pwd_open"), for: .selected) btn.addTarget(self, action: #selector(btnAction), for: .touchUpInside) diff --git a/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift new file mode 100644 index 0000000..3008cda --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift @@ -0,0 +1,107 @@ +// +// MoreSetVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +import UIKit +class MoreSetVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + let list:[CustomCellType] = [.notice,.language] + + let switchBtn = CustomButton() + let logoutBtn = CustomButton() + let deactivateBtn = CustomButton() + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + self.navBar.title = "更多设置" + tableView.do { v in + v.backgroundColor = .color(.bgColor) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.sectionHeaderHeight = 52 + v.separatorStyle = .none + v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID) + v.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenHei, height: 20)) + v.bounces = false + } + + switchBtn.set(title: "切换账号",style: .theme3, target: self, action: #selector(swictAction)) + logoutBtn.set(title: "退出登录",style: .theme3, target: self, action: #selector(logoutAction)) + deactivateBtn.set(title: "注销账号",style: .theme3, target: self, action: #selector(deactivateAction)) + + view.addSubviews([tableView,switchBtn,logoutBtn,deactivateBtn]) + + + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalToSuperview().inset(kNavBtm) + make.height.equalTo(124) + } + deactivateBtn.snp.makeConstraints { make in + make.bottom.equalToSuperview().inset(kSafeBtm + 10) + make.left.right.equalToSuperview().inset(18) + make.height.equalTo(55) + } + logoutBtn.snp.makeConstraints { make in + make.bottom.equalTo(deactivateBtn.snp.top).offset(-20) + make.left.right.equalToSuperview().inset(18) + make.height.equalTo(55) + } + switchBtn.snp.makeConstraints { make in + make.bottom.equalTo(logoutBtn.snp.top).offset(-20) + make.left.right.equalToSuperview().inset(18) + make.height.equalTo(55) + } + } + @objc func swictAction(){ + + } + @objc func logoutAction(){ + + } + @objc func deactivateAction(){ + + } +} + +extension MoreSetVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath) + cell.type = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + switch data { + case .language: + App.shared.goToPage(LanguageVC()) + case .notice: +// App.shared.goToPage(SetPhoneVC()) + break + default: + break + } + } +} diff --git a/ShenYin/ShenYin/UI/Mine/MyDeviceList.swift b/ShenYin/ShenYin/UI/Mine/MyDeviceList.swift new file mode 100644 index 0000000..08c9eeb --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/MyDeviceList.swift @@ -0,0 +1,126 @@ +// +// MyDeviceList.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +import UIKit +class MyDeviceList: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + let bottomView = HistoryBottonView() + var list = [1,2,3,4,5,6,7,8] + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + navBar.do { v in + v.title = "设备详情" + } + + tableView.do { v in + v.backgroundColor = .rgb(0xF7F7F7) + v.delegate = self + v.dataSource = self + v.estimatedRowHeight = 84 + v.separatorStyle = .none + v.register(MyDeviceListCell.self, forCellReuseIdentifier: MyDeviceListCell.reuseID) + } + view.addSubviews([tableView]) + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.top.equalTo(kNavBtm) + make.bottom.equalToSuperview() + } + } +} + +extension MyDeviceList:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = MyDeviceListCell.cell(withTableView: tableView, indexPath: indexPath) + // cell.type = list[indexPath.row] + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + + } +// // 实现滑动删除功能 +// func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { +// if editingStyle == .delete { +// // 从数据源中移除对应数据 +// list.remove(at: indexPath.row) +// // 从表格中删除对应行 +// tableView.deleteRows(at: [indexPath], with:.fade) +// } +// } +// +// // 允许编辑 +// func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { +// return true +// } +} +class MyDeviceListCell: BaseTableViewCell { + let bgView = UIView() + let playIcon = UIImageView() + let titleLabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + override func setupViews() { + contentView.addSubview(bgView) + bgView.addSubviews([playIcon,titleLabel]) + + backgroundColor = .rgb(0xF7F7F7) + contentView.backgroundColor = .clear + selectionStyle = .none + bgView.do { v in + v.backgroundColor = UIColor.white + v.layer.cornerRadius = 12 + v.layer.masksToBounds = true + } + titleLabel.do { (v) in + v.textColor = .rgb(0x121212) + v.font = .bold(16) + v.textAlignment = .left + v.text = "Deep Gen2 Max" + } + + playIcon.do { v in + v.image = UIImage(named: "device_list_icon") + } + } + + override func setupLayout() { + bgView.snp.makeConstraints { (m) in + m.left.right.equalToSuperview().inset(15) + m.top.equalToSuperview().inset(5) + m.bottom.equalToSuperview().inset(5) + m.height.equalTo(74) + } + + playIcon.snp.makeConstraints { (m) in + m.size.equalTo(24) + m.centerY.equalToSuperview() + m.left.equalToSuperview().inset(16) + } + titleLabel.snp.makeConstraints { (m) in + m.centerY.equalToSuperview() + m.left.equalToSuperview().offset(56) + } + + } +} diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineBannerView.swift b/ShenYin/ShenYin/UI/Mine/Root/MineBannerView.swift new file mode 100644 index 0000000..1e99d12 --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/Root/MineBannerView.swift @@ -0,0 +1,127 @@ +// +// MineBannerView.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + + +import Foundation +import UIKit +import FSPagerView + +class BannerModel: NSObject { + /// id + var id = "" + /// 图片 + var imgPath = "" + /// 跳转类型 -1不跳转 0外链 + var jumpType = -1 + /// 跳转地址 + var jumpValue = "" +} + +final class MineBannerView: BaseView { + private var dataArray = [BannerModel]() + private let pagerView = FSPagerView() + private let pageControl = FSPageControl() + + public func config(list:[BannerModel]) { + self.dataArray = list + self.pageControl.numberOfPages = dataArray.count + self.pagerView.reloadData() + } + override func setupLayout() { + addSubview(pagerView) + addSubview(pageControl) + + pagerView.snp.makeConstraints { (m) in + m.top.bottom.equalToSuperview() + m.left.right.equalToSuperview() + } + pageControl.snp.makeConstraints { (m) in + m.width.equalToSuperview() + m.height.equalTo(25) + m.bottom.equalToSuperview().inset(10) + m.centerX.equalToSuperview() + } + } + override func setupViews() { + backgroundColor = .clear + clipsToBounds = true + pagerView.do { v in + v.dataSource = self + v.delegate = self + v.interitemSpacing = 18 + v.bounces = false + v.isInfinite = true + v.automaticSlidingInterval = 4 + v.itemSize = CGSize(width: kScreenWid - 36 , height: 126) + v.register(PictureViewCell.self, forCellWithReuseIdentifier: "PictureViewCell") + } + + pageControl.do { v in + v.contentHorizontalAlignment = .center + v.hidesForSinglePage = true + v.setFillColor(UIColor.white.withAlphaComponent(0.4), for: .normal) + v.setFillColor(.white, for: .selected) + } + } +} + +extension MineBannerView: FSPagerViewDataSource, FSPagerViewDelegate { + func numberOfItems(in pagerView: FSPagerView) -> Int { + return dataArray.count + } + + func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell { + let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "PictureViewCell", at: index) as! PictureViewCell + let model = dataArray[index] +// cell.picture.kf.setImage(with: model.imgPath.yc.asUrl) + cell.picture.image = UIImage(named: model.imgPath) + return cell + } + + func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) { + self.pageControl.currentPage = targetIndex + } + func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) { + self.pageControl.currentPage = pagerView.currentIndex + } + + func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int){ + let model = dataArray[index] +// if model.jumpType == 0 { +// if let url = model.jumpValue.fragmentUrl { +// let request = URLRequest(url: url) +// let params = BaseWebViewParams(request:request) +// let vc = BaseWebViewController(initData: params) +// UIViewController.yc.currentNav?.pushViewController(vc, animated: true) +// } //UIApplication.shared.canOpenURL(URL(string: )) +// } + } +} + + +fileprivate class PictureViewCell: FSPagerViewCell { + let picture = UIImageView() + + override init(frame: CGRect) { + super.init(frame: frame) + + addSubview(picture) + + picture.snp.makeConstraints { (m) in + m.edges.equalToSuperview() + } + + picture.do { (v) in + v.yc.setCornerRadius(8) + } +// picture.backgroundColor = .lightGray + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineCell.swift b/ShenYin/ShenYin/UI/Mine/Root/MineCell.swift index d6aee46..e4f3286 100644 --- a/ShenYin/ShenYin/UI/Mine/Root/MineCell.swift +++ b/ShenYin/ShenYin/UI/Mine/Root/MineCell.swift @@ -8,29 +8,20 @@ import UIKit public enum MineCellType: Int { - case user - case device - case userAgreement - case privacyPolicy - case language + case instructions case update + case more case feeback case about var title:String{ switch self { - case .user: - return "用户管理" - case .device: - return "设备详情" - case .userAgreement: - return "用户协议" - case .privacyPolicy: - return "隐私政策" - case .language: - return "语言设置" + case .instructions: + return "电子说明书" case .update: return "固件升级" + case .more: + return "更多设置" case .feeback: return "意见反馈" case .about: @@ -39,18 +30,12 @@ public enum MineCellType: Int { } var icon:String{ switch self { - case .user: - return "mine_cell_user" - case .device: - return "mine_cell_device" - case .userAgreement: - return "mine_cell_userAgreement" - case .privacyPolicy: - return "mine_cell_privacy" - case .language: - return "mine_cell_language" + case .instructions: + return "mine_cell_instru" case .update: return "mine_cell_update" + case .more: + return "mine_cell_more" case .feeback: return "mine_cell_feedback" case .about: @@ -62,17 +47,18 @@ public enum MineCellType: Int { class MineCell: BaseTableViewCell { let bgView = UIView() - let icon = UIImageView() let titleLabel = UILabel() let nextIcon = UIImageView() + let valueIcon = UIImageView() - var type:MineCellType = .user{ + var type:MineCellType = .update{ didSet{ - icon.image = UIImage(named: type.icon) titleLabel.text = type.title + valueIcon.image = UIImage(named: type.icon) } } + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) } @@ -82,19 +68,17 @@ class MineCell: BaseTableViewCell { } override func setupViews() { contentView.addSubview(bgView) - bgView.addSubviews([titleLabel,icon,nextIcon]) + bgView.addSubviews([titleLabel,nextIcon,valueIcon]) backgroundColor = .rgb(0xF7F7F7) contentView.backgroundColor = .clear selectionStyle = .none bgView.do { v in v.backgroundColor = UIColor.white - v.layer.cornerRadius = 12 - v.layer.masksToBounds = true } titleLabel.do { (v) in v.textColor = .rgb(0x121212) - v.font = .bold(12) + v.font = .bold(14) v.textAlignment = .left } nextIcon.image = UIImage(named: "arrow_next") @@ -102,10 +86,14 @@ class MineCell: BaseTableViewCell { override func setupLayout() { bgView.snp.makeConstraints { (m) in - m.left.right.equalToSuperview().inset(15) - m.top.equalToSuperview().inset(6) - m.bottom.equalToSuperview().inset(6) - m.height.equalTo(48) + m.left.right.equalToSuperview().inset(18) + m.top.equalToSuperview() + m.bottom.equalToSuperview() + } + titleLabel.snp.makeConstraints { (m) in + m.centerY.equalToSuperview() + m.left.equalToSuperview().offset(60) + m.height.equalToSuperview() } nextIcon.snp.makeConstraints { (m) in m.width.equalTo(8) @@ -113,17 +101,10 @@ class MineCell: BaseTableViewCell { m.right.equalToSuperview().inset(15) m.centerY.equalToSuperview() } - icon.snp.makeConstraints { (m) in - m.width.equalTo(24) - m.height.equalTo(24) - m.left.equalToSuperview().inset(15) + valueIcon.snp.makeConstraints { (m) in + m.size.equalTo(24) + m.left.equalToSuperview().inset(20) m.centerY.equalToSuperview() } - titleLabel.snp.makeConstraints { (m) in - m.centerY.equalTo(icon) - m.left.equalTo(icon.snp.right).offset(15) - m.height.equalToSuperview() - } - } } diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift b/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift index 2d382d8..327bb8c 100644 --- a/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift +++ b/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift @@ -7,17 +7,90 @@ import UIKit class MineHeaderView: BaseView { - let userView = MineUserInfoView() + let userInfo = MineUserInfoView() + let banner = MineBannerView() + + override func setupViews() { + addSubviews([userInfo,banner]) + let model1 = BannerModel() + model1.imgPath = "mine_banner1" + let model2 = BannerModel() + model2.imgPath = "mine_banner2" + let model3 = BannerModel() + model3.imgPath = "mine_banner3" + banner.config(list: [model1,model2,model3]) + } + override func setupLayout() { + userInfo.snp.makeConstraints { (m) in + m.top.equalToSuperview() + m.left.right.equalToSuperview() + m.height.equalTo(100) + } + banner.snp.makeConstraints { (m) in + m.height.equalTo(126) + m.left.right.equalToSuperview() + m.top.equalTo(userInfo.snp.bottom).offset(20) + } + } +} + + +class MineUserInfoView: BaseView { + let icon = UIImageView() + let titleLabel = UILabel() + let deviceLabel = UILabel() override func setupViews() { - backgroundColor = .clear - addSubviews([userView]) + addSubviews([titleLabel,icon,deviceLabel]) + + icon.do { v in + v.image = UIImage(named: "head") + v.yc.setCornerRadius(40) + v.backgroundColor = .white + } + titleLabel.do { (v) in + v.textColor = .rgb(0x121212) + v.font = .regular(26) + v.textAlignment = .left + v.text = "Juliaxxxx" + + } + deviceLabel.do { (v) in + v.backgroundColor = .white + v.textColor = .rgb(0x666666) + v.font = .regular(14) + v.textAlignment = .center + v.text = "共4个智能设备" + v.yc.setCornerRadius(15) + v.yc.addTap(target: self, action:#selector(deviceListAction)) + } + yc.addTap(target: self, action: #selector(tapAction)) + } + override func setupLayout() { - userView.snp.makeConstraints { make in - make.left.right.equalToSuperview().inset(15) - make.top.equalToSuperview().inset(30) + + titleLabel.snp.makeConstraints { (m) in + m.top.equalToSuperview().inset(10) + m.left.equalToSuperview().inset(38) } + deviceLabel.snp.makeConstraints { (m) in + m.top.equalToSuperview().inset(60) + m.left.equalToSuperview().inset(38) + m.height.equalTo(30) + m.width.equalTo(120) + } + icon.snp.makeConstraints { (m) in + m.size.equalTo(80) + m.right.equalToSuperview().inset(38) + m.top.equalToSuperview().inset(10) + } + } + @objc func tapAction(){ + App.shared.goToPage(UserInfoVC()) + } + @objc func deviceListAction(){ + App.shared.goToPage(MyDeviceList()) } } diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineOrderView.swift b/ShenYin/ShenYin/UI/Mine/Root/MineOrderView.swift deleted file mode 100644 index 7a6f90b..0000000 --- a/ShenYin/ShenYin/UI/Mine/Root/MineOrderView.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// MineOrderView.swift -// ShenYin -// -// Created by liangshi on 2025/7/30. -// - -import UIKit -class MineOrderView: BaseView { - let bgView = UIView() - let bgImgView1 = UIImageView() - let bgImgView2 = UIImageView() - let button1 = MineOrderButton1() - let button2 = MineOrderButton1() - let button3 = MineOrderButton1() - - override func setupViews() { - backgroundColor = .clear - addSubviews([bgView]) - bgView.addSubviews([bgImgView2,bgImgView1,button1,button2,button3]) - - bgImgView1.do { v in - v.image = UIImage(named: "mine_order_bg1") - } - bgImgView2.do { v in - v.image = UIImage(named: "mine_order_bg2") - } - - } - override func setupLayout() { - bgView.snp.makeConstraints { make in - make.edges.equalToSuperview() - } - bgImgView1.snp.makeConstraints { make in - make.edges.equalToSuperview() - } - bgImgView2.snp.makeConstraints { make in - make.right.equalToSuperview() - make.top.equalToSuperview() - make.width.equalTo(135) - make.height.equalTo(48) - } - button1.snp.makeConstraints { make in - make.left.equalToSuperview().inset(15) - make.top.equalToSuperview().inset(15) - make.width.equalTo(200) - } - } -} -class MineOrderButton1: BaseView { - let icon = UIImageView() - let titleLabel = UILabel() - let valueLabel = UILabel() - - - - override func setupViews() { - addSubviews([titleLabel,icon,valueLabel]) - - icon.do { v in - v.image = UIImage(named: "head") - v.yc.setCornerRadius(27) - v.backgroundColor = .black.withAlphaComponent(0.1) - } - titleLabel.do { (v) in - v.textColor = .white - v.font = .bold(16) - v.textAlignment = .left - v.text = "用户未登录" - } - valueLabel.do { (v) in - v.textColor = .black.withAlphaComponent(0.6) - v.font = .medium(14) - v.textAlignment = .right - v.text = "登录帐号后可查看ID" - } - } - - override func setupLayout() { - icon.snp.makeConstraints { (m) in - m.width.equalTo(32) - m.height.equalTo(32) - m.left.equalToSuperview().inset(15) - m.top.equalToSuperview() - m.bottom.equalToSuperview() - } - titleLabel.snp.makeConstraints { (m) in - m.top.equalToSuperview().inset(5) - m.left.equalTo(icon.snp.right).offset(15) - } - valueLabel.snp.makeConstraints { (m) in - m.bottom.equalToSuperview().inset(5) - m.left.equalTo(icon.snp.right).offset(15) - } - } -} diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineUserInfoView.swift b/ShenYin/ShenYin/UI/Mine/Root/MineUserInfoView.swift deleted file mode 100644 index 9fe54fc..0000000 --- a/ShenYin/ShenYin/UI/Mine/Root/MineUserInfoView.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// MineUserInfoView.swift -// ShenYin -// -// Created by liangshi on 2025/7/30. -// - -import UIKit -class MineUserInfoView: BaseView { - let icon = UIImageView() - let titleLabel = UILabel() - let valueLabel = UILabel() - - - - override func setupViews() { - addSubviews([titleLabel,icon,valueLabel]) - - icon.do { v in - v.image = UIImage(named: "head") - v.yc.setCornerRadius(27) - v.backgroundColor = .black.withAlphaComponent(0.1) - } - titleLabel.do { (v) in - v.textColor = .rgb(0x121212) - v.font = .bold(16) - v.textAlignment = .left - v.text = "用户未登录" - } - valueLabel.do { (v) in - v.textColor = .rgb(0x999999) - v.font = .medium(14) - v.textAlignment = .right - v.text = "登录帐号后可查看ID" - } - } - - override func setupLayout() { - icon.snp.makeConstraints { (m) in - m.width.equalTo(54) - m.height.equalTo(54) - m.left.equalToSuperview().inset(15) - m.top.equalToSuperview() - m.bottom.equalToSuperview() - } - titleLabel.snp.makeConstraints { (m) in - m.top.equalToSuperview().inset(5) - m.left.equalTo(icon.snp.right).offset(15) - } - valueLabel.snp.makeConstraints { (m) in - m.bottom.equalToSuperview().inset(5) - m.left.equalTo(icon.snp.right).offset(15) - } - - } - -} diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineVC.swift b/ShenYin/ShenYin/UI/Mine/Root/MineVC.swift index a2f1cca..ea16b54 100644 --- a/ShenYin/ShenYin/UI/Mine/Root/MineVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Root/MineVC.swift @@ -4,11 +4,10 @@ // // Created by incar on 2024/1/3. // - import UIKit class MineVC: BaseVC{ let tableView = UITableView(frame: .zero, style: .plain) - let list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about] + let list:[MineCellType] = [.instructions,.update,.more,.feeback,.about] override func viewDidLoad() { super.viewDidLoad() @@ -17,22 +16,18 @@ class MineVC: BaseVC{ override func setupViews() { self.navBar.title = "我的" tableView.do { v in - v.backgroundColor = .rgb(0xF7F7F7) + v.backgroundColor = .color(.bgColor) v.delegate = self v.dataSource = self - v.rowHeight = 68 + v.rowHeight = 52 + v.sectionHeaderHeight = 52 v.separatorStyle = .none v.register(MineCell.self, forCellReuseIdentifier: MineCell.reuseID) - v.tableHeaderView = MineHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 150)) + v.tableHeaderView = MineHeaderView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 266)) + } + view.addSubview(tableView) - - let bar = MineNavBar(frame: navBar.frame) - navBar.addSubview(bar) - -// let data = Data([0x48, 0x65, 0x6C, 0x6C, 0x6F]) -// let hexString = data.map { String(format: "%02hhx", $0) }.joined() -// print(hexString) } override func setupLayout() { tableView.snp.makeConstraints { make in @@ -43,33 +38,33 @@ class MineVC: BaseVC{ } extension MineVC:UITableViewDelegate,UITableViewDataSource { - func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return 60 - } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return list.count } - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = MineCell.cell(withTableView: tableView, indexPath: indexPath) cell.type = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let data = list[indexPath.row] switch data { - case .user: - App.shared.goToPage(AboutVC()) - case .device: - App.shared.goToPage(DeviceInfoVC()) - case .userAgreement: - App.shared.goToPage(AboutVC()) - case .privacyPolicy: - App.shared.goToPage(AboutVC()) - case .language: - App.shared.goToPage(LanguageVC()) + case .instructions: + App.shared.goToPage(InstructionsVC()) case .update: App.shared.goToPage(UpdateVC()) + case .more: + App.shared.goToPage(MoreSetVC()) case .feeback: App.shared.goToPage(FeekbackVC()) case .about: diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/AreaVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/AreaVC.swift new file mode 100644 index 0000000..535849a --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/AreaVC.swift @@ -0,0 +1,68 @@ +// +// AreaVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/25. +// + +import UIKit +class AreaVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + var list:[GenderType] = [.man,.female,] + var currentType = GenderType.man + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + self.navBar.title = "性别" + tableView.do { v in + v.backgroundColor = .rgb(0xF7F7F7) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.separatorStyle = .none + v.register(SelectCell.self, forCellReuseIdentifier: SelectCell.reuseID) + } + view.addSubviews([tableView]) + + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(kNavBtm) + } + } + @objc func btnAction(){ + + } +} + +extension AreaVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = SelectCell.cell(withTableView: tableView, indexPath: indexPath) + cell.genderType = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + cell.selectedIcon.isHidden = cell.genderType != currentType + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + currentType = data + tableView.reloadData() + } +} diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell1.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell1.swift index 6a56daf..ca53909 100644 --- a/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell1.swift +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomCell1.swift @@ -16,6 +16,14 @@ public enum CustomCellType: Int { case email case thirdLogin + + case update + case userAgreement + case privacyPolicy + + case notice + case language + case deregister var title:String{ @@ -38,6 +46,17 @@ public enum CustomCellType: Int { case .thirdLogin: return "第三方账号" + case .update: + return "检查更新" + case .userAgreement: + return "用户协议" + case .privacyPolicy: + return "隐私协议" + + case .notice: + return "系统消息通知" + case .language: + return "语言设置" case .deregister: return "注销账号" @@ -51,10 +70,21 @@ class CustomCell1: BaseTableViewCell { let bgView = UIView() let titleLabel = UILabel() let nextIcon = UIImageView() + let valueIcon = UIImageView() + let valueLabel = UILabel() var type:CustomCellType = .area{ didSet{ titleLabel.text = type.title + valueIcon.isHidden = type != .avatar + + if type == .nickName || type == .gender || type == .area { + valueLabel.isHidden = false + } + else{ + valueLabel.isHidden = true + } + valueLabel.text = "123" } } @@ -68,7 +98,7 @@ class CustomCell1: BaseTableViewCell { } override func setupViews() { contentView.addSubview(bgView) - bgView.addSubviews([titleLabel,nextIcon]) + bgView.addSubviews([titleLabel,nextIcon,valueIcon,valueLabel]) backgroundColor = .rgb(0xF7F7F7) contentView.backgroundColor = .clear @@ -81,7 +111,11 @@ class CustomCell1: BaseTableViewCell { v.font = .bold(14) v.textAlignment = .left } - + valueIcon.do { v in + v.yc.setCornerRadius(24) + v.image = UIImage(named: "logo_1") + v.isHidden = true + } nextIcon.image = UIImage(named: "arrow_next") } @@ -102,5 +136,17 @@ class CustomCell1: BaseTableViewCell { m.right.equalToSuperview().inset(15) m.centerY.equalToSuperview() } + valueIcon.snp.makeConstraints { (m) in + m.size.equalTo(24) + m.right.equalToSuperview().inset(38) + m.centerY.equalToSuperview() + } + valueLabel.snp.makeConstraints { (m) in + m.centerY.equalToSuperview() + m.right.equalToSuperview().inset(38) + m.height.equalToSuperview() + } } + + } diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/CustomSectionHeader.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomSectionHeader.swift new file mode 100644 index 0000000..5257ccd --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/CustomSectionHeader.swift @@ -0,0 +1,28 @@ +// +// CustomSectionHeader.swift +// ShenYin +// +// Created by liangshi on 2025/7/31. +// + + +class CustomSectionHeader: BaseTableViewSetionHeader { + let titleLabel = UILabel() + override func setupViews() { + contentView.backgroundColor = .color(.bgColor) + contentView.addSubview(titleLabel) + titleLabel.do { (v) in + v.textColor = .black.withAlphaComponent(0.8) + v.font = .medium(16) + v.textAlignment = .left + } + } + + override func setupLayout() { + titleLabel.snp.makeConstraints { (m) in + m.top.equalToSuperview().inset(10) + m.bottom.equalToSuperview() + m.left.equalToSuperview().inset(30) + } + } +} diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/GenderVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/GenderVC.swift new file mode 100644 index 0000000..6f6b64a --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/GenderVC.swift @@ -0,0 +1,68 @@ +// +// GenderVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/25. +// + +import UIKit +class GenderVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + var list:[GenderType] = [.man,.female,] + var currentType = GenderType.man + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + self.navBar.title = "性别" + tableView.do { v in + v.backgroundColor = .rgb(0xF7F7F7) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.separatorStyle = .none + v.register(SelectCell.self, forCellReuseIdentifier: SelectCell.reuseID) + } + view.addSubviews([tableView]) + + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(kNavBtm) + } + } + @objc func btnAction(){ + + } +} + +extension GenderVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = SelectCell.cell(withTableView: tableView, indexPath: indexPath) + cell.genderType = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + cell.selectedIcon.isHidden = cell.genderType != currentType + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + currentType = data + tableView.reloadData() + } +} diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/NickNameVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/NickNameVC.swift new file mode 100644 index 0000000..74a2ed9 --- /dev/null +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/NickNameVC.swift @@ -0,0 +1,73 @@ +// +// NickNameVC.swift +// ShenYin +// +// Created by liangshi on 2025/8/25. +// + +import UIKit + +class NickNameVC:BaseVC{ + + let titleLabel = UILabel() + let phoneView = CustomInputView() + let loginBtn = CustomButton() + + override func viewDidLoad() { + super.viewDidLoad() + } + override func setupViews(){ + self.navBar.title = "修改安全邮箱" + view.backgroundColor = .color(.bgColor) + + titleLabel.do { v in + v.text = "请输入新的安全邮箱地址" + v.font = .medium(18) + v.textColor = .hexString("#121212") + } + phoneView.do { v in + v.textField.placeholder = "请输入邮箱地址" + } + loginBtn.set(title: "下一步",style: .theme1, target: self, action: #selector(loginAction)) + view.addSubviews([titleLabel,phoneView,loginBtn]) + + } + override func setupLayout(){ + + titleLabel.snp.makeConstraints { make in + make.top.equalToSuperview().offset(kNavBtm + 30) + make.left.right.equalToSuperview().inset(36) + } + phoneView.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(16) + make.left.right.equalToSuperview().inset(36) + } + + loginBtn.snp.makeConstraints { make in + make.top.equalTo(phoneView.snp.bottom).offset(40) + make.left.right.equalToSuperview().inset(51) + make.height.equalTo(55) + } + + } + +} + +extension NickNameVC{ + + @objc func loginAction(){ + guard let pwd1 = phoneView.textField.value else{ + YLprogressHUD.showAutoHiden("请输入邮箱地址") + return + } + // YLprogressHUD.showLoading() + // LoginVM.login(phone: phone, code: code) {[weak self] result in + // if result.isSuccess{ + // YLprogressHUD.showSuccess { + // self?.view.window?.rootViewController = BaseTC() + // } + // } + // YLprogressHUD.showAutoHiden(result.msg) + // } + } +} diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift index 58c7540..00f4f51 100644 --- a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoCell.swift @@ -1,210 +1,210 @@ +//// +//// UserInfoCell.swift +//// ShenYin +//// +//// Created by liangshi on 2025/7/30. +//// // -// UserInfoCell.swift -// ShenYin +//import UIKit // -// Created by liangshi on 2025/7/30. +//public enum UserInfoCellType: Int { +// case avatar +// case nickName +// case gender +// case area +// +// +// case account +// case phone +// case email +// case thirdLogin +// +// case deregister +// +// var title:String{ +// switch self { +// case .avatar: +// return "头像" +// case .nickName: +// return "昵称" +// case .gender: +// return "性别" +// case .area: +// return "国家与地区" +// +// case .account: +// return "账号密码" +// case .phone: +// return "安全手机" +// case .email: +// return "安全邮箱" +// case .thirdLogin: +// return "第三方账号" +// +// +// case .deregister: +// return "注销账号" +// } +// } +// +//} +// +// +//class UserInfoCell: BaseTableViewCell { +// let bgView = UIView() +// let icon = UIImageView() +// let titleLabel = UILabel() +// let valueLabel = UILabel() +// let nextIcon = UIImageView() +// +// var type:UserInfoCellType = .avatar{ +// didSet{ +// titleLabel.text = type.title +// valueLabel.text = "1111" +// } +// } +// +// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { +// super.init(style: style, reuseIdentifier: reuseIdentifier) +// } +// +// required init?(coder: NSCoder) { +// fatalError("init(coder:) has not been implemented") +// } +// override func setupViews() { +// contentView.addSubview(bgView) +// bgView.addSubviews([titleLabel,icon,valueLabel,nextIcon]) +// +// backgroundColor = .clear +// contentView.backgroundColor = .clear +// selectionStyle = .none +// bgView.do { v in +// v.backgroundColor = UIColor.black.withAlphaComponent(0.04) +// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor +// v.layer.borderWidth = 0.5 +// v.layer.cornerRadius = 12 +// v.layer.masksToBounds = true +// } +// titleLabel.do { (v) in +// v.textColor = .white +// v.font = .medium(16) +// v.textAlignment = .left +// } +// valueLabel.do { (v) in +// v.textColor = .black.withAlphaComponent(0.8) +// v.font = .medium(14) +// v.textAlignment = .right +// } +// nextIcon.image = UIImage(named: "arrow_next") +// } +// +// override func setupLayout() { +// bgView.snp.makeConstraints { (m) in +// m.left.right.equalToSuperview().inset(15) +// m.top.equalToSuperview().inset(6) +// m.bottom.equalToSuperview().inset(6) +// m.height.equalTo(52) +// } +// nextIcon.snp.makeConstraints { (m) in +// m.width.equalTo(20) +// m.height.equalTo(20) +// m.right.equalToSuperview().inset(15) +// m.centerY.equalToSuperview() +// } +// icon.snp.makeConstraints { (m) in +// m.width.equalTo(46) +// m.height.equalTo(46) +// m.right.equalToSuperview().inset(40) +// m.centerY.equalToSuperview() +// } +// titleLabel.snp.makeConstraints { (m) in +// m.centerY.equalTo(icon) +// m.left.equalToSuperview().inset(15) +// m.height.equalToSuperview() +// } +// valueLabel.snp.makeConstraints { (m) in +// m.centerY.equalTo(icon) +// m.right.equalToSuperview().inset(40) +// m.height.equalToSuperview() +// } +// +// } +//} +// +//class UserInfoImageCell: BaseTableViewCell { +// let bgView = UIView() +// let icon = UIImageView() +// let titleLabel = UILabel() +// let nextIcon = UIImageView() +// let imgPicker = ImagePickerManager() +// +// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { +// super.init(style: style, reuseIdentifier: reuseIdentifier) +// } +// +// required init?(coder: NSCoder) { +// fatalError("init(coder:) has not been implemented") +// } +// override func setupViews() { +// contentView.addSubview(bgView) +// bgView.addSubviews([titleLabel,icon,nextIcon]) +// +// backgroundColor = .clear +// contentView.backgroundColor = .clear +// selectionStyle = .none +// bgView.do { v in +// v.backgroundColor = UIColor.black.withAlphaComponent(0.04) +// v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor +// v.layer.borderWidth = 0.5 +// v.layer.cornerRadius = 12 +// v.layer.masksToBounds = true +// v.yc.addTap(target: self, action:#selector(pickImageAction )) +// } +// titleLabel.do { (v) in +// v.textColor = .white +// v.font = .medium(16) +// v.textAlignment = .left +// v.text = "头像" +// } +// icon.do { v in +// v.yc.setCornerRadius(23) +// v.backgroundColor = .black.withAlphaComponent(0.5) +// } +// nextIcon.image = UIImage(named: "arrow_next") +// } +// +// override func setupLayout() { +// bgView.snp.makeConstraints { (m) in +// m.left.right.equalToSuperview().inset(15) +// m.top.equalToSuperview().inset(6) +// m.bottom.equalToSuperview().inset(6) +// m.height.equalTo(72) +// } +// nextIcon.snp.makeConstraints { (m) in +// m.width.equalTo(20) +// m.height.equalTo(20) +// m.right.equalToSuperview().inset(15) +// m.centerY.equalToSuperview() +// } +// icon.snp.makeConstraints { (m) in +// m.width.equalTo(46) +// m.height.equalTo(46) +// m.right.equalToSuperview().inset(40) +// m.centerY.equalToSuperview() +// } +// titleLabel.snp.makeConstraints { (m) in +// m.centerY.equalTo(icon) +// m.left.equalToSuperview().inset(15) +// m.height.equalToSuperview() +// } +// +// } +// +// @objc func pickImageAction() -> Void { +// imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in +// guard let self = self else { return } +// icon.image = image +// } +// } +//} // - -import UIKit - -public enum UserInfoCellType: Int { - case avatar - case nickName - case gender - case area - - - case account - case phone - case email - case thirdLogin - - case deregister - - var title:String{ - switch self { - case .avatar: - return "头像" - case .nickName: - return "昵称" - case .gender: - return "性别" - case .area: - return "国家与地区" - - case .account: - return "账号密码" - case .phone: - return "安全手机" - case .email: - return "安全邮箱" - case .thirdLogin: - return "第三方账号" - - - case .deregister: - return "注销账号" - } - } - -} - - -class UserInfoCell: BaseTableViewCell { - let bgView = UIView() - let icon = UIImageView() - let titleLabel = UILabel() - let valueLabel = UILabel() - let nextIcon = UIImageView() - - var type:UserInfoCellType = .avatar{ - didSet{ - titleLabel.text = type.title - valueLabel.text = "1111" - } - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - override func setupViews() { - contentView.addSubview(bgView) - bgView.addSubviews([titleLabel,icon,valueLabel,nextIcon]) - - backgroundColor = .clear - contentView.backgroundColor = .clear - selectionStyle = .none - bgView.do { v in - v.backgroundColor = UIColor.black.withAlphaComponent(0.04) - v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor - v.layer.borderWidth = 0.5 - v.layer.cornerRadius = 12 - v.layer.masksToBounds = true - } - titleLabel.do { (v) in - v.textColor = .white - v.font = .medium(16) - v.textAlignment = .left - } - valueLabel.do { (v) in - v.textColor = .black.withAlphaComponent(0.8) - v.font = .medium(14) - v.textAlignment = .right - } - nextIcon.image = UIImage(named: "arrow_next") - } - - override func setupLayout() { - bgView.snp.makeConstraints { (m) in - m.left.right.equalToSuperview().inset(15) - m.top.equalToSuperview().inset(6) - m.bottom.equalToSuperview().inset(6) - m.height.equalTo(52) - } - nextIcon.snp.makeConstraints { (m) in - m.width.equalTo(20) - m.height.equalTo(20) - m.right.equalToSuperview().inset(15) - m.centerY.equalToSuperview() - } - icon.snp.makeConstraints { (m) in - m.width.equalTo(46) - m.height.equalTo(46) - m.right.equalToSuperview().inset(40) - m.centerY.equalToSuperview() - } - titleLabel.snp.makeConstraints { (m) in - m.centerY.equalTo(icon) - m.left.equalToSuperview().inset(15) - m.height.equalToSuperview() - } - valueLabel.snp.makeConstraints { (m) in - m.centerY.equalTo(icon) - m.right.equalToSuperview().inset(40) - m.height.equalToSuperview() - } - - } -} - -class UserInfoImageCell: BaseTableViewCell { - let bgView = UIView() - let icon = UIImageView() - let titleLabel = UILabel() - let nextIcon = UIImageView() - let imgPicker = ImagePickerManager() - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - override func setupViews() { - contentView.addSubview(bgView) - bgView.addSubviews([titleLabel,icon,nextIcon]) - - backgroundColor = .clear - contentView.backgroundColor = .clear - selectionStyle = .none - bgView.do { v in - v.backgroundColor = UIColor.black.withAlphaComponent(0.04) - v.layer.borderColor = UIColor.black.withAlphaComponent(0.1).cgColor - v.layer.borderWidth = 0.5 - v.layer.cornerRadius = 12 - v.layer.masksToBounds = true - v.yc.addTap(target: self, action:#selector(pickImageAction )) - } - titleLabel.do { (v) in - v.textColor = .white - v.font = .medium(16) - v.textAlignment = .left - v.text = "头像" - } - icon.do { v in - v.yc.setCornerRadius(23) - v.backgroundColor = .black.withAlphaComponent(0.5) - } - nextIcon.image = UIImage(named: "arrow_next") - } - - override func setupLayout() { - bgView.snp.makeConstraints { (m) in - m.left.right.equalToSuperview().inset(15) - m.top.equalToSuperview().inset(6) - m.bottom.equalToSuperview().inset(6) - m.height.equalTo(72) - } - nextIcon.snp.makeConstraints { (m) in - m.width.equalTo(20) - m.height.equalTo(20) - m.right.equalToSuperview().inset(15) - m.centerY.equalToSuperview() - } - icon.snp.makeConstraints { (m) in - m.width.equalTo(46) - m.height.equalTo(46) - m.right.equalToSuperview().inset(40) - m.centerY.equalToSuperview() - } - titleLabel.snp.makeConstraints { (m) in - m.centerY.equalTo(icon) - m.left.equalToSuperview().inset(15) - m.height.equalToSuperview() - } - - } - - @objc func pickImageAction() -> Void { - imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in - guard let self = self else { return } - icon.image = image - } - } -} - diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift index 498bb3c..1905a35 100644 --- a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift @@ -1,83 +1,85 @@ -//// -//// UserInfoVC.swift -//// ShenYin -//// -//// Created by liangshi on 2025/7/30. -//// // -//import UIKit -//class UserInfoVC: BaseVC{ -// let tableView = UITableView(frame: .zero, style: .plain) -// let list:[(title:String,list:[UserInfoCellType])] = [("编辑资料",[.avatar,.nickName,.gender]),("账号与安全",[.phone,.password,.deregister])] -// -// override func viewDidLoad() { -// super.viewDidLoad() -// // Do any additional setup after loading the view. -// } -// override func setupViews() { -// self.navBar.title = "用户信息" -// tableView.do { v in -// v.backgroundColor = .color(.bgColor) -// v.delegate = self -// v.dataSource = self -// v.estimatedRowHeight = 52 -// v.sectionHeaderHeight = 52 -// v.sectionFooterHeight = 0.1 -// v.register(UserInfoCell.self, forCellReuseIdentifier: UserInfoCell.reuseID) -// v.register(UserInfoImageCell.self, forCellReuseIdentifier: UserInfoImageCell.reuseID) -// -// v.register(UserInfoSectionHeader.self, forHeaderFooterViewReuseIdentifier: UserInfoSectionHeader.reuseID) -// v.register(BaseTableViewSetionHeader.self, forHeaderFooterViewReuseIdentifier: BaseTableViewSetionHeader.reuseID) -// } -// -// let footView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWid, height: 200)) -// let btn = CustomButton(frame: CGRect(x: 15, y: 80, width: kScreenWid - 30, height: 52)) -// btn.set(title: "退出登录", target: self, action: #selector(logoutAction)) -// footView.addSubview(btn) -// tableView.tableFooterView = footView -// -// view.addSubview(tableView) -// } -// override func setupLayout() { -// tableView.snp.makeConstraints { make in -// make.left.right.bottom.equalToSuperview() -// make.top.equalTo(kNavBtm) -// } -// } -//} +// UserInfoVC.swift +// ShenYin // -//extension UserInfoVC:UITableViewDelegate,UITableViewDataSource { -// func numberOfSections(in tableView: UITableView) -> Int { -// return list.count -// } -// func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { -// return list[section].list.count -// } -// func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { -// let view = UserInfoSectionHeader.header(withTableView: tableView) -// view.titleLabel.text = list[section].title -// return view -// } -// func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { -// let type = list[indexPath.section].list[indexPath.row] -// if type == .avatar { -// let cell = UserInfoImageCell.cell(withTableView: tableView, indexPath: indexPath) -// return cell -// } -// else{ -// let cell = UserInfoCell.cell(withTableView: tableView, indexPath: indexPath) -// cell.type = type -// return cell -// } -// } -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// let data = list[indexPath.section].list[indexPath.row] -// -// } -//} +// Created by liangshi on 2025/7/30. // -//extension UserInfoVC{ -// @objc func logoutAction(){ -// -// } -//} + +import UIKit +class UserInfoVC: BaseVC{ + let tableView = UITableView(frame: .zero, style: .plain) + let list:[CustomCellType] = [.avatar,.nickName,.gender,.area] + let imgPicker = ImagePickerManager() + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + override func setupViews() { + self.navBar.title = "个人资料" + tableView.do { v in + v.backgroundColor = .color(.bgColor) + v.delegate = self + v.dataSource = self + v.rowHeight = 52 + v.sectionHeaderHeight = 52 + v.separatorStyle = .none + v.register(CustomCell1.self, forCellReuseIdentifier: CustomCell1.reuseID) + } + view.addSubview(tableView) + } + override func setupLayout() { + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(kNavBtm) + } + } +} + + extension UserInfoVC:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return list.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = CustomCell1.cell(withTableView: tableView, indexPath: indexPath) + cell.type = list[indexPath.row] + let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52) + if indexPath.row == 0 { + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else if indexPath.row == list.count - 1{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 8, height: 8)) + } + else{ + cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0)) + } + return cell + } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let data = list[indexPath.row] + switch data { + case .avatar: + pickImageAction() + case .nickName: + App.shared.goToPage(NickNameVC()) + case .gender: + App.shared.goToPage(GenderVC()) + case .area: + App.shared.goToPage(AreaVC()) + break + default: + break + } + } + } + + +extension UserInfoVC{ + @objc func pickImageAction() -> Void { + imgPicker.showImagePicker(from: App.shared.topVC()) {[weak self] image in + guard let self = self else { return } +// icon.image = image + } + } +} diff --git a/ShenYin/ShenYin/UI/Mode/ModeControView.swift b/ShenYin/ShenYin/UI/Mode/ModeControView.swift index 8d6a0ee..22a4586 100644 --- a/ShenYin/ShenYin/UI/Mode/ModeControView.swift +++ b/ShenYin/ShenYin/UI/Mode/ModeControView.swift @@ -20,6 +20,16 @@ enum ModeContolType:Int{ return "自由通话" } } + var img:String{ + switch self { + case .anc: + return "mode_control_anc" + case .environment: + return "mode_control_environment" + case .free: + return "mode_control_call" + } + } } class ModeControView: BaseView { @@ -87,29 +97,35 @@ class ModeControView: BaseView { } class ItemView: BaseView { + let imgBg = UIView() let icon = UIImageView() let titleLabel = UILabel() var type = ModeContolType.anc{ didSet{ titleLabel.text = type.title + icon.image = UIImage(named: type.img) } } var isSelected:Bool = false{ didSet{ if isSelected { titleLabel.textColor = .color(.theme) + imgBg.backgroundColor = .color(.theme) } else{ titleLabel.textColor = .rgb(0x666666) + imgBg.backgroundColor = .rgb(0xF7F7F7) } } } override func setupViews() { - addSubviews([icon,titleLabel]) - icon.do { v in + addSubviews([imgBg,icon,titleLabel]) + + imgBg.do { v in v.backgroundColor = .rgb(0xF7F7F7) v.yc.setCornerRadius(8) + v.contentMode = .center } titleLabel.do { (v) in v.textColor = .rgb(0x666666) @@ -119,14 +135,19 @@ class ModeControView: BaseView { } override func setupLayout() { - icon.snp.makeConstraints { make in + imgBg.snp.makeConstraints { make in make.width.equalTo(80) make.height.equalTo(43) make.left.top.equalToSuperview() } + icon.snp.makeConstraints { make in + make.width.equalTo(38) + make.height.equalTo(19) + make.center.equalTo(imgBg) + } titleLabel.snp.makeConstraints { make in make.centerX.equalToSuperview() - make.top.equalTo(icon.snp.bottom).offset(10) + make.top.equalTo(imgBg.snp.bottom).offset(10) } } } diff --git a/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift b/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift index 3e1475d..1720e1d 100644 --- a/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift +++ b/ShenYin/ShenYin/UI/Mode/ModeEffectsView.swift @@ -11,7 +11,7 @@ enum ModeEffectsType:Int{ case classic case rock case jazz - case eq + case custom var title:String{ switch self { @@ -22,18 +22,34 @@ enum ModeEffectsType:Int{ case .classic: return "经典" case .rock: + return "摇滚" + case .jazz: return "爵士" + case .custom: + return "自定义" + } + } + var img:String{ + switch self { + case .normal: + return "mode_normal" + case .fashion: + return "mode_fashion" + case .classic: + return "mode_classic" + case .rock: + return "mode_rock" case .jazz: - return "摇滚" - case .eq: - return "EQ调音" + return "mode_jazz" + case .custom: + return "mode_custom" } } } class ModeEffectsView: BaseView { let titleLabel = UILabel() - var list:[ModeEffectsType] = [.normal,.fashion,.classic,.rock,.jazz,.eq] + var list:[ModeEffectsType] = [.normal,.fashion,.classic,.rock,.jazz,.custom] var itemViews = [ItemView]() override func setupViews() { @@ -45,7 +61,7 @@ class ModeEffectsView: BaseView { titleLabel.do { (v) in v.textColor = .rgb(0x121212) v.font = .bold(14) - v.text = "个性化音效" + v.text = "EQ调音" } let s = 11.0 @@ -90,13 +106,14 @@ class ModeEffectsView: BaseView { var type = ModeEffectsType.fashion{ didSet{ titleLabel.text = type.title + icon.image = UIImage(named:type.img) + } } override func setupViews() { addSubviews([icon,titleLabel]) icon.do { v in - v.backgroundColor = .black v.yc.setCornerRadius(8) } titleLabel.do { (v) in diff --git a/ShenYin/ShenYin/UI/Scan/BleScanVC.swift b/ShenYin/ShenYin/UI/Scan/BleScanVC.swift index 8bc8dda..02a23d1 100644 --- a/ShenYin/ShenYin/UI/Scan/BleScanVC.swift +++ b/ShenYin/ShenYin/UI/Scan/BleScanVC.swift @@ -8,7 +8,7 @@ import UIKit class BleScanVC: BaseVC{ let tableView = UITableView(frame: .zero, style: .plain) - let list:[MineCellType] = [.user,.device,.userAgreement,.privacyPolicy,.language,.update,.feeback,.about] + let list:[MineCellType] = [] override func viewDidLoad() { super.viewDidLoad() @@ -41,7 +41,7 @@ extension BleScanVC:UITableViewDelegate,UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = BleScanCell.cell(withTableView: tableView, indexPath: indexPath) - cell.type = list[indexPath.row] +// cell.type = list[indexPath.row] return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { @@ -83,11 +83,11 @@ class BleScanCell: BaseTableViewCell { let icon = UIImageView() let titleLabel = UILabel() - var type:MineCellType = .user{ - didSet{ - titleLabel.text = type.title - } - } +// var type:MineCellType = .user{ +// didSet{ +// titleLabel.text = type.title +// } +// } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/ShenYin/ShenYin/UI/Sleep/SleepListView.swift b/ShenYin/ShenYin/UI/Sleep/SleepListView.swift index f6c4342..93633b1 100644 --- a/ShenYin/ShenYin/UI/Sleep/SleepListView.swift +++ b/ShenYin/ShenYin/UI/Sleep/SleepListView.swift @@ -9,43 +9,11 @@ import UIKit import JXSegmentedView import MJRefresh -public enum SleepListType:Int { - case all = 0 - case school = 1 - case studycar = 2 - case exam = 3 - case system = 4 - - var name:String{ - switch self { - case .all: - return "全部" - case .studycar: - return "学车提醒" - case .school: - return "驾校通知" - case .system: - return "系统提醒" - case .exam: - return "考试通知" - } - } - var icon: UIImage? { - switch self { - case .all: return UIImage(named: "message_exam") - case .studycar: return UIImage(named: "message_oclock") - case .school: return UIImage(named: "message_notice") - case .system: return UIImage(named: "message_exam") - case .exam: return UIImage(named: "message_exam") - } - } -} - class SleepListView: BaseView,UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout { private var collectionView:UICollectionView! - init(selectType type:SleepListType){ + init(selectType type:Int){ super.init(frame: .zero) // setupLayout() // setupStyle() diff --git a/ShenYin/ShenYin/UI/Sleep/SleepVC.swift b/ShenYin/ShenYin/UI/Sleep/SleepVC.swift index 37aa493..542e816 100644 --- a/ShenYin/ShenYin/UI/Sleep/SleepVC.swift +++ b/ShenYin/ShenYin/UI/Sleep/SleepVC.swift @@ -81,7 +81,7 @@ import Foundation import JXSegmentedView class SleepVC: BaseVC { - private var titles = [SleepListType.all,SleepListType.school,SleepListType.studycar,SleepListType.exam] + private var titles = ["专注","旋律","自然","都市","冥想"] private let segmentedDataSource = JXSegmentedTitleDataSource() private let segmentedView = JXSegmentedView() private lazy var listContainerView: JXSegmentedListContainerView! = { @@ -123,7 +123,8 @@ class SleepVC: BaseVC { segmentedDataSource.isTitleStrokeWidthEnabled = true segmentedDataSource.isItemSpacingAverageEnabled = true segmentedDataSource.isTitleColorGradientEnabled = true - segmentedDataSource.titles = titles.map{"\($0.name)"} +// segmentedDataSource.titles = titles.map{"\($0.name)"} + segmentedDataSource.titles = titles segmentedView.backgroundColor = .clear //配置指示器 @@ -155,7 +156,9 @@ extension SleepVC: JXSegmentedListContainerViewDataSource { } func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { - let dele = SleepListView(selectType: titles[index]) +// let dele = SleepListView(selectType: titles[index]) + let dele = SleepListView(selectType: index) + // dele.popToRoot = { [unowned self] in // navigationController?.popToRootViewController(animated: true) // } diff --git a/ShenYin/ShenYin/UI/common/BrokenLineView.swift b/ShenYin/ShenYin/UI/common/BrokenLineView.swift new file mode 100644 index 0000000..e96c8f2 --- /dev/null +++ b/ShenYin/ShenYin/UI/common/BrokenLineView.swift @@ -0,0 +1,27 @@ +// +// Untitled.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +class BrokenLineView: UIView { + override func draw(_ rect: CGRect) { + super.draw(rect) + let path = UIBezierPath() + let lineWidth: CGFloat = 0.5 + let dashLength: CGFloat = 5.0 + let spaceLength: CGFloat = 3.0 + let startPoint = CGPoint(x: 0, y: bounds.midY) + let endPoint = CGPoint(x: bounds.width, y: bounds.midY) + path.move(to: startPoint) + path.addLine(to: endPoint) + let shapeLayer = CAShapeLayer() + shapeLayer.path = path.cgPath + shapeLayer.strokeColor = UIColor.hexString("#93C6EC").cgColor + shapeLayer.fillColor = UIColor.clear.cgColor + shapeLayer.lineWidth = lineWidth + shapeLayer.lineDashPattern = [NSNumber(value: dashLength), NSNumber(value: spaceLength)] + layer.addSublayer(shapeLayer) + } +} diff --git a/ShenYin/ShenYin/UI/common/CustomButton.swift b/ShenYin/ShenYin/UI/common/CustomButton.swift index 320a095..2a56e37 100644 --- a/ShenYin/ShenYin/UI/common/CustomButton.swift +++ b/ShenYin/ShenYin/UI/common/CustomButton.swift @@ -10,6 +10,7 @@ import UIKit enum CustomButtonStyle:Int{ case theme1 case theme2 + case theme3 case custom } @@ -25,6 +26,11 @@ class CustomButton: UIButton { setTitleColor(.white, for: .normal) backgroundColor = UIColor.color(.theme) } + if style == .theme3 { + setTitleColor(.hexString("#121212"), for: .normal) + backgroundColor = UIColor.white + titleLabel?.font = .regular(14) + } else{ setTitleColor(.color(.theme), for: .normal) backgroundColor = .clear diff --git a/ShenYin/ShenYin/UI/common/SendToolBar.swift b/ShenYin/ShenYin/UI/common/SendToolBar.swift new file mode 100644 index 0000000..7fff794 --- /dev/null +++ b/ShenYin/ShenYin/UI/common/SendToolBar.swift @@ -0,0 +1,69 @@ +// +// SendToolBar.swift +// ShenYin +// +// Created by liangshi on 2025/8/26. +// + +@objc protocol SendToolBarDelegate { + func sendToolBar(_ toolBar:SendToolBar,_ text:String) +} + +class SendToolBar:UIView{ + let bgView = UIView() + let textField = UITextField() + let sendBtn = UIButton() + + weak var delegate:SendToolBarDelegate? + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + + bgView.do { v in + v.yc.setCornerRadius(12) + v.backgroundColor = .white + } + + sendBtn.setImage(UIImage(named: "send_icon"), for: .normal) + sendBtn.addTarget(self, action: #selector(sendAction), for: .touchUpInside) + + textField.do { v in + v.backgroundColor = .clear + v.placeholder = "请输入文字" + } + + addSubview(bgView) + bgView.addSubview(sendBtn) + bgView.addSubview(textField) + + bgView.snp.makeConstraints { make in + make.left.right.equalToSuperview().inset(18) + make.top.bottom.equalToSuperview() + } + sendBtn.snp.makeConstraints { make in + make.width.equalTo(52) + make.height.equalTo(52) + make.centerY.equalToSuperview() + make.right.equalToSuperview().inset(10) + } + textField.snp.makeConstraints { make in + make.left.equalToSuperview().inset(10) + make.top.bottom.equalToSuperview() + make.right.equalTo(sendBtn.snp.left).offset(-10) + } + } + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + @objc func sendAction(){ + if let text = textField.text { + self.delegate?.sendToolBar(self,text) + } + } + +} +