From d362ca565a7a534a67881f6199e8150c8543b3ed Mon Sep 17 00:00:00 2001 From: linshujie Date: Fri, 21 Aug 2026 13:44:48 +0800 Subject: [PATCH] =?UTF-8?q?-=20UI=E6=94=B9=E7=89=88=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QuickLocation.xcodeproj/project.pbxproj | 182 +++ .../组 47987@2x.png | Bin 86554 -> 19102 bytes .../组 47987@3x.png | Bin 193554 -> 35237 bytes .../IM/edit.imageset/Contents.json | 12 + .../IM/edit.imageset/edit@2x.png | Bin 0 -> 1097 bytes .../IM/edit.imageset/edit@3x.png | Bin 0 -> 2016 bytes .../Mine/circle_days.imageset/Contents.json | 22 + .../circle_days.imageset/circle_days@2x.png | Bin 0 -> 605 bytes .../circle_days.imageset/circle_days@3x.png | Bin 0 -> 1117 bytes .../header_bg.imageset/image@2x.png | Bin 23786 -> 15206 bytes .../header_bg.imageset/image@3x.png | Bin 43270 -> 28685 bytes QuickLocation/Common/Constant.swift | 2 +- QuickLocation/Manager/MQTT/MQTTService.swift | 2 +- QuickLocation/Manager/URL/URLManager.swift | 2 +- .../Manager/Unlock/UnlockCountManager.swift | 54 +- .../CreateGroup/CreateGroupViewModel.swift | 2 +- .../Section/Group/GroupChat/GroupChatVC.swift | 320 +++-- .../Group/GroupChat/GroupChatView.swift | 126 +- .../Group/GroupChat/VoiceRecordView.swift | 1090 +++++++++++++---- .../Section/Home/AddEmojiPopView.swift | 399 ++++++ .../Section/Home/AddMessagePopView.swift | 349 ++++++ .../Section/Home/GroupListPopView.swift | 41 +- .../Section/Home/GroupMemberView2.swift | 197 ++- .../Section/Home/HomeViewController.swift | 562 ++++++--- .../Section/Home/InteractionEmojiCell.swift | 7 + .../Section/Home/MemberPhoneReportView.swift | 4 +- .../SearchLocationHeaderView.swift | 29 +- .../SearchLocationResultVC.swift | 37 +- .../SearchLocationResultView.swift | 87 +- .../SearchLocation/SearchLocationView.swift | 4 +- .../Section/Map/MemberAnnotationView.swift | 27 +- .../Section/Mine/MinePhotoWallView.swift | 34 +- .../Mine/MoodStatus/MoodStatusView.swift | 17 +- .../PigeonMessage/PigeonMessageView.swift | 11 +- .../PromotionalActivitiesView.swift | 20 +- .../LocationPicker/LocationPickerVC.swift | 2 +- .../UIKit/CollectionHFlowLayout.swift | 14 +- 37 files changed, 2973 insertions(+), 682 deletions(-) create mode 100644 QuickLocation/Assets.xcassets/IM/edit.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/IM/edit.imageset/edit@2x.png create mode 100644 QuickLocation/Assets.xcassets/IM/edit.imageset/edit@3x.png create mode 100644 QuickLocation/Assets.xcassets/Mine/circle_days.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/Mine/circle_days.imageset/circle_days@2x.png create mode 100644 QuickLocation/Assets.xcassets/Mine/circle_days.imageset/circle_days@3x.png create mode 100644 QuickLocation/Section/Home/AddEmojiPopView.swift create mode 100644 QuickLocation/Section/Home/AddMessagePopView.swift diff --git a/QuickLocation.xcodeproj/project.pbxproj b/QuickLocation.xcodeproj/project.pbxproj index 56b4f1c5..89aa7cca 100644 --- a/QuickLocation.xcodeproj/project.pbxproj +++ b/QuickLocation.xcodeproj/project.pbxproj @@ -344,6 +344,8 @@ 55B221230000000100784823 /* MoodStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B221220000000100784822 /* MoodStatusView.swift */; }; 55B221250000000100784825 /* MoodStatusViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B221240000000100784824 /* MoodStatusViewModel.swift */; }; 55B221270000000100784827 /* MoodStatusCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B221260000000100784826 /* MoodStatusCatalog.swift */; }; + 55B222010000000100784831 /* AddEmojiPopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B222000000000100784830 /* AddEmojiPopView.swift */; }; + 55B222030000000100784833 /* AddMessagePopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B222020000000100784832 /* AddMessagePopView.swift */; }; 55BF752D2FFE53F70055DA57 /* LocationPermissionPopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */; }; 55BF75352FFF91690055DA57 /* InteractionEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */; }; 55C219C13024C00100784731 /* SearchLocationHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */; }; @@ -765,6 +767,8 @@ 55B221220000000100784822 /* MoodStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodStatusView.swift; sourceTree = ""; }; 55B221240000000100784824 /* MoodStatusViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodStatusViewModel.swift; sourceTree = ""; }; 55B221260000000100784826 /* MoodStatusCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoodStatusCatalog.swift; sourceTree = ""; }; + 55B222000000000100784830 /* AddEmojiPopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddEmojiPopView.swift; sourceTree = ""; }; + 55B222020000000100784832 /* AddMessagePopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMessagePopView.swift; sourceTree = ""; }; 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationPermissionPopView.swift; sourceTree = ""; }; 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionEmojiCell.swift; sourceTree = ""; }; 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationHeaderView.swift; sourceTree = ""; }; @@ -1247,6 +1251,8 @@ 305A76272FCA8C7000227D26 /* GroupMemberView.swift */, 55B2179030217D6600784774 /* HomeView2.swift */, 55B2179230218CE100784774 /* GroupMemberView2.swift */, + 55B222000000000100784830 /* AddEmojiPopView.swift */, + 55B222020000000100784832 /* AddMessagePopView.swift */, 55B219A1302A000100784750 /* UnlockRequestPopView.swift */, 55B219B1302A000100784760 /* ReceiveMessagePopView.swift */, 55B219B3302A000100784762 /* ReceiveMessageReportPopView.swift */, @@ -2448,6 +2454,8 @@ 55B220053031000100784805 /* FeedbackSuccessView.swift in Sources */, 55B221210000000100784821 /* MoodStatusVC.swift in Sources */, 55B221230000000100784823 /* MoodStatusView.swift in Sources */, + 55B222010000000100784831 /* AddEmojiPopView.swift in Sources */, + 55B222030000000100784833 /* AddMessagePopView.swift in Sources */, 55B221250000000100784825 /* MoodStatusViewModel.swift in Sources */, 55B221270000000100784827 /* MoodStatusCatalog.swift in Sources */, 30A87A622FEE724D0095E7C6 /* CreateBubbleTiemView.swift in Sources */, @@ -2777,6 +2785,7 @@ INFOPLIST_KEY_NSMicrophoneUsageDescription = "我们需要使用您的麦克风,以便您使用麦克风发送语音消息。"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "为了保存图片到您的相册,请允许添加照片,谢谢。"; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "我们需要访问您的相册,以便您可以发送照片。"; + INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "我们需要语音识别权限,以便将语音转换成文字。"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UIBackgroundModes = location; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; @@ -2831,6 +2840,7 @@ INFOPLIST_KEY_NSMicrophoneUsageDescription = "我们需要使用您的麦克风,以便您使用麦克风发送语音消息。"; INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "为了保存图片到您的相册,请允许添加照片,谢谢。"; INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "我们需要访问您的相册,以便您可以发送照片。"; + INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "我们需要语音识别权限,以便将语音转换成文字。"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UIBackgroundModes = location; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; @@ -2982,6 +2992,174 @@ }; name = Release; }; + 559B7BA23037017D0031C511 /* AdHoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = "$(inherited)"; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.6; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = AdHoc; + }; + 559B7BA33037017D0031C511 /* AdHoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DA16D49AA46D4F6838340B55 /* Pods-QuickLocation.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = QuickLocation/QuickLocation.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = LRDLWZ2Y83; + ENABLE_USER_SCRIPT_SANDBOXING = "$(inherited)"; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = QuickLocation/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "极速定位"; + INFOPLIST_KEY_NSCameraUsageDescription = "您的相机将被用于扫描二维码、拍摄照片和视频。"; + INFOPLIST_KEY_NSContactsUsageDescription = "需要访问通讯录以快速查找和邀请好友加入您的圈子"; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "极速定位需要在后台持续获取您的位置,以便在您锁屏或使用其他App时,家人仍可看到您的实时位置以保障安全"; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "需要获取您的位置信息以在地图上显示您的位置"; + INFOPLIST_KEY_NSMicrophoneUsageDescription = "我们需要使用您的麦克风,以便您使用麦克风发送语音消息。"; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "为了保存图片到您的相册,请允许添加照片,谢谢。"; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "我们需要访问您的相册,以便您可以发送照片。"; + INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "我们需要语音识别权限,以便将语音转换成文字。"; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UIBackgroundModes = location; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = jsdw_adhoc; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = "QuickLocation/QuickLocation-Bridging-Header.h"; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = AdHoc; + }; + 559B7BA43037017D0031C511 /* AdHoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = DeviceActivityMonitorExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.DeviceActivityMonitor; + PRODUCT_NAME = DeviceActivityMonitorExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VALIDATE_PRODUCT = YES; + }; + name = AdHoc; + }; + 559B7BA53037017D0031C511 /* AdHoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_ENTITLEMENTS = ShieldConfigurationExtension/ShieldConfigurationExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = LRDLWZ2Y83; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = ShieldConfigurationExtension/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = cn.zuomeng.jisuloca.ShieldConfiguration; + PRODUCT_NAME = ShieldConfigurationExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_DEFAULT_ACTOR_ISOLATION = nonisolated; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VALIDATE_PRODUCT = YES; + }; + name = AdHoc; + }; A0AD067561B0A604B5DF5049 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3044,6 +3222,7 @@ isa = XCConfigurationList; buildConfigurations = ( 15B6023456261CCD0E3A673E /* Release */, + 559B7BA43037017D0031C511 /* AdHoc */, 3A68FBB9A55555685B490D5C /* Debug */, ); defaultConfigurationIsVisible = 0; @@ -3054,6 +3233,7 @@ buildConfigurations = ( 3E43591E2FC48D2B003470A5 /* Debug */, 3E43591F2FC48D2B003470A5 /* Release */, + 559B7BA23037017D0031C511 /* AdHoc */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3063,6 +3243,7 @@ buildConfigurations = ( 3E43591C2FC48D2B003470A5 /* Debug */, 3E43591D2FC48D2B003470A5 /* Release */, + 559B7BA33037017D0031C511 /* AdHoc */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3071,6 +3252,7 @@ isa = XCConfigurationList; buildConfigurations = ( B66BC4F86D908B8200A8DC8E /* Release */, + 559B7BA53037017D0031C511 /* AdHoc */, A0AD067561B0A604B5DF5049 /* Debug */, ); defaultConfigurationIsVisible = 0; diff --git a/QuickLocation/Assets.xcassets/Home/group_list_header.imageset/组 47987@2x.png b/QuickLocation/Assets.xcassets/Home/group_list_header.imageset/组 47987@2x.png index 451ae03104e89f4d9f0c10b5ca18ca16ea87fd25..f902cd4c98708a357e873468b378639cc07404d7 100644 GIT binary patch literal 19102 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%0AtUncTyvUl-1=y_rrgaB!eRyb23r243AZG2 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

OotfslsoC@?*!!@jnDCh$Sd> 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 literal 193554 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�ASk-2re;ni%{N5fcd!PT>(q0 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

RDg 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≷z{%|x;s1hc3OE<1y?Hj+(Esj2F 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ξ_8W!Z?df)pZ5 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 C$h1=c diff --git a/QuickLocation/Assets.xcassets/IM/edit.imageset/Contents.json b/QuickLocation/Assets.xcassets/IM/edit.imageset/Contents.json new file mode 100644 index 00000000..eff7bcc2 --- /dev/null +++ b/QuickLocation/Assets.xcassets/IM/edit.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "edit@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "edit@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 }, + "properties" : { + "template-rendering-intent" : "original" + } +} + diff --git a/QuickLocation/Assets.xcassets/IM/edit.imageset/edit@2x.png b/QuickLocation/Assets.xcassets/IM/edit.imageset/edit@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8380e992fadeb3c4a7e420f62bde4fd0f13430 GIT binary patch literal 1097 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/Mine/circle_days.imageset/circle_days@3x.png b/QuickLocation/Assets.xcassets/Mine/circle_days.imageset/circle_days@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa7dc9a3b2188418bdd63f59bd2c1b1b5dc9d49 GIT binary patch literal 1117 zcmZ8hdox1y4tT!;{f z24r#|S8d=X$*Wee4eaeeVi2UJrmk;@GC`Y}o1d_<`!*~rEIRIbPC;>Lc}-(;YuCW= zIBoL%D!eV+5sM{K>48jcyW+`*AjAY7=Xo)1fjb-T&+#zUTna#Ydwd@dGHYXsLy=z0 zAG;71oa}r6qHeWfk2cMq%L_;SBpLD16Ko@!vJ`!2@hX4GL28|r+@fV%dHKn#EsegP z)DY6;>^>Q)M6~xJp$6b+) zk^lL0+j;rV6s+M|a@Pl5g*Y#NpF2-+46gUG!sO(RKOng1Me;JbEYb{1vJ3qtjO@-; zV@_EYPO}ntK5hSe^n5JzrF`MJSns$mkIRZ1_)ayJ=E&Ju*gChOQDxA)fFb14?z;qL z)~wc=*89_`)0GzS+KJX*vj5=eE#FUjFLWeak(ZLA@w9I<>^V@@DXkp^T6#nlSe2r)MlfmTOH=cCfw*F!eA>}9@8=n}X+ zrMp_wZ)n7LX3{=l@p2;XYNz~G3xeLko&NGB00x$h5N^KHtqYFaXJ~e3il(qFgMqWY;a#LTup*Z;4irvqIPE74~ zvt}k!Q_r&^QrVnmSVwt8-Vc$TxZ@Ge4I?qFcZ_1auQRy`r=K1-=x0 Ay#N3J literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/SearchLocation/header_bg.imageset/image@2x.png b/QuickLocation/Assets.xcassets/SearchLocation/header_bg.imageset/image@2x.png index a16f2ef8b3aa2997963d4356d2fda9076afddb4e..f3f7ed16d41871674f8c95e8ee0fe4e7075a242c 100644 GIT binary patch literal 15206 zcma(&i93|v_cIK}K4T}D89O0smN1K5${LcghNzT8$uh=Z?4y(=%aA>LsAP>owy`8+ z$v*ad4fFH){sq7HInRCWd(U#uJ@?%Ap7XxNQ(EV6@EAcIx#~S> z^k~xXzZMTU?{m}xIck9H|A>)~M-06ujn4_FlUh`QEO){FqbWmbxGYD`&QTeXijzIB zQ~hMQ3J$0*WzWTO73`na|D&nWrdA=(%m4bS(k}XSk9vIYpG+$CTnKei`&=wFT#h=S zMIG0YcaAz6(>xp1r2f%58__%)zIyii>e-;i&OhqeAFb0f>fQ-;aQ*8$|1FDo!YTR9o(c+ z@5}w(rcz@8-&d*UDm5%oOXjG}%hdcC>KR#`yh*K`r+%SONq?!I7OB+>)Nd=)v`Omq zHtNIZoyJ)UydIxw2X6))(r@4t2jbaN724+KZZ?Nceqr)~i<7h4-qj zy8M+I|2=tZo7%c`@?|4`{9xd0HRJVyzg!*lY|Ma~tF(W*Q!{&fwq8VSQlq9>oJ~3; zerWcHEBfC5Xll@wdN@|y(bqaOnfgK}BwyMRotxvr{XS2`E&j&x#bGDRj7Vz%$w}n^x zcu{Y9=l0jMNquU$-|3Lv!;Yg@T~*u3BIuf5eP1Hd$x|aGE?a~8&CS`hle!&~80wf7 zbwu;@m;U~g_Q38B>X3$oI01U@mx{g?H!J~D5O`Jy-G(7uQkkF92)O$E?g?a6vE*0i>N zq?I|?AC?NGx%nx=TJU&pGi2CQGbaPvJH89Fc-qOam~6&$qH=>XX24RbIx8O@$3B{o z@#a>cK*TQzZn1{{O*NdoK?Y14B4wxE3;Z-!;qKXEoG*0q%t`G_3mb zVgccgN8|B`cTR$ed^$1rs1sjX*>%{a){q~S?;YHQSs5btk*ocT`)miYrxl-4v1@mj z%^6(TN0g?CkJPK*xjR?zTF~R!_ZAn(15sguJGiyooKfWXd;5K5Y1h6{h?Sud3dS~u zha7U^#zVs;0lU*X=!6>-tX5oL3ud9mb*1D5|G$pF7NrKC`eOpCT_FA10-sKJHO($` zr^Qa0|H=h^LFTQ>*E$35VNl9@e~F+r@s>w+OfQ36p55DdhBF}=*H4b!`eXQ~f0?%a z;}Az9Rz;)cM(cM7lU{&}yOJKx@Ih&#k+wPP^uql!n%2^*B55^%@a+-CIK%SLt27q3 zuR1~e{Wi2iBVU&x-@qKr>na>_wOc+-QV|uAKZ?pY%EIFj)^8=9s_=j zrWl2L%GILHmo3jQ25ri??G_-2`-3^V_TZxIQ^V!LK4)QyAs-4=K*#iqMY~JFh9}q5 z->mp9YjrgIYP;Gl0*flP?dkAcIhoD`s_Q7Q_GxG-2mrGLz57?HrQdPnYFwP(Q z_66K@$AxM`+t^7@T4xo1*mPKaR~#OAZEs%McWddR()TyoP*E^RV5fEM>Ou90@-^gj zd(*-jS(&r*#_!||A*k!B&vn;QrG##E^%QSU7OWjUzHzjAOIoU%17-GC!0lIsD<){= zWOOV0Lr+gttR(hZ4*`2`(!JiO5czpZP1{Q9mnd%auNO*19MYk3U!XxCQ9GGiAk(rv zvi3^y?HAnL4;g6)EyOK_YcJ7blNN>SkJk?$i+mn0E@OGXuy8GsQBK;gd$drTQ+f|r zJj1jwFI-twTh^AN=^X`(^liDovXt|FYcU6t^|SIb?nMz1DlNm|*U`dwFBY|gw+O

Umf= zZsDOhS`NzsmCUdxWjEU`a^!;OlE-DG!R1dtO)Uf=@QHbL!t>aX_gHz{!UOZrrZx%# zh)n$|=mrLzNe(ioaoWf~0rm9f;5G#e$QNQi-`Y@b`p_TQ6m{7`8j6PAwt_q~*JG^N zeeH4kXO>U+PxE=188Kl=iv4?CV4KVi%~TRu=x?|!+<4uU_>NoHT> z$9`-OM~|$tt9*~VSQOqULJ{83%UD4hK9u+_*~`^Wu1Ir@f0(aX>>Obp!HK#d>k5$F zi_?vw-sHZZc?$5zVx+cJSvqeCsn^!n$B&XiJ zZ!g8IM@13Ksy<)^hgpMe3pZPI~y zN2}4~!|R%z^BZbd6E&O>SA~}V^x-HI{e?;jFh;vlO23HKXz<1J=JG%Ov5cf=ikHYh zJ*57LNmj3_qW>fHgd2rg0@qb<_wxP5173}`*m&r2smDC8k$9o-o7DE+eRK~^VmuZH z5xdz|FU1iqM5)kkW^`v={c*zO`DL<&IH-)kt|qZ@uXcOKW#8fS?ekvvVD@3qquDjU zv$L+-l-^E^Bd`G4zjLc?WfXK&jo#F~?hTMVy*cazSR&KhymvlDHs8>p=#s%*5E01R znM+e>@_uII6K+YFk?9IpC=y(4PrD9er8SHcs$1cwxi1UZMFW{?>{;MY-lu#b7`nk7 zL1ccn+UHZokhj#2e1694p~jgi5tEF%9ec8~`DP6_H&pqQ{(`+9LbO2AH*DnB=ma8& zT{wm558tlrK?*N@A}|DVycw?qm`FMv+?KzXMhRUNpj}Urn(y=ep_c_Ee@HGD5BW9! z+EJuYPg@_)l)omb5sT4KL0!Ia zyiG^LwcJwqHUrWYze$)8d5CXI`YjN|bhM&$;^o=HgboDZq;jgB+8*pyUpk419ZaDo z+h$K`?~lLjOp*P=!2t_(j4mvUTfeI=5}kFeVW0HR(c;h7ALK*D)RdL4w?|%0OisRG zBpTXboJGuVx|n+lwW`nB}n_ zzn>)WMl`OXE_&)iz8MQd^b1_`aDRPVf1OxH_M3l@d8R)@O9UfvhfZzzj!lvjS~FpG z;oqd;i#l2fgV%(l*}q?lf#Y?L<)wGgbNp5l(fzRepHKn}EwHjv%MnF?Gu~$3sSzP86lHM)P2NjyM7r z%DnnX#vR9Gq+D2WAvXqf8-8&MEPOmdr;*4A^B0_TKF3Hpw57?IA#l584wbT6FYDXZ z_Y|3y%-eiupohAiDrG5*x(*JJXSusedy}!rwnG1I)}g=LFyRg55+(j^Uo31?&u+^S za#7Sz52N)ns6u~XUD9V3*wjeGRI!dJLhgV9*!KSF6WxGG2NL}S zgQ*FYY8f{qT!{256q~W?tuNpKY3$Ear@F&gmdS6VupG2mg(pGU&EhJulD^ki5h6DkC}i^ZO+==FLFwR}!}TogGv7s%EOXrl#P93b=m1>^W~=j1MTGG866M3ml42Q$f6k?E z`eCnx^^v$Uog-ALBdGr+b(tyT_;g8 z6UT-3$z&EYfIjgGP3gWnB$ml`@*DgJTJ1vlu0$jpgK6kCPrnGTMZW+3MtpUVHK*xf z962+8I3C`W#$eq!#Q?w1hzx6SRCE<(%Qm>%lqKuD`{{i$dCJIMz9CaH{^}OuM|xe$ z1>GLe%#FTaz7@_;r@4y9KlRNxllvcJtQs{ zB_u0YmIe+vzmnuSCIK3eHm!nD`n@P4ke0mf44b5@g(q zdaf(h(J?()S$Z$jh-5jC%qJ!OG9B*c5Hb8JP|Ga+;7NPPuy^^{3iEQ*Spk%-OET|rED)p=5rg`i71&x0C`NJ|j z)2ugVDf_D@CwxV_l!284r6AiK{q3tHh*hCkN6GaSk@W=ryP4;gfnb4DrKFX4D@&51=&+%vdPiPBulhwkyxqH*=ZL4P9eb+8t zk3Zz-e--@u(bxbyZAW@g3@Ws3pkvM0yA@Twftm8uf$hHS4gq(yU37_>JRf9dZ z6XQeXCVIR$(R}oqHFn5CZjcK*6T)aIPZp;`7*M`m3e$t4A({&_{TL{e7J~vC8UAuX zU>=Z`z9jFO-M2u5Vs6~s?R#?N>%zpu=xFLh>S);^mo5|Ldsg4S-r(x7`9IOGuW(${ zy|46^Mxg#X5Ooso_tcH{^waI?F|Vj4b76gg3@LBJyL~IK&^;(;7CDi_-CLo21H_m} zS3N|FY80%Y3e8d%f43&xVKSc8B@>_GmJANHJGNR1{gXb@9GfOM4M-Du7UNZ>q0YQ! zexHll;~>w}mqU=pDgJ<0+p0&uAGt{u!`ZJwe&Id?*B-_1@Ps^9Sl(-5Z(6OjdAtoU zocULzY3ggAYC0}0%EO!UWX8q}Eu#hbg&)D{tG3X;izh}`q_?cE_wDWN-4wh4FS@Mu zv2RP2m)VVj*^W#2RJ5;!fuk1gLpR|4jlG4fUq7h9C%ADS><9pFO$bC;#!@$r+B(Vva>R59)Y*X0-vnws&{<}@ zbz%#gXSi@dBb)V=c{ywFH-K`{i+h!hrd*k!ZvqthU-xZG;k7CCJ_k{Q zO#-BCjb|~(%XmTw%^&+qj)CgEYAjMbZS<~8V}c?y`d_PQa4X~ifWqCi)XQp5Ew7$} z1>5-cT&6$fyWj6&;iJJw(^Ud*UF|T}*ZNI^W8@Jgfq;@65|y2QEN1MG;+bOU`VEtw zGW?bN7Pl}bSnGuJfbIuul5||!q}z3=l+u1qnwQEG?3?_FQrwA|&Ur%>0v31wM;LIS zY^f$2E6B+L=sX(Z_qSy32Z>e~d~i-#j!l_I^vjCgRA02OC9{~^_O=o zUw;&qP^inYhQ7#6`b8_2YYREj?|a24$&S72gobTKis&%GmvG`LecgXf(#5*m{p4m- z4^>uVVt$%BWH-o;mkRd{{ZyAk{Bns6EO-$I!qc6ux@g1FqvOG-xnx-#vR>S6$RSXB zi{+{moa>EBM-Tg3b4&@>ZS~jZ)}2dhG6Ci?D>~mBa-c)i!E-dko{_nBUR3G5?xRtN zb0%xY@>HGlOOC(wpOUS*)0X&ZZwiwN-_((p05;gc1cD#L(u=|$v*UCbC&($OpDX2? zP?M2Osojs=Nb_c@ zt>&zR8>5~xtMF+oU=7i@`ex!siafkFOGN;l-ohZP^ZB(CuWk|%oXsd})?1*c{ThE= za@>D@)W(JddA;qOupUtvb6*vyZ$1DB@`L)i0%*`}d1mIAP=}S&8*YITkC-&}^u|t? z?JsT>j9HAL&uPt2Tqrr*@rQT>JubJWQpt`up56sA6ugWvhs*(7&zi~*NZh7$hNWmn zC&LNke7dz~S@sW*K>-J29bZlV{rg871ILl?NOkT0LIuyHI%b2J4zv`Uu}9KywOFGj zWaqvP52SY^;K1Oc#icsT0@g6?}nnjmp(OL&M=Xf771fSEaNXYbs@-?$C=82p&fDQ2aElKf1%kk%)v^exKN zYx`;cW%yHEDxH-94bDdq1l^+z>^=_NPJAr@@kt`GqdC#^wp@`ZSDv9=ac>|@m0=^n zjsZXz$Q)(3_D7tzH~mZS(fF56sSRN5(}5*Hn7@X^)k$2ECd~J3K)SoBJU~=VvcsI^ zgt+%Unq3pVcvLw0ut@6p(vo1#lX&)8#a&Sq?$i`UdPC&c0}&Nm;INoLNIEUv35YWK$0-iJ~w!83#gHh4m8wc5BLybk~}8G(4oTM^bk!< zb;Q;tn%U9dD5j78Ht*)F05wcA_(fKK0n8p7m^dST%+K4x%aUU4MsuMYXiJy+#K zG{KK#BTM;^K!X#sc=XfDQ|VbM1El``UA>&5xgh54fF0paJ$!fag_?K9yLCbG>mPwW|+#g7@VzC;a}uzdWQPq%Z2Xl)Q@g{`xG1Vkzv^Z z)26144OLYo6w)i_S(wFA-%sShw^ZI67vr)cmrVfN1l9?YI@1I2NprB8HYxI7ugND1 zgl;hi|WsM(#40%G`tg@iPYH}HxHsDzJ6u|Sc6`&V`Q}0U>i7aa0`CE z=b1Be2pVp6d;9T&Me_%hys9B zN;pdSlCwh?kUtkL#k0Sc_;w@21RBk!6Uv+&Uj&x6Ua;P#uTdridb5+-jR9IuyQ75$ zfOrAxE$b5Pq_%`IswdmeWF}Z>hM#z%Fc5LKoeyoyZkNPZEQmrD|0#tjF`D%(1zbcG zI&nYvPTD;o1%^+zm*0sMY91_u!e>~_@s5}@IR1l(Os(_6n+h235c4kcEnwlo=lTqh zbN#xVFNwFq!E`JqG84+%t>X-bgw0)jPy`n86w!iD0+n{kEd$`&4L)Hr4|MbaIalw# z21rA$rCEaRiy*}=$#8^2LO!1o4%^77&NK!HT@H-QwfC`|A>b08O1e`~0gx;f)*Y%y zLl!w^y|-G%oRkm^y03(c(V%9Zz)#JBoeu#SjfH{nu6W77SduP#+DGcQX-wMp!_f`z ziMl<@Vp+7Q8hxSlOPScI7sr!Km3g>S_zQsVer<1vStB+9l|YD(&XL3zVi<+03rkzy zO7t_giL$<6{|W@3@B!-#2sQAB!W7n{Bivxgc}lam2>t>;66)l>-)qL&yyLj+|67LD+)1Xgjf(WUd-Ie=8SL+?&W#2 z;*div+=^=6Nh}2Gn&Y{IxVm$H>2+I6)IKP4atkJAXDpdtRzZ2R$@FrfiEm-gfG#`k z>&Vihw`|l0Ha3r(bp6J0D&3@k2cKc=s>2_L_omQA2j3mO$qJZB86}ga;uf&Xas`L1+ z{0Vv4HNkH_y@&(mJ?zT-m30Y(Ds((}9GBN{v1}6#zUJtzfQjXm&&m?YvH5MqlC^`& zVNu{6fZ~Po`}%nR#lPR?!t$1%;jgXVHJnHF6eRh+~ z0C$De)X@es$1@4@BgWdJK=Ue~pdyiuWmbP=do=H+LTvUkey~P3i)`STMIGQF4VYhG z(lUwsCWo5|@%hmBjU>NXmooDB=b>?=B14uBJr8{i)DtJMIhgUHB27aCJ7b zOEgb0=fI+P#@jM)KfEgBXx6x+9wKz{pf@H2M(>dM#vyUamG6r^is(g5pmw~JD;U%gmQRC& zgps47N>6U}TIG{L&t*99mF>r>ho~%br3yzGtxobZXHJjOp zO=@tB?x2R!cUTxCdLD#t~-cI=>Os183DX&?3TfLMqL40;CA4D6?RnZfa z#e1BPQoCh2rheH5RN04xoafoQDm!rNw)9&>|2E;;$K$N1%K@*F=#@>S%a^nux^%(S zjFJ}3wNjT>B8MWc?1EGhLWRUIaF5TQzA8;6Z3yyHW&v9_N(7l{P_-JBy8;J7{y=h6 zoz+H3Ggi9TxmSX~ba;4@t3bL=^npltaPqWazep2wK=|H-_-aP4FPZzrkc_LX> z!R^ILNp(DrPDxK?bqg}lY47!zUwPUpNaVp6L7}jXY-3t0%jESuc?LjsvOD<6d|+vc z8%isWUR&^}S6(3|qRj6#!LRnp zr{AAc*urafODvMHD6N0y z??%npav5zTD4~4lQ)oc#wDW~OS8337d~qsHcO*98;OxK_oV1@D3%%>)4F}Qn>fd}V z1(oIvoMTfR0%cC1m;ztoNKM`h1LIfLkv7QkU|G>xIc>Ihn@23J?Z)I=I`oJ8P`k51 z&SxiWl|PGWW7{ok2v>W|J=L@u7lyQK833=omf<07f)t-ZK=w|G(fUvNh+D1_3H@UY zrTa4AlDvpk4R}{{p#Ea!{N}fF3A#id)XG+U^SiJ8Z54DJcm3+pBY-+lw~mY=zx&X|IJ!v7b=f>Y=tEMb90TcNTV8Y=@d`#Y z9Pseu5?1`O>9+_udWW@;-xC{w1*5|%J|Y;_*L~`L*5|U3Hp#qJlRKf`0wM3$uEmoV zbhgUIHq0-jlN$EMFvO!h-&IEsbyOmeuKn z-FK{0w$pq;Rhrm+f+e>)GNi}z-C_RQU4($kvRf+5?q|UJ4#97uLta(a!Ds+j8mwTq z+-kovR~b#g7bKl|R;kZe(a{qJ4sGeYJil2K-+CDO5;PKs;T9g^Ol4T*RC^b|Lmt-R z#KTQ+By|OS8(#R3yehW|yIH8(uj+)p!p=}tquQu1+(03*|$FTb>y%tAesl<5jZ)+7bYh*9T01+8HcTR~Av|FlRN zGC=gv{8c35p^A2`xMkLJ4$DLuhck$K`u-?LrHE^W1p*V;}hHxcaCxFDm78pm`NQ#$0|{ zz1^{~h7b9C2dALP8QLW@D^8{Xc1u8?Ox$`mKfrnP`{BC~|H#KR7Qr-uSn^Sl5tH?m zjxl*a?sDs7j|uC`Z9c1PaiM_%%8wtyomdQ3UlL%-0OjN^ ztJqo?F8-y4*p$Lu_%EB0@Bfkq{HI+`&b+*BK6e~WAL79o*EUdrKIGE%+3bdjhtSKNf@-@LVWXAJ1Kxw#E`wQ+M~O5a#mHaQjeB)IW-`4StM8?@!SlUoMd^O3gd zwq||VeL3;bbeXd#t@mcuJD^*Y86fs2GZ}i7HI8to}_M*pgMJBS1eMv-6nxfu@&({me z0MX$J7CdS2EwFfpBgq5J50_jmL?AfTc{AnIU)3J2^$`^=;++3sNZNlW(mo+)>N zJ?llKT&g#1`?MlKsTT>8bp!e)0%{mFgtSB3HHmm>ia)V-j51^{J;$CfyX?H~Z*<8QtLel`cBOtfkx zyrho;Me($O>x|MnS5donx?0?FY^ZJX0Qe8~!JuAtxBfYJ&nvszRIDb$&qMjK_4s(Z z%jO&?Cfu1FVx5lR6=3<@PtLe)mt?s}z$qYjlA7Va<*V|bD)O&0{opG*cQ8cIaI|Bw zN-4JXPdjpj->O{FnbKBRF)@)hXQT`exR~L2^Hje!b5>%SAEiu19Y`Sq(ZOmddg}u0 z^fh~y*lI5)ay`45wdaUVyZx$o*e(wUH*C*>#jTSj>n&a^R+IbzRNshs=5l+SmIBLC%t^y*5JypTu}b{376z}fK3IxG!@Wrp71M->pw5O*#fUaF}%oi}xZ6Oje@Ldo} zgOYUSKwE|1nz2_)>K`ovbc9$vifxRVo{|iH0|eoMd4b0&G-OwQwJvMXrMT9|`kiuK zzcvi<`-(#yS$=FpSF|F!_qyREyDo6s%T|!2a9kK2A{N9*ic&+7#lK68*oH73eEhLd zSobx`p+2kO1!; z-KwJu`FWxAnae_yMFRPO+|{_ijGNecWey;Q_!caXr8=Y#2|$24Rbn}I;dj4DYBwHU zyvX~NrD+=l14PG#RyC$g3z2p~=6HLye1&NJ3;C>QVf4F7$n{Ym(#qz|HQ|oFvz_D) zGG&HJizti+q%!9C3?#JRG<<_j3_P)gTmUVAHVf$*XM^sC;l>p)>~Xlb3?s=oLg2*# zKnk1#xX*YzAJ2*3l@d@fF(s=i(9$5M!%JOW^aMQkw@LZEI{hUS*xKp#VCk=l3@xHV z8uje11`rOqFN;6(W~)kMbidN zkk%fC5$=Y%uc(YMle>WEkV6$T3~?|H^o9MP#R&=uTK<;bb$Ue?O6rh2zQ+jr!A{!| zQcn&+zG?W|%?iF=zdL-MW89lBE*gBqYndIOgqC!UKYyaEI!4&Gf|xN-7myZ&#V~LK zH5W+(3g$z3%!Erp0IzD2-w3$*E9~9B+^`&{4hE@DpGUJ1MK0Ail59y^m{4lgrC1oB znKGuUZ;$fq>ZQ2)*;5oT3SLS0G99U``VZiQ7E+OUgsvxqk{rT7r*Q=KLvyYQ4%F{( zA(d}It&-~@uYK;-A%hDIodG~HIJcaX&o_0cyfPg<-06y_s`EsyB@9cn_-%DU3SXobWeerF#CIdI$TQ_7E*>o>5k-`v zN6>vSB2!uqqw5`7-JE&w!V3)dA#)<22)Q?BKR#~#WdIr)qSnqckxP76-ej|XcuRND z|7km6*Gu=ZjaSWBTHN+qqBB zqEQ6JHab6S0uII{U+pMQ;sS6#wX$G+Y78m+{B$Y;?a7Q`eLB>-A}iU^?~owQ35r0m zZzdk1ft)NIg4qhjy0K*fXce}yBb96S(SmRWt&~ojS(_`4598RuOB>lQGD92uoZ*L! zxdQF^5Np~17$%?FZN%&kZ*mZc@X82TX!0vrLfm`vHrvaWA#D&Eoo0iDNCpofERmFm zbwttksQ%<}&4Ner3;eErd--%N%7LTcm8^%pju{t19uz7Rkw8KIHE=<>ajT(ziGum- zauP~YZkB)1sx$_);I#FiIxHNFGhp+gzd-H324IvSxt=Zzm^#@UNmnVzinE8~+pUXX zxLx-9pD#OA!1W=Qon`2c2H`Noxi&K_XoRM)_ABZp)a)3<+H=L2XD$uCT39~t7G8Mw zACdlvtS!VxIhqfAo+Torql6;Z4@0SkKs)nhd0IuU@?{X>{J5V1Ly`j45nU;K<$E#T zPdqdVl-smM=cZ7@UgC*Os=S?KaS^xG88WN{iHol znL|k{a4=XQA_dE~8G8CS7(%)Qyp~1Eexu)V?&j%m-xeuY){^_N0^ zzl!0DL&FJs&KwvlcoVY%w*ktYw43{Eq#}T3vU&$^eY5TkO&Dy zwvPr523@@&KJ~~yJ;TVsdyg{vFX-dfi99AnP|)qN#Af?}cG9coRLXJcdB|Mly0Uj7Hjo(kkBT{GB(OBtDYE zA3>vd39MwoAgaW5mloAW5xsIdcaf0>0mqOc56w;~r(twy{EjAU2~BRez|sNMAl!>D zZwag&hRGnnKF@Eag>ZGW3iQxcg;+OM zCAe$8W5h7T?Qx{l5S_r!tG3P8boO5F^F$151SLZ&d~8SH^-zU=V+X3 z;X$-C@P8~jn-_Xb7#hsZ^^N-_sKXkX82id)`-NWM+14x%QLV#zi4KR8gL~1TAt!KV z?IrtP0(dqIV+Q8{OK75g*Hk8nf0H4o?al%~K zzR^ni=By4;1l7}~V}`arWcqeB#1v0OLEb>1Id}e(mrjFc`dv63T@_l%+pgm>C9#tJMbKKg5k=(<(Gvlu5t(0@IMY6@X4MkR;sYu4B_0Vn zYr+MbBS`O~fAAR_a=Zc}-~)r=T7PxA64;TVluIBj-))YMR~cWEBU8An`uTJijm|Ai zFicGSgl7n_-{wDfDZ8ImeY75~h8vnW{;W4Vokx1v!Gnfd|`+v zaCCP)K#20>jS-WF^hm5SdS6c?k{`Qc}BQ(-4f+4gT;0&tukf58#4DhZK{prNC+FS zJx+0tNO|r51TWKJn|FQ~SrJx&F#NeYkW@Xn19?Nd@&SeW66Tsy%S(6)L!Q3h7F+G_>lIS z(`9ouKdf6JVs<3-b3jX8n@@}{ORzoIPVL8je8fyK-EH45dKyf~@7^VopJXv_IgU?v zihC+E_(`=L{Qm^F!m~tgc_jhbz`_`t2l3A;^>|;_%TOU+X(w>ezE*dSGN}{ z{k~puW`5MM_%kYqm1*@XS$1#lm1VaKLiGcAU-XW_ZQ&}%nBHXb78Q!0W3cOb5(OTs zaGS9|vC)IM=6E|q@zhe6rw-vjk@|Q2ApvdncZGf6K@tz1BkgKC6I<1jrq^P%Oy77i zl-%heY-ja3T$ew^FgmyMfw(1x1Uk0Se!BK8Ja^7yV8_R;u?p>CqKtPmhy2@1t!*ev zwf+IG<1-&ZZ&m0mva(iMk(+d6a9htZYtk;ENAM$deUj zuBFuTKN{=ZwmW?wie4Ps>w^7||FJ5ji_gvOZ*i)X-b^Ko;AF>IAThbYk{4FujXQ#K zl8F!K-#TjHym&8? z5A-X|Nc4+egEO}T3jo$f*-g)UyEW>)scx`%7aQHI&AZ^Y(b|Tz0O~+ z=)PW)JOV3B`>O^MfMjFA!5Bmv)662@j}(ydfN_XBIm@Jgch$ttf95N*U#3vJ(|n|@ zZy>5LkTLau^6~m{LCWh#AG99T%)Dtm@pIaG>0Bdu)D4~}{33_ALsmrkPW|xa<>?^v zIoB-Ih|ZKuc&c4OSe_%q+Rn*)7jN4PTie*Yc2$W|{r#vUSrTzN86oHK1=!yc+bEf4 z3AXbdwi(O~&d~?ye7V-4*?$2iN|F!WAx0Iv;~#my)WS9(!Wl%Dn7v@!ie^NUca*Q4 zR%_isaEB`e)ZO~}Yy9&I&fvFbV)u`@H)HeHz!yR2Yo{ez!CE!85&pxEEUcAux|$;` znwa(Ij14(KDCg9{#?>&B0~76S)A8Hnrr6=M-!|66-oHKL?D25J4YM6^{|B$x; e_Z+s*!6Mb9oZe*q>iLg}03*E{x@8zg-2VX|>gK%w literal 23786 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 a>#c8&M|C6>yFFw80000 { .init("unlockLastLongitude") } /// 手机报告:按自然日累计屏幕时长(秒),key = yyyy-MM-dd var screenTimeByDay: DefaultsKey<[String: Int]> { .init("screenTimeByDay", defaultValue: [:]) } - /// 手机报告:进行中的解锁 session 起点(持久化,杀进程可续) + /// 手机报告:当前进程屏幕时长 session 起点(仅用于杀进程后结算到最后心跳,不跨进程续计) var screenSessionStartAt: DefaultsKey { .init("screenSessionStartAt") } /// 手机报告:本 App 今日进入前台次数 var appUsageToday: DefaultsKey { .init("appUsageToday", defaultValue: 0) } diff --git a/QuickLocation/Manager/MQTT/MQTTService.swift b/QuickLocation/Manager/MQTT/MQTTService.swift index e6941427..3c68dd8a 100644 --- a/QuickLocation/Manager/MQTT/MQTTService.swift +++ b/QuickLocation/Manager/MQTT/MQTTService.swift @@ -153,7 +153,7 @@ final class MQTTService: NSObject { /// - callback: 可选,该 topic 的专用回调,收到消息时优先于此回调 func subscribe(topic: String, qos: CocoaMQTTQoS = .qos1, callback: ((CocoaMQTT5Message) -> Void)? = nil) { let subscription = MqttSubscription(topic: topic, qos: qos) - subscription.noLocal = true + subscription.noLocal = false subscription.retainAsPublished = true subscription.retainHandling = .none mqtt?.subscribe([subscription]) diff --git a/QuickLocation/Manager/URL/URLManager.swift b/QuickLocation/Manager/URL/URLManager.swift index 5e772fd6..3f9bec0f 100644 --- a/QuickLocation/Manager/URL/URLManager.swift +++ b/QuickLocation/Manager/URL/URLManager.swift @@ -52,7 +52,7 @@ extension DefaultsKeys { openIM_API = "https://imapi.zuom8.cn" // http://38.207.176.65:10002 openIM_WS = "ws://imws.zuom8.cn" // ws://38.207.176.65:10010 #elseif AdHoc - setupApiEnv(-1) + setupApiEnv(1) openIM_API = "https://imapi.zuom8.cn" openIM_WS = "ws://imws.zuom8.cn" #else diff --git a/QuickLocation/Manager/Unlock/UnlockCountManager.swift b/QuickLocation/Manager/Unlock/UnlockCountManager.swift index 3055f5df..818f46f8 100644 --- a/QuickLocation/Manager/Unlock/UnlockCountManager.swift +++ b/QuickLocation/Manager/Unlock/UnlockCountManager.swift @@ -31,8 +31,10 @@ final class UnlockCountManager: NSObject { private var lastGeofenceCenter: CLLocationCoordinate2D? private var lastKnownLocation: CLLocation? private var bootBackgroundTask: UIBackgroundTaskIdentifier = .invalid - /// 当前解锁 session 起点(锁屏结算屏幕时长) + /// 当前解锁 session 起点(锁屏结算屏幕时长,仅当前进程) private var screenSessionStart: Date? + /// 本次进程里用户是否真正打开过 App;杀进程后被定位拉起不算 + private var hasUserActivatedApp = false private override init() { super.init() @@ -81,7 +83,7 @@ final class UnlockCountManager: NSObject { rollDayIfNeeded() let today = todayString() var total = Defaults[\.screenTimeByDay][today] ?? 0 - if let start = effectiveScreenSessionStart { + if let start = screenSessionStart { total += screenTimeSeconds(from: start, to: Date(), onDay: today) } return total @@ -113,8 +115,8 @@ final class UnlockCountManager: NSObject { return } didStart = true + closeOrphanScreenSessionIfNeeded() rollDayIfNeeded() - restoreScreenSessionIfNeeded() let available = UIApplication.shared.isProtectedDataAvailable isSessionLocked = !available @@ -160,9 +162,6 @@ final class UnlockCountManager: NSObject { restartLocationMonitoringIfPossible(reassertContinuous: true) handleNonActiveLaunchIfNeeded(launchOptions) reconcileUnlockIfNeeded(reason: "coldStartAfterLock") - if UIApplication.shared.isProtectedDataAvailable, !isSessionLocked { - startScreenSession() - } Defaults[\.unlockLastHeartbeatAt] = Date() } @@ -205,10 +204,6 @@ final class UnlockCountManager: NSObject { return true } - private var effectiveScreenSessionStart: Date? { - screenSessionStart ?? Defaults[\.screenSessionStartAt] - } - private func dayString(for date: Date) -> String { let formatter = DateFormatter() formatter.calendar = Calendar.current @@ -275,28 +270,32 @@ final class UnlockCountManager: NSObject { return formatter.date(from: key) } - private func restoreScreenSessionIfNeeded() { - guard UIApplication.shared.isProtectedDataAvailable else { return } - guard screenSessionStart == nil, let persisted = Defaults[\.screenSessionStartAt] else { return } - screenSessionStart = persisted + /// 上一进程留下的 session 只结算到最后一次存活心跳,死掉的空档不再计入 + private func closeOrphanScreenSessionIfNeeded() { + guard screenSessionStart == nil else { return } + guard let start = Defaults[\.screenSessionStartAt] else { return } + let heartbeat = Defaults[\.unlockLastHeartbeatAt] + if let heartbeat, heartbeat > start { + addScreenTime(from: start, to: heartbeat) + } + Defaults[\.screenSessionStartAt] = nil + debugLog("closeOrphanScreenSession start=\(start) end=\(String(describing: heartbeat))") + notifyChange() } private func startScreenSession() { guard UIApplication.shared.isProtectedDataAvailable else { return } + guard hasUserActivatedApp || UIApplication.shared.applicationState == .active else { return } rollDayIfNeeded() - if screenSessionStart == nil { - if let persisted = Defaults[\.screenSessionStartAt] { - screenSessionStart = persisted - } else { - screenSessionStart = Date() - Defaults[\.screenSessionStartAt] = screenSessionStart - } - } + guard screenSessionStart == nil else { return } + screenSessionStart = Date() + Defaults[\.screenSessionStartAt] = screenSessionStart + Defaults[\.unlockLastHeartbeatAt] = screenSessionStart } - private func flushScreenSession() { - guard let start = effectiveScreenSessionStart else { return } - addScreenTime(from: start, to: Date()) + private func flushScreenSession(end: Date = Date()) { + guard let start = screenSessionStart else { return } + addScreenTime(from: start, to: end) screenSessionStart = nil Defaults[\.screenSessionStartAt] = nil notifyChange() @@ -478,6 +477,7 @@ final class UnlockCountManager: NSObject { } @objc private func appWillTerminate() { + flushScreenSession() persistLifecycleHeartbeat() forceRefreshGeofenceFromLastKnown(reason: "willTerminate") debugLog("willTerminate protected=\(UIApplication.shared.isProtectedDataAvailable) wasLocked=\(Defaults[\.unlockWasLocked])") @@ -485,8 +485,12 @@ final class UnlockCountManager: NSObject { @objc private func appDidBecomeActive() { debugLog("didBecomeActive protected=\(UIApplication.shared.isProtectedDataAvailable) wasLocked=\(Defaults[\.unlockWasLocked]) sessionLocked=\(isSessionLocked)") + hasUserActivatedApp = true endBootBackgroundTask() reconcileUnlockIfNeeded(reason: "becomeActiveAfterLock") + if UIApplication.shared.isProtectedDataAvailable, !isSessionLocked { + startScreenSession() + } recordAppUsage() restartLocationMonitoringIfPossible(reassertContinuous: true) Defaults[\.unlockLastHeartbeatAt] = Date() diff --git a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift index 77f11623..eb7d5c3e 100644 --- a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift +++ b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift @@ -79,7 +79,7 @@ class CreateGroupViewModel { // MARK: - 加载数据 func loadData() { - sectionedItems.onNext((tagList + [Self.addTagToken]).mapSection()) + sectionedItems.onNext(tagList.mapSection()) } // MARK: - Request diff --git a/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift b/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift index 9f785b4a..cd5d6ae4 100644 --- a/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift +++ b/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift @@ -12,6 +12,7 @@ import RxDataSources import OpenIMSDK import AVFoundation import AudioToolbox +import Speech import HXPHPicker import IQKeyboardManagerSwift import MJRefresh @@ -35,6 +36,7 @@ final class GroupChatVC: BaseViewController { private var cameraPicker: ImagePicker? /// 加载更早历史前记录,用于保持阅读位置 private var pendingOffsetRestore: (oldHeight: CGFloat, oldOffset: CGFloat)? + private var didSetupKeyboard = false // MARK: - Init init(groupId: String) { @@ -93,6 +95,11 @@ final class GroupChatVC: BaseViewController { override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) VoicePlayerManager.shared.stop() + if isVoiceRecording { + finishVoiceRecording(action: .discard) + } else if !rootView.voiceRecordView.isHidden { + rootView.voiceRecordView.reset() + } IQKeyboardManager.shared.isEnabled = true IQKeyboardManager.shared.resignOnTouchOutside = true } @@ -104,18 +111,19 @@ final class GroupChatVC: BaseViewController { // MARK: - Keyboard private func setupKeyboard() { - // 键盘升起 + guard !didSetupKeyboard else { return } + didSetupKeyboard = true NotificationCenter.default.rx.notification(UIResponder.keyboardWillShowNotification) .subscribe(onNext: { [weak self] noti in guard let self = self, - // 只在 VC 本身可见时响应,避免导航栈下层 VC 被全局通知唤醒 self.isViewLoaded && self.view.window != nil, let userInfo = noti.userInfo, let frame = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return } + // 语音转文字预览自己抬界面,不要再顶聊天输入栏 + guard self.rootView.voiceRecordView.isHidden else { return } let height = frame.height let duration = (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double) ?? 0.25 - // 收起表情/语音面板 self.rootView.dismissAllPanels(excludeTextField: true) UIView.animate(withDuration: duration) { self.rootView.bottomBar.layoutChain.bottom(height + 20) @@ -123,6 +131,21 @@ final class GroupChatVC: BaseViewController { self.scrollToBottom() }) .disposed(by: disposeBag) + + NotificationCenter.default.rx.notification(UIResponder.keyboardWillHideNotification) + .subscribe(onNext: { [weak self] noti in + guard let self = self, + self.isViewLoaded && self.view.window != nil + else { return } + guard self.rootView.voiceRecordView.isHidden else { return } + guard self.rootView.emojiPanelView.isHidden else { return } + let duration = (noti.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double) ?? 0.25 + UIView.animate(withDuration: duration) { + self.rootView.bottomBar.layoutChain.bottom(kSafeBottomMargin) + self.rootView.layoutIfNeeded() + } + }) + .disposed(by: disposeBag) } private func setupPanelDismiss() { @@ -130,16 +153,18 @@ final class GroupChatVC: BaseViewController { rootView.tableView.panGestureRecognizer.rx.event .filter { $0.state == .began } .subscribe(onNext: { [weak self] _ in - self?.rootView.dismissAllPanels() - self?.bubbleMenu?.dismiss() + guard let self = self, self.rootView.voiceRecordView.isHidden else { return } + self.rootView.dismissAllPanels() + self.bubbleMenu?.dismiss() }) .disposed(by: disposeBag) // 点击 cell 收起面板 rootView.tableView.rx.itemSelected .subscribe(onNext: { [weak self] _ in - self?.rootView.dismissAllPanels() - self?.bubbleMenu?.dismiss() + guard let self = self, self.rootView.voiceRecordView.isHidden else { return } + self.rootView.dismissAllPanels() + self.bubbleMenu?.dismiss() }) .disposed(by: disposeBag) } @@ -201,6 +226,7 @@ final class GroupChatVC: BaseViewController { rootView.bringSubviewToFront(rootView.quoteBar) rootView.bringSubviewToFront(rootView.bottomBar) rootView.bringSubviewToFront(rootView.disableIMView) + rootView.bringSubviewToFront(rootView.voiceRecordView) } // MARK: - 顶部加载更早历史 @@ -375,7 +401,6 @@ final class GroupChatVC: BaseViewController { return } self.viewModel.setPendingQuote(oim) - self.rootView.textField.becomeFirstResponder() } menu.onDismiss = { [weak self] in self?.bubbleMenu = nil } let anchor = menuAnchorView(in: cell) @@ -389,6 +414,7 @@ final class GroupChatVC: BaseViewController { rootView.mentionTableView.dataSource = self rootView.textField.rx.controlEvent(.editingChanged) .subscribe(onNext: { [weak self] in + self?.rootView.refreshComposer() self?.handleMentionTrigger() }) .disposed(by: disposeBag) @@ -446,6 +472,7 @@ final class GroupChatVC: BaseViewController { } } rootView.textField.text = current + insert + rootView.refreshComposer() rootView.textField.becomeFirstResponder() } @@ -467,37 +494,16 @@ final class GroupChatVC: BaseViewController { AppRouter.push(Route.groupMemberList, userInfo: ["groupKey": self.viewModel.groupId]) }).disposed(by: disposeBag) - // 语音按钮 + // 语音按钮:切换到按住说话 rootView.voiceBtn.rx.tap.subscribe(onNext: { [weak self] _ in - guard let self = self else { return } - let status = AVCaptureDevice.authorizationStatus(for: .audio) - switch status { - case .authorized: - break - case .notDetermined: - AVAudioSession.sharedInstance().requestRecordPermission { granted in - guard granted else { return } - DispatchQueue.main.async { - self.rootView.dismissAllPanels() - self.showSpeakPanel() - } - } - return - default: - Permission.openAppSetting(title: "请开启麦克风权限", - message: "请在iPhone的“设置-隐私-麦克风”选项中允许\(kAppName)访问你的麦克风。") - return - } - self.rootView.dismissAllPanels() - self.showSpeakPanel() + self?.enterVoiceInputMode() }) .disposed(by: disposeBag) - - // 键盘按钮 - rootView.voiceRecordView.keyboardBtn.rx.tap + + rootView.keyboardBtn.rx.tap .subscribe(onNext: { [weak self] _ in guard let self = self else { return } - self.rootView.dismissAllPanels() + self.rootView.setVoiceInputMode(false) self.rootView.textField.becomeFirstResponder() }) .disposed(by: disposeBag) @@ -510,14 +516,6 @@ final class GroupChatVC: BaseViewController { }) .disposed(by: disposeBag) - rootView.voiceRecordView.emojiBtn.rx.tap - .subscribe(onNext: { [weak self] _ in - guard let self = self else { return } - self.rootView.dismissAllPanels() - self.showEmojiPanel() - }) - .disposed(by: disposeBag) - // 表情面板点击 rootView.emojiCollectionView.rx.modelSelected(String.self) .subscribe(onNext: { [weak self] name in @@ -526,16 +524,13 @@ final class GroupChatVC: BaseViewController { }) .disposed(by: disposeBag) - Observable.merge( - rootView.galleryBtn.rx.tap.asObservable(), - rootView.voiceRecordView.addBtn.rx.tap.asObservable() - ) - .subscribe(onNext: { [weak self] in - guard let self = self else { return } - self.rootView.dismissAllPanels() - self.showAlbum() - }) - .disposed(by: disposeBag) + rootView.galleryBtn.rx.tap + .subscribe(onNext: { [weak self] in + guard let self = self else { return } + self.rootView.dismissAllPanels() + self.showAlbum() + }) + .disposed(by: disposeBag) rootView.cameraBtn.rx.tap .subscribe(onNext: { [weak self] in @@ -571,18 +566,6 @@ final class GroupChatVC: BaseViewController { .disposed(by: disposeBag) } - // MARK: - 显示语音面板 - private func showSpeakPanel() { - let show = rootView.voiceRecordView.isHidden - rootView.voiceRecordView.isHidden = !show - let offset: CGFloat = show ? 252 : 0 - UIView.animate(withDuration: 0.25) { - self.rootView.bottomBar.layoutChain.bottom(show ? offset - self.rootView.bottomBar.dl.height : kSafeBottomMargin) - self.rootView.voiceRecordView.layoutChain.bottom(offset - 252) - } - scrollToBottom() - } - // MARK: - 显示表情面板 private func showEmojiPanel() { let show = self.rootView.emojiPanelView.isHidden @@ -660,89 +643,192 @@ final class GroupChatVC: BaseViewController { } // MARK: - Voice Recording - private var audioRecorder: AVAudioRecorder? + private var isVoiceRecording = false + private let voiceCapture = ChatVoiceCapture() private var recordFileURL: URL? private var recordTimer: Timer? private var recordDuration: Int = 0 + private var currentVoiceHover: VoiceRecordView.HoverTarget = .none + + private func enterVoiceInputMode() { + let status = AVCaptureDevice.authorizationStatus(for: .audio) + switch status { + case .authorized: + rootView.dismissAllPanels() + rootView.setVoiceInputMode(true) + requestSpeechAuthorizationIfNeeded() + case .notDetermined: + AVAudioSession.sharedInstance().requestRecordPermission { [weak self] granted in + DispatchQueue.main.async { + guard let self, granted else { return } + self.rootView.dismissAllPanels() + self.rootView.setVoiceInputMode(true) + self.requestSpeechAuthorizationIfNeeded() + } + } + default: + Permission.openAppSetting(title: "请开启麦克风权限", + message: "请在iPhone的“设置-隐私-麦克风”选项中允许\(kAppName)访问你的麦克风。") + } + } + private func setupVoiceRecording() { let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleVoiceLongPress(_:))) - longPress.minimumPressDuration = 0.2 - rootView.voiceRecordView.speakBtn.addGestureRecognizer(longPress) + longPress.minimumPressDuration = 0.18 + longPress.allowableMovement = .greatestFiniteMagnitude + rootView.holdSpeakBtn.addGestureRecognizer(longPress) + + rootView.voiceRecordView.onPreviewCancel = { [weak self] in + self?.discardPreview() + } + rootView.voiceRecordView.onPreviewSend = { [weak self] text in + self?.rootView.voiceRecordView.reset() + self?.rootView.restoreComposerPosition() + self?.viewModel.input.sendMessage.onNext(text) + } + voiceCapture.onLevel = { [weak self] level in + self?.rootView.voiceRecordView.pushLevel(level) + } + voiceCapture.onPartialText = { [weak self] text in + self?.rootView.voiceRecordView.updateRecognizedText(text) + } } @objc private func handleVoiceLongPress(_ gesture: UILongPressGestureRecognizer) { - let location = gesture.location(in: rootView.voiceRecordView) - let btnCenterX = rootView.voiceRecordView.speakBtn.center.x - let isCancel = location.x < btnCenterX - 100 - + let point = gesture.location(in: rootView.voiceRecordView) switch gesture.state { case .began: - AudioServicesPlaySystemSound(1519) - rootView.voiceRecordView.state = .recording - startRecording() + startVoiceRecording() case .changed: - let wasRecording = rootView.voiceRecordView.state == .recording - rootView.voiceRecordView.state = isCancel ? .canceling : .recording - rootView.voiceRecordView.cancelBtn.isSelected = isCancel - if isCancel && wasRecording { + guard isVoiceRecording else { return } + let target = rootView.voiceRecordView.hoverTarget(at: point) + if target != currentVoiceHover { + currentVoiceHover = target AudioServicesPlaySystemSound(1519) } + rootView.voiceRecordView.setHover(target) case .ended: - stopRecording(cancel: isCancel) + guard isVoiceRecording else { return } + finishVoiceRecording(action: finishAction(for: currentVoiceHover)) + case .cancelled, .failed: + if isVoiceRecording { + finishVoiceRecording(action: .discard) + } default: break } } - private func startRecording() { - let session = AVAudioSession.sharedInstance() - try? session.setCategory(.playAndRecord, mode: .default) - try? session.setActive(true) + private enum VoiceFinishAction { + case discard + case sendVoice + case convert + } - let dir = NSTemporaryDirectory() - let filename = "voice_\(Int(Date().timeIntervalSince1970)).wav" - recordFileURL = URL(fileURLWithPath: dir + filename) - - let settings: [String: Any] = [ - AVFormatIDKey: kAudioFormatLinearPCM, - AVSampleRateKey: 8000, - AVNumberOfChannelsKey: 1, - AVLinearPCMBitDepthKey: 16, - AVLinearPCMIsFloatKey: false - ] - - guard let url = recordFileURL else { return } - audioRecorder = try? AVAudioRecorder(url: url, settings: settings) - audioRecorder?.record() - - recordDuration = 0 - recordTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in - self?.recordDuration += 1 + private func finishAction(for hover: VoiceRecordView.HoverTarget) -> VoiceFinishAction { + switch hover { + case .cancel: return .discard + case .convert: return .convert + case .none: return .sendVoice } } - private func stopRecording(cancel: Bool) { - audioRecorder?.stop() + private func startVoiceRecording() { + guard !isVoiceRecording else { return } + AudioServicesPlaySystemSound(1519) + currentVoiceHover = .none + bringInputOverlaysToFront() + + let url = URL(fileURLWithPath: NSTemporaryDirectory() + "voice_\(Int(Date().timeIntervalSince1970)).caf") + recordFileURL = url + + let startCapture: (Bool) -> Void = { [weak self] enableSpeech in + guard let self else { return } + do { + try self.voiceCapture.start(fileURL: url, enableSpeech: enableSpeech) + self.isVoiceRecording = true + self.recordDuration = 0 + self.rootView.voiceRecordView.beginRecording() + self.recordTimer?.invalidate() + self.recordTimer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true) { [weak self] _ in + self?.tickVoiceRecording() + } + RunLoop.main.add(self.recordTimer!, forMode: .common) + } catch { + self.dl.show(text: "无法开始录音") + try? FileManager.default.removeItem(at: url) + } + } + + startCapture(SFSpeechRecognizer.authorizationStatus() == .authorized) + } + + private func requestSpeechAuthorizationIfNeeded() { + guard SFSpeechRecognizer.authorizationStatus() == .notDetermined else { return } + SFSpeechRecognizer.requestAuthorization { _ in } + } + + private func tickVoiceRecording() { + guard isVoiceRecording else { return } + recordDuration = voiceCapture.duration + rootView.voiceRecordView.updateDuration(recordDuration) + if recordDuration >= 60 { + finishVoiceRecording(action: finishAction(for: currentVoiceHover)) + } + } + + private func finishVoiceRecording(action: VoiceFinishAction) { + guard isVoiceRecording else { + if action == .discard { + rootView.voiceRecordView.reset() + } + return + } + isVoiceRecording = false recordTimer?.invalidate() recordTimer = nil - rootView.voiceRecordView.stopRotating() - - try? AVAudioSession.sharedInstance().setActive(false) + let duration = max(recordDuration, voiceCapture.duration) + voiceCapture.stop(finishRecognition: action == .convert) + let text = voiceCapture.latestText + let url = recordFileURL - if cancel { - self.rootView.voiceRecordView.cancelBtn.isSelected = false - if let url = recordFileURL { try? FileManager.default.removeItem(at: url) } - return + switch action { + case .discard: + deleteRecordFile() + rootView.voiceRecordView.reset() + case .sendVoice: + rootView.voiceRecordView.reset() + guard let url, duration >= 1 else { + dl.show(text: "说话时间太短") + deleteRecordFile() + return + } + sendVoiceMessage(url: url, durationMs: duration * 1000) + case .convert: + deleteRecordFile() + DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) { [weak self] in + guard let self, !self.isVoiceRecording, !self.rootView.voiceRecordView.isHidden else { return } + let latest = self.voiceCapture.latestText.isEmpty ? text : self.voiceCapture.latestText + self.rootView.voiceRecordView.showPreview(text: latest) + } } + } - guard let url = recordFileURL, recordDuration >= 1 else { - self.dl.show(text: "说话时间太短") - if let url = recordFileURL { try? FileManager.default.removeItem(at: url) } - return + private func discardPreview() { + deleteRecordFile() + rootView.voiceRecordView.reset() + rootView.restoreComposerPosition() + } + + private func deleteRecordFile() { + if let url = recordFileURL { + try? FileManager.default.removeItem(at: url) } + recordFileURL = nil + } - // Send voice message via OpenIM - let msg = OIMMessageInfo.createSoundMessage(fromFullPath: url.path, duration: recordDuration * 1000) + private func sendVoiceMessage(url: URL, durationMs: Int) { + let msg = OIMMessageInfo.createSoundMessage(fromFullPath: url.path, duration: durationMs) viewModel.cacheMessage(msg) OIMManager.manager.sendMessage(msg, recvID: "", diff --git a/QuickLocation/Section/Group/GroupChat/GroupChatView.swift b/QuickLocation/Section/Group/GroupChat/GroupChatView.swift index 51c7c17e..c24fceb2 100644 --- a/QuickLocation/Section/Group/GroupChat/GroupChatView.swift +++ b/QuickLocation/Section/Group/GroupChat/GroupChatView.swift @@ -125,21 +125,59 @@ class GroupChatView: UIView { } /// 收起所有浮层面板 + private var isVoiceInputMode = false + + func setVoiceInputMode(_ enabled: Bool) { + isVoiceInputMode = enabled + if enabled { + textField.resignFirstResponder() + emojiPanelView.isHidden = true + } + refreshComposer() + } + + func refreshComposer() { + let hasText = !(textField.text ?? "").trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + if isVoiceInputMode { + textField.isHidden = true + emojiBtn.isHidden = true + voiceBtn.isHidden = true + sendBtn.isHidden = true + holdSpeakBtn.isHidden = false + keyboardBtn.isHidden = false + } else { + textField.isHidden = false + emojiBtn.isHidden = false + holdSpeakBtn.isHidden = true + keyboardBtn.isHidden = true + sendBtn.isHidden = !hasText + voiceBtn.isHidden = hasText + } + layoutIfNeeded() + } + func dismissAllPanels(excludeTextField: Bool = false) { let needsReset = !emojiPanelView.isHidden - || !voiceRecordView.isHidden || textField.isFirstResponder || !mentionPickerView.isHidden guard needsReset else { return } stopVisibleEmojiAnimations() emojiPanelView.isHidden = true - voiceRecordView.isHidden = true mentionPickerView.isHidden = true if !excludeTextField { textField.resignFirstResponder() } - UIView.animate(withDuration: 0.25) { + restoreComposerPosition() + } + + func restoreComposerPosition(animated: Bool = true) { + let update = { self.bottomBar.layoutChain.bottom(kSafeBottomMargin) - self.voiceRecordView.layoutChain.bottom(-252) + self.layoutIfNeeded() + } + if animated { + UIView.animate(withDuration: 0.25, animations: update) + } else { + update() } } @@ -208,10 +246,12 @@ class GroupChatView: UIView { addSubview(emojiPanelView) emojiPanelView.addSubview(emojiCollectionView) emojiPanelView.addSubview(emojiPageControl) - bottomBar.addSubview(voiceBtn) bottomBar.addSubview(textField) + bottomBar.addSubview(holdSpeakBtn) bottomBar.addSubview(emojiBtn) + bottomBar.addSubview(voiceBtn) bottomBar.addSubview(sendBtn) + bottomBar.addSubview(keyboardBtn) quickActionBar.addSubview(galleryBtn) quickActionBar.addSubview(cameraBtn) quickActionBar.addSubview(locationBtn) @@ -341,13 +381,17 @@ class GroupChatView: UIView { bottomBarCornerView.layoutChain.edges() - voiceBtn.layoutChain - .left(13).centerY() + keyboardBtn.layoutChain + .right(12).centerY() .width(28).height(28) sendBtn.layoutChain - .right(10).centerY() - .width(56).height(40) + .right(8).centerY() + .width(36).height(36) + + voiceBtn.layoutChain + .right(12).centerY() + .width(28).height(28) emojiBtn.layoutChain .rightToLeftOfView(sendBtn, offset: -8) @@ -355,16 +399,18 @@ class GroupChatView: UIView { .width(30).height(30) textField.layoutChain - .leftToRightOfView(voiceBtn, offset: 10) + .left(16) .rightToLeftOfView(emojiBtn, offset: -10) .centerY() .height(36) - voiceRecordView.layoutChain - .edgesHorzontal() - .bottom(-252) - .height(252) -// .heightToWidth(252/375) + holdSpeakBtn.layoutChain + .left(16) + .rightToLeftOfView(keyboardBtn, offset: -10) + .centerY() + .height(36) + + voiceRecordView.layoutChain.edges() emojiPanelView.layoutChain .edgesHorzontal() @@ -640,33 +686,44 @@ class GroupChatView: UIView { lazy var textField: UITextField = { let tf = UITextField() - tf.font = .systemFont(ofSize: 14) - tf.backgroundColor = .white - tf.cornerRadius = 18 - tf.placeholder = "输入消息..." + tf.font = .systemFont(ofSize: 16) + tf.textColor = UIColor(hexStr: "#293445") + tf.backgroundColor = .clear + tf.placeholder = "发消息或者按住说话" tf.returnKeyType = .send - tf.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 12, height: 36)) - tf.leftViewMode = .always + tf.tintColor = UIColor(hexStr: "#16B3FF") return tf }() + lazy var holdSpeakBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("按住 说话", for: .normal) + btn.setTitleColor(UIColor(hexStr: "#293445"), for: .normal) + btn.titleLabel?.font = .systemFont(ofSize: 16, weight: .medium) + btn.isExclusiveTouch = true + btn.isHidden = true + return btn + }() + + lazy var keyboardBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setImage(UIImage(named: "IM/keyboard"), for: .normal) + btn.isHidden = true + return btn + }() + lazy var emojiBtn: UIButton = { let btn = UIButton(type: .custom) btn.setImage(UIImage(named: "IM/emoji_input"), for: .normal) return btn }() - lazy var addBtn: UIButton = { - let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "IM/add"), for: .normal) - return btn - }() - lazy var sendBtn: UIButton = { let btn = UIButton(type: .custom) btn.setImage(UIImage(named: "IM/send"), for: .normal) - btn.backgroundColor = UIColor(hexStr: "#18B5F4") - btn.cornerRadius = 14 + btn.backgroundColor = UIColor(hexStr: "#16B3FF") + btn.cornerRadius = 10 + btn.isHidden = true return btn }() @@ -747,6 +804,7 @@ class GroupChatView: UIView { backgroundColor = UIColor(hexStr: "#F5F5F5") setupUI() setupRx() + refreshComposer() } required init?(coder: NSCoder) { @@ -1171,8 +1229,9 @@ class TextSendMsgCell: UITableViewCell { .topToBottomOfView(senderNameView, offset: 5) .rightToView(senderNameView) .left(60, relation: .greaterThanOrEqual) - .width(100, relation: .greaterThanOrEqual) .height(30, relation: .greaterThanOrEqual) + contentLabel.setContentHuggingPriority(.required, for: .horizontal) + contentLabel.setContentCompressionResistancePriority(.required, for: .horizontal) contentLabel.translatesAutoresizingMaskIntoConstraints = false contentLabel.layoutChain @@ -1180,6 +1239,7 @@ class TextSendMsgCell: UITableViewCell { .edgesHorzontal(12) quoteBlock.translatesAutoresizingMaskIntoConstraints = false + quoteBlock.setContentHuggingPriority(.defaultLow, for: .horizontal) let qTop = quoteBlock.topAnchor.constraint(equalTo: bubbleView.bottomAnchor, constant: 4) let qH = quoteBlock.heightAnchor.constraint(equalToConstant: 0) quoteTopConstraint = qTop @@ -1188,7 +1248,6 @@ class TextSendMsgCell: UITableViewCell { qTop, quoteBlock.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor), quoteBlock.leadingAnchor.constraint(greaterThanOrEqualTo: contentView.leadingAnchor, constant: 60), - quoteBlock.widthAnchor.constraint(lessThanOrEqualTo: bubbleView.widthAnchor), quoteBlock.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -10), qH ]) @@ -1304,8 +1363,9 @@ class TextReceivedMsgCell: UITableViewCell { .topToBottomOfView(senderNameView, offset: 5) .leftToView(senderNameView) .right(60, relation: .greaterThanOrEqual) - .width(100, relation: .greaterThanOrEqual) .height(30, relation: .greaterThanOrEqual) + contentLabel.setContentHuggingPriority(.required, for: .horizontal) + contentLabel.setContentCompressionResistancePriority(.required, for: .horizontal) contentLabel.translatesAutoresizingMaskIntoConstraints = false contentLabel.layoutChain @@ -1313,6 +1373,7 @@ class TextReceivedMsgCell: UITableViewCell { .edgesHorzontal(12) quoteBlock.translatesAutoresizingMaskIntoConstraints = false + quoteBlock.setContentHuggingPriority(.defaultLow, for: .horizontal) // 引用在 bubbleView 下方 let qTop = quoteBlock.topAnchor.constraint(equalTo: bubbleView.bottomAnchor, constant: 4) let qH = quoteBlock.heightAnchor.constraint(equalToConstant: 0) @@ -1322,7 +1383,6 @@ class TextReceivedMsgCell: UITableViewCell { qTop, quoteBlock.leadingAnchor.constraint(equalTo: senderNameView.leadingAnchor), quoteBlock.trailingAnchor.constraint(lessThanOrEqualTo: contentView.trailingAnchor, constant: -60), - quoteBlock.widthAnchor.constraint(lessThanOrEqualTo: bubbleView.widthAnchor), quoteBlock.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -10), qH ]) diff --git a/QuickLocation/Section/Group/GroupChat/VoiceRecordView.swift b/QuickLocation/Section/Group/GroupChat/VoiceRecordView.swift index 84d769be..c3a30f10 100644 --- a/QuickLocation/Section/Group/GroupChat/VoiceRecordView.swift +++ b/QuickLocation/Section/Group/GroupChat/VoiceRecordView.swift @@ -6,222 +6,591 @@ // import UIKit -import Lottie +import AVFoundation +import Speech -final class VoiceRecordView: UIView { +final class VoiceRecordView: UIView, UIGestureRecognizerDelegate { - enum State { + enum Phase { + case hidden case recording - case canceling + case cancelHover + case convertHover + case preview + case failed } - var state: State = .recording { - didSet { - updateUI() - } - } - - private func updateUI() { - switch state { - case .recording: - tipsLab.text = "松开发送" - startRotating() - case .canceling: - tipsLab.text = "松开取消" - } + enum HoverTarget { + case none + case cancel + case convert } - lazy var bgView: UIView = { - let v = UIView() - v.backgroundColor = .clear - v.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1).cgColor - v.layer.shadowOffset = CGSize(width: 0, height: 0) - v.layer.shadowOpacity = 1 - v.layer.shadowRadius = 8 - return v - }() + private(set) var phase: Phase = .hidden + var onPreviewCancel: (() -> Void)? + var onPreviewSend: ((String) -> Void)? - lazy var topContainer: UIView = { - let v = UIView() - v.backgroundColor = .white - return v - }() - - lazy var keyboardBtn: UIButton = { - let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "IM/keyboard"), for: .normal) - return btn - }() - - lazy var titleView: UIView = { - let v = UIView() - v.layer.shadowColor = UIColor(red: 0.06, green: 0.16, blue: 0.27, alpha: 0.1).cgColor - v.layer.shadowOffset = CGSize(width: 0, height: 0) - v.layer.shadowOpacity = 1 - v.layer.shadowRadius = 9 - - let cornerView = UIView() - cornerView.backgroundColor = .white - cornerView.cornerRadius = 19 - - let label = UILabel() - label.text = "正在录入语音..." - label.font = .systemFont(ofSize: 12) - label.textColor = ThemeManager.shared.color.subTitleColor - label.textAlignment = .center - - v.addSubview(cornerView) - v.addSubview(label) - - cornerView.layoutChain.edges() - label.layoutChain.centerX().centerY() - - return v - }() - - lazy var emojiBtn: UIButton = { - let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "IM/emoji_off"), for: .normal) - btn.extendEdgeInsets = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 0) - return btn - }() - - lazy var addBtn: UIButton = { - let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "IM/add_off"), for: .normal) - btn.extendEdgeInsets = UIEdgeInsets(top: 15, left: 0, bottom: 15, right: 15) - return btn - }() - - lazy var containerView: UIView = { + private let overlayView: UIView = { let view = UIView() - view.backgroundColor = .white + view.backgroundColor = UIColor.black.withAlphaComponent(0.65) return view }() - - lazy var tipsLab: UILabel = { + + private let hillView = VoiceRecordHillView() + + private let contentView = UIView() + + private let hintLabel: UILabel = { let label = UILabel() - label.text = " " - label.font = .systemFont(ofSize: 12, weight: .medium) - label.textColor = ThemeManager.shared.color.titleAuxColor + label.font = .systemFont(ofSize: 16, weight: .medium) + label.textColor = .white label.textAlignment = .center + label.text = "松开 发送" return label }() - - lazy var speakingImgView: UIImageView = { - let view = UIImageView(image: UIImage(named: "IM/speaking")) - view.isHidden = true + + private let bubbleView: UIView = { + let view = UIView() + view.backgroundColor = UIColor(hexStr: "#4DA3FF") + view.layer.cornerRadius = 28 + view.clipsToBounds = true return view }() - - lazy var speakBtn: UIView = { - let view = UIView() - view.backgroundColor = UIColor(hexStr: "#E7F7FF") - view.cornerRadius = 48 - - let icon = UIImageView(image: UIImage(named: "IM/speak")) - view.addSubview(icon) - icon.layoutChain + + private let tailView = VoiceBubbleTailView() + + private let dotsView = VoiceRecordingDotsView() + + private let textView: UITextView = { + let view = UITextView() + view.backgroundColor = .clear + view.textColor = .white + view.font = .systemFont(ofSize: 18, weight: .medium) + view.isScrollEnabled = false + view.isEditable = false + view.textContainerInset = .zero + view.textContainer.lineFragmentPadding = 0 + view.tintColor = .white + view.textAlignment = .left + return view + }() + + private let waveformView = VoiceRecordWaveformView() + + private let durationLabel: UILabel = { + let label = UILabel() + label.font = .systemFont(ofSize: 15, weight: .medium) + label.textColor = .white + label.text = "0\"" + return label + }() + + private let editButton: UIButton = { + let button = UIButton(type: .custom) + button.setImage(UIImage(named: "IM/edit")?.withRenderingMode(.alwaysOriginal), for: .normal) + button.adjustsImageWhenHighlighted = false + button.isHidden = true + return button + }() + + let cancelBtn = VoiceRecordCircleButton() + let convertBtn = VoiceRecordCircleButton() + let sendBtn = VoiceRecordCircleButton() + + private var bubbleWidthConstraint: NSLayoutConstraint? + private var bubbleHeightConstraint: NSLayoutConstraint? + private var bubbleCenterXConstraint: NSLayoutConstraint? + private var tailCenterXConstraint: NSLayoutConstraint? + private var bubbleContentConstraints: [NSLayoutConstraint] = [] + private var recognizedText: String = "" + private var duration: Int = 0 + private var keyboardObserver: NSObjectProtocol? + + override init(frame: CGRect) { + super.init(frame: frame) + isHidden = true + isUserInteractionEnabled = false + backgroundColor = .clear + setupUI() + bindActions() + observeKeyboard() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + deinit { + if let keyboardObserver { + NotificationCenter.default.removeObserver(keyboardObserver) + } + } + + func beginRecording() { + recognizedText = "" + duration = 0 + textView.text = "" + textView.isEditable = false + textView.resignFirstResponder() + waveformView.reset() + waveformView.barColor = .white + durationLabel.text = "0\"" + contentView.transform = .identity + isHidden = false + isUserInteractionEnabled = false + apply(phase: .recording, animated: false) + } + + func setHover(_ target: HoverTarget) { + guard phase == .recording || phase == .cancelHover || phase == .convertHover else { return } + let next: Phase + switch target { + case .none: next = .recording + case .cancel: next = .cancelHover + case .convert: next = .convertHover + } + guard phase != next else { return } + apply(phase: next) + } + + func updateDuration(_ seconds: Int) { + duration = max(0, min(60, seconds)) + durationLabel.text = "\(duration)\"" + } + + func pushLevel(_ level: CGFloat) { + waveformView.push(level: level) + } + + func updateRecognizedText(_ text: String) { + recognizedText = text.trimmingCharacters(in: .whitespacesAndNewlines) + if phase == .convertHover { + refreshConvertHoverContent() + } + } + + func showPreview(text: String) { + recognizedText = text.trimmingCharacters(in: .whitespacesAndNewlines) + textView.text = recognizedText + isHidden = false + isUserInteractionEnabled = true + apply(phase: recognizedText.isEmpty ? .failed : .preview, animated: false) + } + + func reset() { + textView.resignFirstResponder() + textView.isEditable = false + recognizedText = "" + duration = 0 + waveformView.reset() + contentView.layer.removeAllAnimations() + contentView.transform = .identity + isUserInteractionEnabled = false + isHidden = true + apply(phase: .hidden, animated: false) + } + + func hoverTarget(at point: CGPoint) -> HoverTarget { + let cancelFrame = cancelBtn.convert(cancelBtn.bounds.insetBy(dx: -28, dy: -28), to: self) + let convertFrame = convertBtn.convert(convertBtn.bounds.insetBy(dx: -28, dy: -28), to: self) + if !cancelBtn.isHidden, cancelFrame.contains(point) { return .cancel } + if !convertBtn.isHidden, convertFrame.contains(point) { return .convert } + return .none + } + + var previewText: String { + textView.text.trimmingCharacters(in: .whitespacesAndNewlines) + } + + var isPreviewing: Bool { + phase == .preview || phase == .failed + } + + private func bindActions() { + cancelBtn.addTarget(self, action: #selector(handlePreviewCancel), for: .touchUpInside) + sendBtn.addTarget(self, action: #selector(handlePreviewSend), for: .touchUpInside) + editButton.addTarget(self, action: #selector(handleEdit), for: .touchUpInside) + + let tap = UITapGestureRecognizer(target: self, action: #selector(handleBackgroundTap)) + tap.cancelsTouchesInView = false + tap.delegate = self + addGestureRecognizer(tap) + } + + func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { + guard textView.isFirstResponder else { return false } + var view = touch.view + while let current = view { + if current is UIControl { return false } + if current === textView || current === bubbleView { return false } + view = current.superview + } + return true + } + + @objc private func handleBackgroundTap() { + guard textView.isFirstResponder else { return } + endEditing(true) + } + + @objc private func handlePreviewCancel() { + guard phase == .preview || phase == .failed else { return } + contentView.layer.removeAllAnimations() + contentView.transform = .identity + endEditing(true) + onPreviewCancel?() + } + + @objc private func handlePreviewSend() { + guard phase == .preview else { return } + let text = previewText + guard !text.isEmpty else { return } + contentView.layer.removeAllAnimations() + contentView.transform = .identity + endEditing(true) + onPreviewSend?(text) + } + + @objc private func handleEdit() { + guard phase == .preview else { return } + if textView.isFirstResponder { + textView.resignFirstResponder() + return + } + textView.isEditable = true + textView.isUserInteractionEnabled = true + textView.becomeFirstResponder() + } + + private func setupUI() { + addSubview(overlayView) + addSubview(hillView) + addSubview(contentView) + contentView.addSubview(hintLabel) + contentView.addSubview(cancelBtn) + contentView.addSubview(convertBtn) + contentView.addSubview(sendBtn) + contentView.addSubview(tailView) + contentView.addSubview(bubbleView) + bubbleView.addSubview(dotsView) + bubbleView.addSubview(textView) + bubbleView.addSubview(waveformView) + bubbleView.addSubview(durationLabel) + bubbleView.addSubview(editButton) + + [overlayView, hillView, contentView, hintLabel, cancelBtn, convertBtn, sendBtn, tailView, bubbleView, + dotsView, textView, waveformView, durationLabel, editButton].forEach { + $0.translatesAutoresizingMaskIntoConstraints = false + } + + overlayView.layoutChain.edges() + contentView.layoutChain.edges() + + let hillSize = kScreenWidth + 180 + NSLayoutConstraint.activate([ + hillView.centerXAnchor.constraint(equalTo: centerXAnchor), + hillView.widthAnchor.constraint(equalToConstant: hillSize), + hillView.heightAnchor.constraint(equalToConstant: hillSize), + hillView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: hillSize - 118) + ]) + + hintLabel.layoutChain .centerX() - .centerY() - - return view - }() - - lazy var cancelLab: UILabel = { - let label = UILabel() - label.text = "左滑取消" - label.font = .systemFont(ofSize: 12, weight: .regular) - label.textColor = ThemeManager.shared.color.contentColor - return label - }() - - lazy var cancelBtn: UIButton = { - let btn = UIButton(type: .custom) - btn.setImage(UIImage(named: "IM/cancel_off"), for: .normal) - btn.setImage(UIImage(named: "IM/cancel"), for: .selected) - btn.isUserInteractionEnabled = false - return btn - }() + .bottom(46 + kSafeBottomMargin) + .height(22) + + cancelBtn.layoutChain + .left(48) + .bottomToTopOfView(hintLabel, offset: -80) + .width(80) + .height(80) + + convertBtn.layoutChain + .right(48) + .bottomToView(cancelBtn) + .width(80) + .height(80) + + sendBtn.layoutChain + .right(48) + .bottomToView(cancelBtn) + .width(80) + .height(80) + + bubbleCenterXConstraint = bubbleView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor) + bubbleWidthConstraint = bubbleView.widthAnchor.constraint(equalToConstant: 228) + bubbleHeightConstraint = bubbleView.heightAnchor.constraint(equalToConstant: 58) + NSLayoutConstraint.activate([ + bubbleView.bottomAnchor.constraint(equalTo: cancelBtn.topAnchor, constant: -26), + bubbleCenterXConstraint!, + bubbleWidthConstraint!, + bubbleHeightConstraint! + ]) + + tailCenterXConstraint = tailView.centerXAnchor.constraint(equalTo: bubbleView.centerXAnchor) + NSLayoutConstraint.activate([ + tailView.topAnchor.constraint(equalTo: bubbleView.bottomAnchor, constant: -1), + tailView.widthAnchor.constraint(equalToConstant: 16), + tailView.heightAnchor.constraint(equalToConstant: 9), + tailCenterXConstraint! + ]) + + cancelBtn.configure(title: "取消", normalColor: UIColor(hexStr: "#E4EDF2"), normalTitleColor: UIColor(hexStr: "#2C3A4B")) + convertBtn.configure(title: "转文字", normalColor: UIColor(hexStr: "#E4EDF2"), normalTitleColor: UIColor(hexStr: "#2C3A4B")) + sendBtn.configure(title: "发送", normalColor: UIColor(hexStr: "#4DA3FF"), normalTitleColor: .white) + sendBtn.isHidden = true + } + + private func observeKeyboard() { + keyboardObserver = NotificationCenter.default.addObserver( + forName: UIResponder.keyboardWillChangeFrameNotification, + object: nil, + queue: .main + ) { [weak self] note in + self?.handleKeyboard(note) + } + } + + private func handleKeyboard(_ note: Notification) { + guard !isHidden, phase == .preview || phase == .failed, + let frame = note.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect + else { return } + let duration = (note.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double) ?? 0.25 + let curveRaw = (note.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as? UInt) ?? 7 + let endInView = convert(frame, from: nil) + let overlap = max(0, bounds.maxY - endInView.minY) + UIView.animate(withDuration: duration, delay: 0, options: UIView.AnimationOptions(rawValue: curveRaw << 16)) { + self.contentView.transform = overlap > 0 ? CGAffineTransform(translationX: 0, y: -overlap) : .identity + } + } + + private func apply(phase: Phase, animated: Bool = true) { + let changed = self.phase != phase + self.phase = phase + switch phase { + case .hidden: + dotsView.stop() + case .recording: + hintLabel.text = "松开 发送" + hintLabel.isHidden = false + setBubbleColor(UIColor(hexStr: "#4DA3FF")) + cancelBtn.setEmphasized(false, color: UIColor(hexStr: "#FF3B30")) + convertBtn.setEmphasized(false, color: UIColor(hexStr: "#4DA3FF")) + convertBtn.isHidden = false + sendBtn.isHidden = true + cancelBtn.isUserInteractionEnabled = false + sendBtn.isUserInteractionEnabled = false + layoutRecordingBubble(showText: false) + case .cancelHover: + hintLabel.text = "松开 取消" + hintLabel.isHidden = false + setBubbleColor(UIColor(hexStr: "#FF3B30")) + cancelBtn.setEmphasized(true, color: UIColor(hexStr: "#FF3B30")) + convertBtn.setEmphasized(false, color: UIColor(hexStr: "#4DA3FF")) + convertBtn.isHidden = false + sendBtn.isHidden = true + layoutRecordingBubble(showText: false) + case .convertHover: + hintLabel.text = "松开 编辑文字" + hintLabel.isHidden = false + setBubbleColor(UIColor(hexStr: "#4DA3FF")) + cancelBtn.setEmphasized(false, color: UIColor(hexStr: "#FF3B30")) + convertBtn.setEmphasized(true, color: UIColor(hexStr: "#4DA3FF")) + convertBtn.isHidden = false + sendBtn.isHidden = true + refreshConvertHoverContent() + case .preview: + hintLabel.text = "松开 取消" + hintLabel.isHidden = false + setBubbleColor(UIColor(hexStr: "#4DA3FF")) + cancelBtn.setEmphasized(false, color: UIColor(hexStr: "#FF3B30")) + convertBtn.isHidden = true + sendBtn.isHidden = false + sendBtn.configure(title: "发送", normalColor: UIColor(hexStr: "#4DA3FF"), normalTitleColor: .white) + sendBtn.setEmphasized(false, color: UIColor(hexStr: "#4DA3FF")) + sendBtn.isEnabled = true + cancelBtn.isUserInteractionEnabled = true + sendBtn.isUserInteractionEnabled = true + layoutPreviewBubble(failed: false) + case .failed: + hintLabel.text = "松开 取消" + hintLabel.isHidden = false + setBubbleColor(UIColor(hexStr: "#FF3B30")) + cancelBtn.setEmphasized(false, color: UIColor(hexStr: "#FF3B30")) + convertBtn.isHidden = true + sendBtn.isHidden = false + sendBtn.configure(title: "发送", normalColor: UIColor(hexStr: "#C4473E"), normalTitleColor: .white) + sendBtn.setEmphasized(false, color: UIColor(hexStr: "#C4473E")) + sendBtn.isEnabled = false + cancelBtn.isUserInteractionEnabled = true + sendBtn.isUserInteractionEnabled = false + layoutPreviewBubble(failed: true) + } + let sendScale: CGAffineTransform = phase == .preview + ? CGAffineTransform(scaleX: 1.22, y: 1.22) + : .identity + if animated, changed, phase != .hidden { + UIView.animate(withDuration: 0.18, delay: 0, options: [.allowUserInteraction, .curveEaseOut]) { + self.layoutIfNeeded() + self.sendBtn.transform = sendScale + } + } else { + layoutIfNeeded() + sendBtn.transform = sendScale + } + } + + private func refreshConvertHoverContent() { + textView.text = recognizedText + layoutRecordingBubble(showText: true) + } + + private func layoutRecordingBubble(showText: Bool) { + let showLiveText = showText && !recognizedText.isEmpty + dotsView.isHidden = !showText + if showText { dotsView.start() } else { dotsView.stop() } + textView.isHidden = !showLiveText + textView.isEditable = false + textView.isUserInteractionEnabled = false + textView.textAlignment = .left + editButton.isHidden = true + waveformView.isHidden = false + durationLabel.isHidden = false + durationLabel.textColor = .white + waveformView.barColor = .white + waveformView.style = showText ? .mini : .full + + if showText { + bubbleWidthConstraint?.constant = min(kScreenWidth - 48, 318) + bubbleHeightConstraint?.constant = showLiveText ? 118 : 96 + bubbleView.layer.cornerRadius = 24 + bubbleCenterXConstraint?.constant = 8 + tailCenterXConstraint?.constant = 52 + } else if phase == .cancelHover { + bubbleWidthConstraint?.constant = 228 + bubbleHeightConstraint?.constant = 58 + bubbleView.layer.cornerRadius = 29 + bubbleCenterXConstraint?.constant = -36 + tailCenterXConstraint?.constant = -8 + } else { + bubbleWidthConstraint?.constant = 228 + bubbleHeightConstraint?.constant = 58 + bubbleView.layer.cornerRadius = 29 + bubbleCenterXConstraint?.constant = 0 + tailCenterXConstraint?.constant = 0 + } + installBubbleContentConstraints(showText: showText, preview: false, failed: false) + } + + private func layoutPreviewBubble(failed: Bool) { + dotsView.stop() + dotsView.isHidden = true + textView.isHidden = false + waveformView.isHidden = true + durationLabel.isHidden = true + editButton.isHidden = failed + textView.isEditable = false + textView.isUserInteractionEnabled = !failed + textView.text = failed ? "未识别到文字" : recognizedText + textView.textAlignment = failed ? .center : .left + bubbleWidthConstraint?.constant = min(kScreenWidth - 48, 318) + bubbleHeightConstraint?.constant = failed ? 72 : max(108, previewTextHeight() + 44) + bubbleView.layer.cornerRadius = 24 + bubbleCenterXConstraint?.constant = 8 + tailCenterXConstraint?.constant = 52 + installBubbleContentConstraints(showText: false, preview: true, failed: failed) + } + + private func previewTextHeight() -> CGFloat { + let width = min(kScreenWidth - 48, 318) - 52 + let text = recognizedText as NSString + let rect = text.boundingRect( + with: CGSize(width: width, height: 160), + options: [.usesLineFragmentOrigin, .usesFontLeading], + attributes: [.font: UIFont.systemFont(ofSize: 18, weight: .medium)], + context: nil + ) + return ceil(rect.height) + } + + private func installBubbleContentConstraints(showText: Bool, preview: Bool, failed: Bool) { + NSLayoutConstraint.deactivate(bubbleContentConstraints) + bubbleContentConstraints.removeAll() + + if preview { + if failed { + bubbleContentConstraints.append(contentsOf: [ + textView.leadingAnchor.constraint(equalTo: bubbleView.leadingAnchor, constant: 18), + textView.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -18), + textView.centerYAnchor.constraint(equalTo: bubbleView.centerYAnchor) + ]) + } else { + bubbleContentConstraints.append(contentsOf: [ + textView.leadingAnchor.constraint(equalTo: bubbleView.leadingAnchor, constant: 18), + textView.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -44), + textView.topAnchor.constraint(equalTo: bubbleView.topAnchor, constant: 16), + editButton.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -18), + editButton.bottomAnchor.constraint(equalTo: bubbleView.bottomAnchor, constant: -16), + editButton.widthAnchor.constraint(equalToConstant: 22), + editButton.heightAnchor.constraint(equalToConstant: 22) + ]) + } + } else if showText { + bubbleContentConstraints.append(contentsOf: [ + dotsView.leadingAnchor.constraint(equalTo: bubbleView.leadingAnchor, constant: 18), + dotsView.topAnchor.constraint(equalTo: bubbleView.topAnchor, constant: 18), + dotsView.widthAnchor.constraint(equalToConstant: 28), + dotsView.heightAnchor.constraint(equalToConstant: 10), + textView.leadingAnchor.constraint(equalTo: dotsView.trailingAnchor, constant: 8), + textView.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -18), + textView.centerYAnchor.constraint(equalTo: dotsView.centerYAnchor), + durationLabel.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -16), + durationLabel.bottomAnchor.constraint(equalTo: bubbleView.bottomAnchor, constant: -14), + waveformView.trailingAnchor.constraint(equalTo: durationLabel.leadingAnchor, constant: -8), + waveformView.centerYAnchor.constraint(equalTo: durationLabel.centerYAnchor), + waveformView.widthAnchor.constraint(equalToConstant: 92), + waveformView.heightAnchor.constraint(equalToConstant: 16) + ]) + } else { + bubbleContentConstraints.append(contentsOf: [ + durationLabel.trailingAnchor.constraint(equalTo: bubbleView.trailingAnchor, constant: -16), + durationLabel.centerYAnchor.constraint(equalTo: bubbleView.centerYAnchor), + waveformView.leadingAnchor.constraint(equalTo: bubbleView.leadingAnchor, constant: 18), + waveformView.trailingAnchor.constraint(equalTo: durationLabel.leadingAnchor, constant: -8), + waveformView.centerYAnchor.constraint(equalTo: bubbleView.centerYAnchor), + waveformView.heightAnchor.constraint(equalToConstant: 28) + ]) + } + NSLayoutConstraint.activate(bubbleContentConstraints) + } + + private func setBubbleColor(_ color: UIColor) { + bubbleView.backgroundColor = color + tailView.fillColor = color + } + +} + +final class VoiceRecordHillView: UIView { + private let gradientLayer = CAGradientLayer() + private let rimLayer = CAShapeLayer() - // MARK: - Init override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .clear - - addSubview(bgView) - bgView.addSubview(topContainer) - topContainer.addSubview(keyboardBtn) - topContainer.addSubview(titleView) - topContainer.addSubview(emojiBtn) - topContainer.addSubview(addBtn) - - bgView.addSubview(containerView) - containerView.addSubview(tipsLab) - containerView.addSubview(speakBtn) - containerView.addSubview(speakingImgView) - containerView.addSubview(cancelLab) - containerView.addSubview(cancelBtn) - - bgView.layoutChain.edges() - - topContainer.layoutChain - .edges(excludingEdge: .bottom) - .height(58) - - keyboardBtn.layoutChain - .left(22) - .centerY() - .width(36) - .height(36) - - addBtn.layoutChain - .right(22) - .centerY() - .width(24) - .height(24) - - emojiBtn.layoutChain - .rightToLeftOfView(addBtn, offset: -8) - .centerY() - .width(24) - .height(24) - - titleView.layoutChain - .top(10) - .leftToRightOfView(keyboardBtn, offset: 7) - .rightToLeftOfView(emojiBtn, offset: -12) - .bottom(10) - - containerView.layoutChain - .topToBottomOfView(topContainer, offset: 0) - .edges(excludingEdge: .top) - - tipsLab.layoutChain - .top(18) - .centerX() - - speakBtn.layoutChain - .height(96) - .widthToHeight(1) - .centerY() - .centerX() - - speakingImgView.layoutChain - .topToView(speakBtn, offset: -6) - .leftToView(speakBtn, offset: -6) - .rightToView(speakBtn, offset: 6) - .bottomToView(speakBtn, offset: 6) - - cancelBtn.layoutChain - .rightToLeftOfView(speakBtn, offset: -47) - .centerY(speakBtn) - .width(41) - .heightToWidth(1) - - cancelLab.layoutChain - .bottomToTopOfView(cancelBtn, offset: -7) - .centerX(cancelBtn) + isOpaque = false + clipsToBounds = true + gradientLayer.colors = [ + UIColor(white: 0.455, alpha: 1).cgColor, + UIColor(white: 0.75, alpha: 1).cgColor + ] + gradientLayer.startPoint = CGPoint(x: 0.5, y: 0) + gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.26) + layer.addSublayer(gradientLayer) + rimLayer.fillColor = UIColor.clear.cgColor + rimLayer.strokeColor = UIColor.white.withAlphaComponent(0.92).cgColor + rimLayer.lineWidth = 1.5 + layer.addSublayer(rimLayer) } required init?(coder: NSCoder) { @@ -230,33 +599,318 @@ final class VoiceRecordView: UIView { override func layoutSubviews() { super.layoutSubviews() - topContainer.setNeedsLayout() - topContainer.layoutIfNeeded() - topContainer.setCornerRadius(corners: [.topRight, .topLeft], withCornerRadii: CGSize(width: 20, height: 20)) + layer.cornerRadius = bounds.width / 2 + gradientLayer.frame = bounds + rimLayer.frame = bounds + rimLayer.path = UIBezierPath(ovalIn: bounds.insetBy(dx: 1, dy: 1)).cgPath } } -extension VoiceRecordView { - func startRotating() { - guard speakingImgView.isHidden == true else { return } - speakingImgView.isHidden = false - // 避免重复添加动画 - speakingImgView.layer.removeAnimation(forKey: "rotationAnimation") - - let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z") - rotationAnimation.fromValue = 0 - rotationAnimation.toValue = Double.pi * 2 // 360° - rotationAnimation.duration = 1.0 - rotationAnimation.repeatCount = .infinity // 无限循环 - rotationAnimation.isRemovedOnCompletion = false - rotationAnimation.fillMode = .forwards - - speakingImgView.layer.add(rotationAnimation, forKey: "rotationAnimation") +final class VoiceRecordCircleButton: UIButton { + private let ringView: UIView = { + let view = UIView() + view.backgroundColor = .clear + view.layer.borderWidth = 8 + view.isHidden = true + view.isUserInteractionEnabled = false + return view + }() + + private var normalColor: UIColor = UIColor(hexStr: "#F3F6F8") + private var normalTitleColor: UIColor = UIColor(hexStr: "#2C3A4B") + + override init(frame: CGRect) { + super.init(frame: frame) + titleLabel?.font = .systemFont(ofSize: 17, weight: .medium) + layer.masksToBounds = false + addSubview(ringView) + ringView.translatesAutoresizingMaskIntoConstraints = false + ringView.layoutChain + .centerX() + .centerY() + .widthToView(self, offset: 22) + .heightToView(self, offset: 22) } - - func stopRotating() { - tipsLab.text = " " - speakingImgView.isHidden = true - speakingImgView.layer.removeAnimation(forKey: "rotationAnimation") + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + layer.cornerRadius = min(bounds.width, bounds.height) / 2 + ringView.layer.cornerRadius = min(ringView.bounds.width, ringView.bounds.height) / 2 + } + + func configure(title: String, normalColor: UIColor, normalTitleColor: UIColor) { + self.normalColor = normalColor + self.normalTitleColor = normalTitleColor + setTitle(title, for: .normal) + setTitleColor(normalTitleColor, for: .normal) + backgroundColor = normalColor + } + + func setEmphasized(_ emphasized: Bool, color: UIColor) { + if emphasized { + backgroundColor = color + setTitleColor(.white, for: .normal) + ringView.isHidden = false + ringView.layer.borderColor = color.withAlphaComponent(0.35).cgColor + transform = CGAffineTransform(scaleX: 1.16, y: 1.16) + } else { + backgroundColor = normalColor + setTitleColor(normalTitleColor, for: .normal) + ringView.isHidden = true + transform = .identity + } + } +} + +final class VoiceBubbleTailView: UIView { + var fillColor: UIColor = UIColor(hexStr: "#4DA3FF") { + didSet { setNeedsDisplay() } + } + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + isOpaque = false + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func draw(_ rect: CGRect) { + let path = UIBezierPath() + path.move(to: CGPoint(x: 0, y: 0)) + path.addLine(to: CGPoint(x: rect.maxX, y: 0)) + path.addLine(to: CGPoint(x: rect.midX, y: rect.maxY)) + path.close() + fillColor.setFill() + path.fill() + } +} + +final class VoiceRecordWaveformView: UIView { + enum Style { + case full + case mini + } + + var style: Style = .full { + didSet { setNeedsDisplay() } + } + + private var levels: [CGFloat] = Array(repeating: 0.18, count: 21) + var barColor: UIColor = .white { + didSet { setNeedsDisplay() } + } + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + isOpaque = false + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func push(level: CGFloat) { + levels.removeFirst() + levels.append(min(1, max(0.12, level))) + setNeedsDisplay() + } + + func reset() { + levels = Array(repeating: 0.18, count: 21) + setNeedsDisplay() + } + + override func draw(_ rect: CGRect) { + guard let context = UIGraphicsGetCurrentContext(), !levels.isEmpty else { return } + let count = levels.count + let mid = CGFloat(count - 1) / 2 + let spacing = rect.width / CGFloat(count) + for (index, level) in levels.enumerated() { + let dist = abs(CGFloat(index) - mid) / mid + let envelope = CGFloat(exp(-Double(dist * dist * 3.8))) + let height = max(style == .mini ? 3 : 4, rect.height * envelope * max(level, 0.16)) + let x = CGFloat(index) * spacing + spacing / 2 + let lineWidth: CGFloat + if dist < 0.12 { + lineWidth = style == .mini ? 3.2 : 5 + } else if dist < 0.38 { + lineWidth = style == .mini ? 2.4 : 3.4 + } else { + lineWidth = style == .mini ? 2 : 2.6 + } + context.setStrokeColor(barColor.withAlphaComponent(0.45 + 0.55 * envelope).cgColor) + context.setLineWidth(lineWidth) + context.setLineCap(.round) + context.move(to: CGPoint(x: x, y: rect.midY - height / 2)) + context.addLine(to: CGPoint(x: x, y: rect.midY + height / 2)) + context.strokePath() + } + } +} + +final class VoiceRecordingDotsView: UIView { + private let dots = [UIView(), UIView(), UIView()] + private var isAnimating = false + + override init(frame: CGRect) { + super.init(frame: frame) + dots.enumerated().forEach { index, dot in + dot.backgroundColor = UIColor.white.withAlphaComponent(index == 0 ? 1 : 0.55) + dot.layer.cornerRadius = 3 + addSubview(dot) + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + let size: CGFloat = 6 + let gap: CGFloat = 5 + dots.enumerated().forEach { index, dot in + dot.frame = CGRect(x: CGFloat(index) * (size + gap), y: (bounds.height - size) / 2, width: size, height: size) + } + } + + func start() { + guard !isAnimating else { return } + isAnimating = true + animateDots() + } + + func stop() { + isAnimating = false + layer.removeAllAnimations() + dots.forEach { $0.layer.removeAllAnimations() } + dots.enumerated().forEach { index, dot in + dot.alpha = index == 0 ? 1 : 0.55 + } + } + + private func animateDots() { + guard isAnimating else { return } + for (index, dot) in dots.enumerated() { + UIView.animate(withDuration: 0.35, delay: Double(index) * 0.12, options: [.repeat, .autoreverse]) { + dot.alpha = 0.25 + } + } + } +} + +final class ChatVoiceCapture: @unchecked Sendable { + private let engine = AVAudioEngine() + private var audioFile: AVAudioFile? + private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest? + private var recognitionTask: SFSpeechRecognitionTask? + private let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "zh-CN")) + private var startDate: Date? + private var tapInstalled = false + + private(set) var latestText = "" + var onLevel: ((CGFloat) -> Void)? + var onPartialText: ((String) -> Void)? + + var duration: Int { + guard let startDate else { return 0 } + return max(0, Int(Date().timeIntervalSince(startDate))) + } + + func start(fileURL: URL, enableSpeech: Bool) throws { + stop(finishRecognition: false) + latestText = "" + startDate = Date() + + let session = AVAudioSession.sharedInstance() + try session.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth]) + try session.setActive(true, options: .notifyOthersOnDeactivation) + + let input = engine.inputNode + let format = input.outputFormat(forBus: 0) + guard format.sampleRate > 0, format.channelCount > 0 else { + throw NSError(domain: "ChatVoiceCapture", code: -1, userInfo: [NSLocalizedDescriptionKey: "invalid audio format"]) + } + + audioFile = try AVAudioFile(forWriting: fileURL, settings: format.settings) + + if enableSpeech, let recognizer, recognizer.isAvailable { + let request = SFSpeechAudioBufferRecognitionRequest() + request.shouldReportPartialResults = true + request.taskHint = .dictation + recognitionRequest = request + recognitionTask = recognizer.recognitionTask(with: request) { [weak self] result, _ in + guard let text = result?.bestTranscription.formattedString, !text.isEmpty else { return } + DispatchQueue.main.async { + self?.latestText = text + self?.onPartialText?(text) + } + } + } + + input.installTap(onBus: 0, bufferSize: 1024, format: format) { [weak self] buffer, _ in + guard let self else { return } + try? self.audioFile?.write(from: buffer) + self.recognitionRequest?.append(buffer) + let level = ChatVoiceCapture.rms(from: buffer) + DispatchQueue.main.async { + self.onLevel?(level) + } + } + tapInstalled = true + engine.prepare() + try engine.start() + } + + func stop(finishRecognition: Bool) { + if tapInstalled { + engine.inputNode.removeTap(onBus: 0) + tapInstalled = false + } + if engine.isRunning { + engine.stop() + } + if finishRecognition { + recognitionRequest?.endAudio() + recognitionRequest = nil + } else { + recognitionTask?.cancel() + recognitionRequest = nil + recognitionTask = nil + latestText = "" + } + audioFile = nil + startDate = nil + try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) + } + + static func rms(from buffer: AVAudioPCMBuffer) -> CGFloat { + let n = Int(buffer.frameLength) + guard n > 0 else { return 0.12 } + if let data = buffer.floatChannelData?[0] { + var sum: Float = 0 + for i in 0.. Void)? + + private let collectionLayout = CollectionHFlowLayout() + private lazy var collectionView = UICollectionView(frame: .zero, collectionViewLayout: collectionLayout) + + private let bgView: UIView = { + let view = UIView() + view.backgroundColor = .black.withAlphaComponent(0.5) + return view + }() + + private let previewView: LottieAnimationView = { + let view = LottieAnimationView() + view.contentMode = .scaleAspectFit + view.loopMode = .loop + view.backgroundBehavior = .pauseAndRestore + view.isUserInteractionEnabled = false + return view + }() + + private let infoView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.layer.cornerRadius = 28 + view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + view.clipsToBounds = true + return view + }() + + private let titleLab: UILabel = { + let label = UILabel() + label.text = "实时表情" + label.textColor = UIColor(hexStr: "#293445") + label.font = .systemFont(ofSize: 18, weight: .bold) + label.textAlignment = .center + return label + }() + + private let pageControl: UIPageControl = { + let control = UIPageControl() + control.isUserInteractionEnabled = false + control.currentPageIndicatorTintColor = UIColor(hexStr: "#16B3FF") + control.pageIndicatorTintColor = UIColor(hexStr: "#7AD6FF", alpha: 0.4) + return control + }() + + private lazy var cancelBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("取消", for: .normal) + btn.setTitleColor(Self.primaryBlue, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.backgroundColor = .white + btn.cornerRadius = 16 + btn.layer.borderWidth = 1 + btn.layer.borderColor = Self.primaryBlue.cgColor + btn.addTarget(self, action: #selector(cancelAction), for: .touchUpInside) + return btn + }() + + private lazy var confirmBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("确定", for: .normal) + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.backgroundColor = Self.primaryBlue + btn.cornerRadius = 16 + btn.addTarget(self, action: #selector(confirmAction), for: .touchUpInside) + return btn + }() + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + updateGridLayout() + if collectionView.bounds.width > 1, collectionView.contentSize.width < 1, !names.isEmpty { + collectionLayout.invalidateLayout() + collectionView.reloadData() + } + } + + private func setupUI() { + addSubview(bgView) + addSubview(previewView) + addSubview(infoView) + bgView.layoutChain.edges() + + infoView.addSubview(titleLab) + infoView.addSubview(collectionView) + infoView.addSubview(pageControl) + infoView.addSubview(cancelBtn) + infoView.addSubview(confirmBtn) + + infoView.layoutChain + .bottom() + .edgesHorzontal() + + titleLab.layoutChain + .top(22) + .edgesHorzontal(20) + .height(24) + + cancelBtn.layoutChain + .left(20) + .bottom(20 + kSafeBottomMargin) + .height(44) + .widthToView(confirmBtn) + + confirmBtn.layoutChain + .leftToRightOfView(cancelBtn, offset: 12) + .right(20) + .bottomToView(cancelBtn) + .height(44) + + pageControl.layoutChain + .centerX() + .bottomToTopOfView(cancelBtn, offset: -10) + .height(16) + + collectionLayout.rows = 3 + collectionLayout.colums = 4 + applyGridLayout(for: kScreenWidth - 32) + collectionView.backgroundColor = .clear + collectionView.isPagingEnabled = true + collectionView.bounces = false + collectionView.showsHorizontalScrollIndicator = false + collectionView.dataSource = self + collectionView.delegate = self + collectionView.register(AddEmojiCell.self) + collectionView.layoutChain + .topToBottomOfView(titleLab, offset: 16) + .edgesHorzontal(16) + .height(236) + .bottomToTopOfView(pageControl, offset: -4) + + previewView.layoutChain + .centerX() + .bottomToTopOfView(infoView, offset: -36) + .width(148) + .height(148) + + let tap = UITapGestureRecognizer(target: self, action: #selector(cancelAction)) + tap.delegate = self + addGestureRecognizer(tap) + } + + private func resetSelection() { + selectedName = names.first + pageControl.numberOfPages = max((names.count + 11) / 12, 1) + pageControl.currentPage = 0 + lastLayoutWidth = 0 + reloadGrid() + updatePreview(with: selectedName) + } + + private func reloadGrid() { + updateGridLayout() + collectionLayout.invalidateLayout() + collectionView.reloadData() + collectionView.layoutIfNeeded() + collectionView.setContentOffset(.zero, animated: false) + } + + private func updateGridLayout() { + let collectionWidth = collectionView.bounds.width + let width = collectionWidth > 1 ? collectionWidth : max(bounds.width - 32, kScreenWidth - 32) + guard width > 1 else { return } + applyGridLayout(for: width) + if collectionWidth > 1 { + lastLayoutWidth = collectionWidth + } + } + + private func applyGridLayout(for width: CGFloat) { + let columns: CGFloat = 4 + let rows: CGFloat = 3 + let inset = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4) + let hSpacing: CGFloat = 20 + let vSpacing: CGFloat = 10 + let itemWidth = floor((width - inset.left - inset.right - hSpacing * (columns - 1)) / columns) + let collectionHeight = collectionView.bounds.height > 1 ? collectionView.bounds.height : 236 + let itemHeight = floor((collectionHeight - inset.top - inset.bottom - vSpacing * (rows - 1)) / rows) + collectionLayout.itemSize = CGSize(width: max(itemWidth, 1), height: max(itemHeight, 1)) + collectionLayout.hSpacing = hSpacing + collectionLayout.vSpacing = vSpacing + collectionLayout.sectionInset = inset + } + + private func updatePreview(with name: String?) { + guard let name else { + previewName = nil + previewView.stop() + previewView.animation = nil + return + } + if previewName == name, previewView.animation != nil { + if !previewView.isAnimationPlaying { + previewView.play() + } + return + } + previewName = name + previewView.stop() + previewView.animation = nil + EmojiPanelCell.loadAnimation(for: name) { [weak self] animation in + guard let self, self.previewName == name else { return } + self.previewView.animation = animation + self.previewView.currentProgress = 0 + self.previewView.play() + } + } + + private func stopPreview() { + previewName = nil + previewView.stop() + previewView.animation = nil + } + + private func slideOffTransform() -> CGAffineTransform { + layoutIfNeeded() + return CGAffineTransform(translationX: 0, y: max(infoView.bounds.height, kScreenHeight * 0.4)) + } + + @objc private func cancelAction() { + completion?(nil) + } + + @objc private func confirmAction() { + completion?(selectedName) + } +} + +extension AddEmojiPopView { + static func show(completion: @escaping (String?) -> Void) { + guard let superView = kKeyWindow else { return } + let pop = AddEmojiPopView.shared + if pop.superview != nil { + pop.removeFromSuperview() + } + pop.frame = CGRect(x: 0, y: 0, width: kScreenWidth, height: kScreenHeight) + pop.completion = { name in + completion(name) + AddEmojiPopView.dismiss() + } + pop.bgView.alpha = 0 + pop.previewView.alpha = 0 + superView.addSubview(pop) + superView.bringSubviewToFront(pop) + pop.setNeedsLayout() + pop.layoutIfNeeded() + pop.resetSelection() + pop.infoView.transform = pop.slideOffTransform() + UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { + pop.bgView.alpha = 1 + pop.previewView.alpha = 1 + pop.infoView.transform = .identity + } + DispatchQueue.main.async { + pop.reloadGrid() + } + } + + static func dismiss() { + let pop = AddEmojiPopView.shared + guard pop.superview != nil else { return } + UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseIn]) { + pop.bgView.alpha = 0 + pop.previewView.alpha = 0 + pop.infoView.transform = pop.slideOffTransform() + } completion: { _ in + pop.stopPreview() + pop.infoView.transform = .identity + pop.removeFromSuperview() + } + } +} + +extension AddEmojiPopView: UIGestureRecognizerDelegate { + func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { + touch.view == self || touch.view == bgView + } +} + +extension AddEmojiPopView: UICollectionViewDataSource, UICollectionViewDelegate { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + names.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: AddEmojiCell = collectionView.dequeueReusableCell(for: indexPath) + let name = names[indexPath.item] + cell.configure(image: InteractionEmojiCell.pngImage(named: name), selected: name == selectedName) + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + selectedName = names[indexPath.item] + collectionView.reloadData() + updatePreview(with: selectedName) + } + + func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { + guard scrollView.bounds.width > 0 else { return } + pageControl.currentPage = Int(round(scrollView.contentOffset.x / scrollView.bounds.width)) + } +} + +final class AddEmojiCell: UICollectionViewCell { + private let imageView = UIImageView() + + override init(frame: CGRect) { + super.init(frame: frame) + contentView.backgroundColor = UIColor(hexStr: "#F7F8FA") + contentView.layer.cornerRadius = 16 + contentView.layer.borderWidth = 2 + contentView.layer.borderColor = UIColor.clear.cgColor + contentView.clipsToBounds = true + imageView.contentMode = .scaleAspectFit + contentView.addSubview(imageView) + imageView.layoutChain.edges(all: 6) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(image: UIImage?, selected: Bool) { + imageView.image = image + contentView.layer.borderColor = selected ? UIColor(hexStr: "#16B3FF").cgColor : UIColor.clear.cgColor + contentView.backgroundColor = selected ? UIColor(hexStr: "#F3FBFF") : UIColor(hexStr: "#F7F8FA") + } +} + + +final class ReceivedEmojiPopView { + + private static let emojiView: LottieAnimationView = { + let view = LottieAnimationView() + view.contentMode = .scaleAspectFit + view.loopMode = .playOnce + view.backgroundBehavior = .pauseAndRestore + view.isUserInteractionEnabled = false + view.isHidden = true + return view + }() + + static func show(name: String) { + guard let window = kKeyWindow else { return } + let view = emojiView + if view.superview != window { + view.removeFromSuperview() + window.addSubview(view) + view.layoutChain + .centerX() + .centerY() + .width(180) + .height(180) + } + window.bringSubviewToFront(view) + view.stop() + view.animation = nil + view.isHidden = false + EmojiPanelCell.loadAnimation(for: name) { animation in + guard view.superview != nil else { return } + view.animation = animation + view.currentProgress = 0 + view.play { finished in + guard finished else { return } + view.isHidden = true + view.animation = nil + } + } + } +} diff --git a/QuickLocation/Section/Home/AddMessagePopView.swift b/QuickLocation/Section/Home/AddMessagePopView.swift new file mode 100644 index 00000000..5090ef4b --- /dev/null +++ b/QuickLocation/Section/Home/AddMessagePopView.swift @@ -0,0 +1,349 @@ +// +// AddMessagePopView.swift +// QuickLocation +// + +import UIKit + +final class AddMessagePopView: UIView { + + private static let shared = AddMessagePopView(frame: CGRect(origin: .zero, size: kScreenSize)) + private static let primaryBlue = UIColor(hexStr: "#16B3FF") + + private let messages = QuickMessageView.messageList + private var selectedIndex: Int = 0 + private var completion: ((Int?) -> Void)? + + private let bgView: UIView = { + let view = UIView() + view.backgroundColor = .black.withAlphaComponent(0.5) + return view + }() + + private let infoView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.layer.cornerRadius = 28 + view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + view.clipsToBounds = true + return view + }() + + private let titleLab: UILabel = { + let label = UILabel() + label.text = "实时消息" + label.textColor = UIColor(hexStr: "#293445") + label.font = .systemFont(ofSize: 18, weight: .bold) + label.textAlignment = .center + return label + }() + + private let stackView: UIStackView = { + let stack = UIStackView() + stack.axis = .vertical + stack.alignment = .leading + stack.spacing = 12 + return stack + }() + + private lazy var cancelBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("取消", for: .normal) + btn.setTitleColor(Self.primaryBlue, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.backgroundColor = .white + btn.cornerRadius = 16 + btn.layer.borderWidth = 1 + btn.layer.borderColor = Self.primaryBlue.cgColor + btn.addTarget(self, action: #selector(cancelAction), for: .touchUpInside) + return btn + }() + + private lazy var confirmBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setTitle("确定", for: .normal) + btn.setTitleColor(.white, for: .normal) + btn.titleLabel?.font = FontManager.boboBold(18) + btn.backgroundColor = Self.primaryBlue + btn.cornerRadius = 16 + btn.addTarget(self, action: #selector(confirmAction), for: .touchUpInside) + return btn + }() + + override init(frame: CGRect) { + super.init(frame: frame) + backgroundColor = .clear + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setupUI() { + addSubview(bgView) + addSubview(infoView) + bgView.layoutChain.edges() + + infoView.addSubview(titleLab) + infoView.addSubview(stackView) + infoView.addSubview(cancelBtn) + infoView.addSubview(confirmBtn) + + infoView.layoutChain + .bottom() + .edgesHorzontal() + + titleLab.layoutChain + .top(22) + .edgesHorzontal(20) + .height(24) + + cancelBtn.layoutChain + .left(20) + .bottom(20 + kSafeBottomMargin) + .height(44) + .widthToView(confirmBtn) + + confirmBtn.layoutChain + .leftToRightOfView(cancelBtn, offset: 12) + .right(20) + .bottomToView(cancelBtn) + .height(44) + + stackView.layoutChain + .topToBottomOfView(titleLab, offset: 20) + .left(20) + .right(20) + .bottomToTopOfView(cancelBtn, offset: -20) + + for (index, text) in messages.enumerated() { + let button = UIButton(type: .custom) + button.tag = index + var configuration = UIButton.Configuration.plain() + configuration.title = text + configuration.baseForegroundColor = UIColor(hexStr: "#293445") + configuration.contentInsets = NSDirectionalEdgeInsets(top: 10, leading: 16, bottom: 10, trailing: 16) + configuration.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { incoming in + var outgoing = incoming + outgoing.font = .systemFont(ofSize: 15, weight: .medium) + return outgoing + } + button.configuration = configuration + button.layer.cornerRadius = 10 + button.layer.borderWidth = 1 + button.addTarget(self, action: #selector(selectMessage(_:)), for: .touchUpInside) + stackView.addArrangedSubview(button) + } + + let tap = UITapGestureRecognizer(target: self, action: #selector(cancelAction)) + tap.delegate = self + addGestureRecognizer(tap) + } + + private func resetSelection() { + selectedIndex = 0 + refreshButtons() + updatePreview() + } + + private func refreshButtons() { + for (index, view) in stackView.arrangedSubviews.enumerated() { + guard let button = view as? UIButton else { continue } + let selected = index == selectedIndex + var configuration = button.configuration + configuration?.baseForegroundColor = selected ? Self.primaryBlue : UIColor(hexStr: "#293445") + button.configuration = configuration + button.backgroundColor = selected ? UIColor(hexStr: "#F3FBFF") : UIColor(hexStr: "#F5F6F8") + button.layer.borderColor = (selected ? Self.primaryBlue : UIColor.clear).cgColor + } + } + + private func slideOffTransform() -> CGAffineTransform { + layoutIfNeeded() + return CGAffineTransform(translationX: 0, y: max(infoView.bounds.height, kScreenHeight * 0.4)) + } + + private func updatePreview() { + guard messages.indices.contains(selectedIndex) else { return } + ReceivedMessagePopView.showPreview(text: messages[selectedIndex]) + } + + @objc private func selectMessage(_ sender: UIButton) { + selectedIndex = sender.tag + refreshButtons() + updatePreview() + } + + @objc private func cancelAction() { + completion?(nil) + } + + @objc private func confirmAction() { + completion?(selectedIndex) + } +} + +extension AddMessagePopView { + static func show(completion: @escaping (Int?) -> Void) { + guard let superView = kKeyWindow else { return } + let pop = AddMessagePopView.shared + if pop.superview != nil { + pop.removeFromSuperview() + } + pop.frame = CGRect(x: 0, y: 0, width: kScreenWidth, height: kScreenHeight) + pop.completion = { index in + completion(index) + AddMessagePopView.dismiss() + } + pop.bgView.alpha = 0 + superView.addSubview(pop) + superView.bringSubviewToFront(pop) + pop.layoutIfNeeded() + pop.resetSelection() + pop.infoView.transform = pop.slideOffTransform() + UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { + pop.bgView.alpha = 1 + pop.infoView.transform = .identity + } + } + + static func dismiss() { + let pop = AddMessagePopView.shared + guard pop.superview != nil else { return } + ReceivedMessagePopView.dismissPreview() + UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseIn]) { + pop.bgView.alpha = 0 + pop.infoView.transform = pop.slideOffTransform() + } completion: { _ in + pop.infoView.transform = .identity + pop.removeFromSuperview() + } + } +} + +extension AddMessagePopView: UIGestureRecognizerDelegate { + func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { + touch.view == self || touch.view == bgView + } +} + + + +final class ReceivedMessagePopView { + + private static let banner: UIView = { + let view = UIView() + view.backgroundColor = UIColor.white.withAlphaComponent(0.92) + view.layer.cornerRadius = 10 + view.isHidden = true + view.isUserInteractionEnabled = false + view.addSubview(messageLab) + messageLab.layoutChain.edges(all: 12) + return view + }() + + private static let messageLab: UILabel = { + let label = UILabel() + label.font = .systemFont(ofSize: 12, weight: .medium) + label.textColor = UIColor(hexStr: "#0F2846") + label.numberOfLines = 2 + return label + }() + + private static var hideWorkItem: DispatchWorkItem? + private static var isPreview = false + private static var showToken = 0 + private static var didInstallConstraints = false + + static func showPreview(text: String) { + let attr = NSAttributedString( + string: text, + attributes: [ + .font: UIFont.systemFont(ofSize: 12, weight: .medium), + .foregroundColor: UIColor(hexStr: "#0F2846") + ] + ) + isPreview = true + show(attributed: attr, autoHide: false) + } + + static func showIncoming(nickName: String, message: String) { + let name = nickName.isEmpty ? "成员" : nickName + let prefix = "对你说:" + let fullText = name + prefix + message + let attr = NSMutableAttributedString(string: fullText) + let fullRange = NSRange(location: 0, length: (fullText as NSString).length) + let nameRange = NSRange(location: 0, length: (name as NSString).length) + attr.addAttribute(.font, value: UIFont.systemFont(ofSize: 12, weight: .medium), range: fullRange) + attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#333333"), range: fullRange) + attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#16B3FF"), range: nameRange) + isPreview = false + show(attributed: attr, autoHide: true) + } + + static func dismissPreview() { + guard isPreview else { return } + dismiss() + } + + static func dismiss() { + hideWorkItem?.cancel() + hideWorkItem = nil + isPreview = false + guard banner.superview != nil, !banner.isHidden else { return } + showToken += 1 + let token = showToken + UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseIn]) { + banner.transform = CGAffineTransform(translationX: 0, y: -90) + banner.alpha = 0 + } completion: { finished in + guard finished, token == showToken else { return } + banner.isHidden = true + banner.alpha = 1 + banner.transform = .identity + } + } + + private static func show(attributed: NSAttributedString, autoHide: Bool) { + guard let window = kKeyWindow else { return } + hideWorkItem?.cancel() + hideWorkItem = nil + showToken += 1 + let token = showToken + let view = banner + if view.superview != window { + view.removeFromSuperview() + didInstallConstraints = false + window.addSubview(view) + } + if !didInstallConstraints { + view.layoutChain + .top(kStatusBarHeight) + .centerX() + view.widthAnchor.constraint(lessThanOrEqualToConstant: kScreenWidth - 30).isActive = true + didInstallConstraints = true + } + window.bringSubviewToFront(view) + messageLab.attributedText = attributed + messageLab.preferredMaxLayoutWidth = kScreenWidth - 54 + let shouldAnimateIn = view.isHidden || view.alpha < 1 + view.isHidden = false + view.alpha = 1 + if shouldAnimateIn { + view.transform = CGAffineTransform(translationX: 0, y: -90) + UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseOut]) { + view.transform = .identity + } + } else { + view.transform = .identity + } + guard autoHide else { return } + let work = DispatchWorkItem { + guard token == showToken else { return } + dismiss() + } + hideWorkItem = work + DispatchQueue.main.asyncAfter(deadline: .now() + 5, execute: work) + } +} diff --git a/QuickLocation/Section/Home/GroupListPopView.swift b/QuickLocation/Section/Home/GroupListPopView.swift index fa7806e6..e0f2247e 100644 --- a/QuickLocation/Section/Home/GroupListPopView.swift +++ b/QuickLocation/Section/Home/GroupListPopView.swift @@ -11,10 +11,10 @@ class GroupListPopView: UIView { private static let shared = GroupListPopView(frame: CGRect(origin: .zero, size: kScreenSize)) - private static let rowHeight: CGFloat = 72 + private static let rowHeight: CGFloat = 80 private static let maxVisibleRows = 3 private static let primaryBlue = UIColor(hexStr: "#16B3FF") - private static let cardBg = UIColor(hexStr: "#F5FBFF") + private static let cardBg = UIColor(hexStr: "#E3F6FF") private static let tagBg = UIColor(hexStr: "#FFF9DD") private static let tagText = UIColor(hexStr: "#D5923F") @@ -65,7 +65,7 @@ class GroupListPopView: UIView { bg.backgroundColor = UIColor(hexStr: "#FDFDFD") view.addSubview(bg) bg.layoutChain - .top(80) + .top(88) .edges(excludingEdge: .top) return view @@ -74,8 +74,8 @@ class GroupListPopView: UIView { lazy var headerImageView: UIImageView = { let view = UIImageView() view.image = UIImage(named: "Home/group_list_header") - view.contentMode = .scaleAspectFill - view.clipsToBounds = true + view.contentMode = .scaleAspectFit + view.clipsToBounds = false return view }() @@ -99,7 +99,7 @@ class GroupListPopView: UIView { btn.setTitleColor(Self.primaryBlue, for: .normal) btn.titleLabel?.font = FontManager.boboBold(18) btn.backgroundColor = .white - btn.cornerRadius = 16 + btn.cornerRadius = 25 btn.layer.borderWidth = 1 btn.layer.borderColor = Self.primaryBlue.cgColor btn.addTarget(self, action: #selector(cancelAction), for: .touchUpInside) @@ -112,7 +112,7 @@ class GroupListPopView: UIView { btn.setTitleColor(.white, for: .normal) btn.titleLabel?.font = FontManager.boboBold(18) btn.backgroundColor = Self.primaryBlue - btn.cornerRadius = 16 + btn.cornerRadius = 25 btn.addTarget(self, action: #selector(confirmAction), for: .touchUpInside) return btn }() @@ -137,19 +137,19 @@ class GroupListPopView: UIView { headerImageView.layoutChain .top() .edgesHorzontal() - .heightToWidth(127/375) + .heightToWidth(271.0 / 750.0) cancelBtn.layoutChain .left(20) .bottom(20 + kSafeBottomMargin) - .height(44) + .height(50) .widthToView(confirmBtn) confirmBtn.layoutChain .leftToRightOfView(cancelBtn, offset: 12) .right(20) .bottomToView(cancelBtn) - .height(44) + .height(50) tableView.layoutChain .topToBottomOfView(headerImageView, offset: -20) @@ -245,7 +245,10 @@ extension GroupListPopView: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: GroupListCell = tableView.dequeueReusableCell(for: indexPath) let model = groupList[indexPath.row] - cell.configure(model: model, isSelected: selectedGroupKey == model.group_key) + let onlineCount: Int? = (model.group_key == groupModel?.default_group_key) + ? groupModel?.select_group_employee.filter { $0.is_online }.count + : nil + cell.configure(model: model, isSelected: selectedGroupKey == model.group_key, onlineCount: onlineCount) return cell } @@ -258,10 +261,14 @@ extension GroupListPopView: UITableViewDataSource, UITableViewDelegate { // MARK: - GroupListCell class GroupListCell: UITableViewCell { - func configure(model: GroupInfoModel, isSelected: Bool) { + func configure(model: GroupInfoModel, isSelected: Bool, onlineCount: Int? = nil) { avaterImgView.image = model.groupIcon nameLab.text = model.name - countLab.text = "共\(model.people_no)成员" + if let onlineCount { + countLab.text = "共\(model.people_no)成员/\(onlineCount)在线" + } else { + countLab.text = "共\(model.people_no)成员" + } tagStack.arrangedSubviews.forEach { tagStack.removeArrangedSubview($0) @@ -320,8 +327,8 @@ class GroupListCell: UITableViewCell { avaterImgView.layoutChain .left(12) .centerY() - .width(44) - .height(44) + .width(48) + .height(48) checkIcon.layoutChain .right(12) @@ -352,7 +359,7 @@ class GroupListCell: UITableViewCell { lazy var cardView: UIView = { let view = UIView() view.backgroundColor = .white - view.cornerRadius = 12 + view.cornerRadius = 16 view.clipsToBounds = true return view }() @@ -360,7 +367,7 @@ class GroupListCell: UITableViewCell { lazy var avaterImgView: UIImageView = { let view = UIImageView() view.contentMode = .scaleAspectFill - view.cornerRadius = 8 + view.cornerRadius = 10 view.clipsToBounds = true return view }() diff --git a/QuickLocation/Section/Home/GroupMemberView2.swift b/QuickLocation/Section/Home/GroupMemberView2.swift index 77199bd2..d89a5977 100644 --- a/QuickLocation/Section/Home/GroupMemberView2.swift +++ b/QuickLocation/Section/Home/GroupMemberView2.swift @@ -13,7 +13,11 @@ import SwiftyUserDefaults class GroupMemberView2: UIView { private var navBarHeightConstraint: NSLayoutConstraint? + private var todayTrackTopToInteraction: NSLayoutConstraint? + private var todayTrackTopToMember: NSLayoutConstraint? private var currentMemberModel: GroupMemberModel? + private var emojiEchoByUserId: [String: String] = [:] + private var messageEchoByUserId: [String: String] = [:] private static let batteryNormalColor = UIColor(hexStr: "#47DD00") private static let batteryLowColor = UIColor(hexStr: "#F85A5D") @@ -44,6 +48,55 @@ class GroupMemberView2: UIView { setupUnknownDeviceInfo(battery: model.battery) } refreshMemberReports(for: model) + updateRealtimeInteractionVisibility(isCurrentUser: isCurrentUser) + refreshRealtimeInteraction() + } + + func applyEmojiEcho(name: String, for userId: String) { + emojiEchoByUserId[userId] = name + if currentMemberModel?.user_id == userId { + refreshRealtimeInteraction() + } + } + + func applyMessageEcho(text: String, for userId: String) { + messageEchoByUserId[userId] = text + if currentMemberModel?.user_id == userId { + refreshRealtimeInteraction() + } + } + + private func refreshRealtimeInteraction() { + let userId = currentMemberModel?.user_id ?? "" + applyEmojiDisplay(emojiEchoByUserId[userId]) + applyMessageDisplay(messageEchoByUserId[userId]) + } + + private func updateRealtimeInteractionVisibility(isCurrentUser: Bool) { + let show = !isCurrentUser + interactionView.isHidden = !show + if show { + todayTrackTopToMember?.isActive = false + todayTrackTopToInteraction?.isActive = true + } else { + todayTrackTopToInteraction?.isActive = false + todayTrackTopToMember?.isActive = true + } + } + + private func applyEmojiDisplay(_ name: String?) { + if let name, let image = InteractionEmojiCell.pngImage(named: name) { + emojiImageView.image = image + emojiImageView.tintColor = nil + return + } + let config = UIImage.SymbolConfiguration(pointSize: 36, weight: .regular) + emojiImageView.image = UIImage(systemName: "face.smiling", withConfiguration: config) + emojiImageView.tintColor = UIColor(hexStr: "#C8CDD6") + } + + private func applyMessageDisplay(_ text: String?) { + messageTextLab.text = text ?? "暂时没有消息记录" } private func updateDistance(for model: GroupMemberModel, isCurrentUser: Bool) { @@ -261,10 +314,20 @@ class GroupMemberView2: UIView { memberView.layoutChain .edges(excludingEdge: .bottom) + scrollContentView.addSubview(interactionView) + interactionView.isHidden = true + interactionView.layoutChain + .topToBottomOfView(memberView, offset: 12) + .edgesHorzontal() + scrollContentView.addSubview(todayTrackView) todayTrackView.layoutChain - .topToBottomOfView(memberView, offset: 15) + .topToBottomOfView(interactionView, offset: 15) + todayTrackTopToInteraction = todayTrackView.jh_lastConstraint + todayTrackTopToInteraction?.isActive = false + todayTrackView.layoutChain .edgesHorzontal() + todayTrackTopToMember = todayTrackView.jh_pinEdge(.top, toEdge: .bottom, of: memberView, offset: 12) scrollContentView.addSubview(phoneReportView) phoneReportView.layoutChain @@ -300,11 +363,19 @@ class GroupMemberView2: UIView { .leftToRightOfView(icon, offset: 6) .centerY(icon) - view.addSubview(changeGroupBtn) - changeGroupBtn.layoutChain + let groupBtnView = UIView() + groupBtnView.backgroundColor = .white + groupBtnView.cornerRadius = 8 + view.addSubview(groupBtnView) + groupBtnView.addSubview(changeGroupBtn) + groupBtnView.layoutChain .centerY(icon) .right(15) - .height(20) + .width(70) + .height(24) + + changeGroupBtn.layoutChain + .edges() let memberView = UIView() memberView.backgroundColor = .white @@ -458,8 +529,8 @@ class GroupMemberView2: UIView { lazy var memberNameLab: UILabel = { let label = UILabel() label.text = " " - label.font = FontManager.youSheBiaoTiHei(12) - label.textColor = UIColor(hexStr: "#353B4F") + label.font = FontManager.youSheBiaoTiHei(14) + label.textColor = UIColor(hexStr: "#293445") return label }() @@ -714,6 +785,120 @@ class GroupMemberView2: UIView { return view }() + // MARK: - 实时互动 + lazy var interactionView: UIView = { + let view = UIView() + view.backgroundColor = .clear + + let icon = UIImageView() + icon.image = UIImage(named: "Home/member_today_track") + view.addSubview(icon) + icon.layoutChain + .top() + .left(15) + .width(18) + .heightToWidth(1) + + let titleLab = UILabel() + titleLab.text = "实时互动" + titleLab.textColor = UIColor(hexStr: "#293445") + titleLab.font = .systemFont(ofSize: 16, weight: .bold) + view.addSubview(titleLab) + titleLab.layoutChain + .leftToRightOfView(icon, offset: 6) + .centerY(icon) + + view.addSubview(emojiCard) + view.addSubview(messageCard) + emojiCard.layoutChain + .topToBottomOfView(icon, offset: 12) + .left(16) + .height(58) + .bottom() + messageCard.layoutChain + .topToView(emojiCard) + .leftToRightOfView(emojiCard, offset: 10) + .right(16) + .widthToView(emojiCard) + .bottomToView(emojiCard) + + return view + }() + + lazy var emojiCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 16 + + view.addSubview(emojiImageView) + emojiImageView.layoutChain + .top(5) + .centerX() + .width(30) + .heightToWidth(1) + + let hintLab = UILabel() + hintLab.text = "点击发送表情" + hintLab.textColor = UIColor(hexStr: "#9AA1AE") + hintLab.font = .systemFont(ofSize: 12, weight: .medium) + hintLab.textAlignment = .center + view.addSubview(hintLab) + hintLab.layoutChain + .topToBottomOfView(emojiImageView, offset: 6) + .edgesHorzontal(8) + + return view + }() + + lazy var messageCard: UIView = { + let view = UIView() + view.backgroundColor = .white + view.cornerRadius = 16 + + let msgView = UIView() + msgView.backgroundColor = UIColor(hexStr: "#F2F2F2") + msgView.cornerRadius = 8 + + view.addSubview(msgView) + msgView.addSubview(messageTextLab) + + msgView.layoutChain + .top(9) + .edgesHorzontal(10) + .height(26) + + messageTextLab.layoutChain + .edgesHorzontal(25) + .centerY() + + let hintLab = UILabel() + hintLab.text = "点击发送消息" + hintLab.textColor = UIColor(hexStr: "#9AA1AE") + hintLab.font = .systemFont(ofSize: 12, weight: .medium) + hintLab.textAlignment = .center + view.addSubview(hintLab) + hintLab.layoutChain + .topToBottomOfView(msgView, offset: 6) + .edgesHorzontal(8) + + return view + }() + + lazy var emojiImageView: UIImageView = { + let view = UIImageView() + view.contentMode = .scaleAspectFit + return view + }() + + lazy var messageTextLab: UILabel = { + let label = UILabel() + label.text = "暂时没有消息记录" + label.textColor = UIColor(hexStr: "#293445") + label.font = .systemFont(ofSize: 12, weight: .medium) + label.textAlignment = .center + return label + }() + // MARK: - 今日轨迹 lazy var todayTrackView: UIView = { let view = UIView() diff --git a/QuickLocation/Section/Home/HomeViewController.swift b/QuickLocation/Section/Home/HomeViewController.swift index ba6d537b..82e11ce4 100644 --- a/QuickLocation/Section/Home/HomeViewController.swift +++ b/QuickLocation/Section/Home/HomeViewController.swift @@ -46,6 +46,10 @@ class HomeViewController: BaseViewController { #if !targetEnvironment(simulator) /// 自己持有的地图点,避免只靠 mapView.annotations 对不上同一实例 private var annotationByUserId: [String: MemberAnnotation] = [:] + /// 散开前的真实坐标,annotation.coordinate 可能是展示偏移 + private var trueCoordinateByUserId: [String: CLLocationCoordinate2D] = [:] + private let overlapClusterRadius: CLLocationDistance = 20 + private let overlapSpreadRadius: CLLocationDistance = 12 #endif /// 最新位置(供 MQTT 定时上报) private var lastLocation: CLLocation? @@ -54,6 +58,8 @@ class HomeViewController: BaseViewController { private var subscribedMemberIds: [String] = [] /// 底部成员面板是否显示 private var isMemberPanelShown = false + /// 地图是否自动跟随当前用户;滑动查看后关闭,点击定位按钮后重新打开 + private var isAutoFollowingUser = true private var isSOSPlaying = false private var sosReceiveAlertView: SOSReceiveAlertView? private var sosAudioStopWorkItem: DispatchWorkItem? @@ -116,42 +122,61 @@ class HomeViewController: BaseViewController { private func startLocationTimer() { locationTimer?.invalidate() - locationTimer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { [weak self] _ in - guard let self = self, let loc = self.lastLocation else { return } - let coord = loc.coordinate + let timer = Timer(timeInterval: 5, repeats: true) { [weak self] _ in + self?.reportCurrentLocationIfNeeded() + } + RunLoop.main.add(timer, forMode: .common) + locationTimer = timer + reportCurrentLocationIfNeeded() + } - // 坐标变化不大时复用上次地址 - if let last = self.lastGeocodedCoord, - hypot(coord.latitude - last.latitude, coord.longitude - last.longitude) < 0.001, - !self.lastAddress.isEmpty { - self.publishLocation(coord: coord, address: self.lastAddress, loc: loc) - return - } + private func reportCurrentLocationIfNeeded() { + guard !AppContextManager.shared.userId.isEmpty, + let loc = lastLocation, + CLLocationCoordinate2DIsValid(loc.coordinate) else { return } + let coord = loc.coordinate + publishLocation(coord: coord, address: lastAddress, loc: loc) + refreshAddressIfNeeded(coord: coord, loc: loc) + } - // 反向地理编码获取地址 - self.geocoder.reverseGeocodeLocation(loc) { [weak self] placemarks, error in - guard let self = self else { return } - let address = placemarks?.first?.name - ?? placemarks?.first?.thoroughfare - ?? placemarks?.first?.locality - ?? "" - self.lastAddress = address + private func refreshAddressIfNeeded(coord: CLLocationCoordinate2D, loc: CLLocation) { + if let last = lastGeocodedCoord, + hypot(coord.latitude - last.latitude, coord.longitude - last.longitude) < 0.001 { + return + } + geocoder.cancelGeocode() + geocoder.reverseGeocodeLocation(loc) { [weak self] placemarks, _ in + let address = placemarks?.first?.name + ?? placemarks?.first?.thoroughfare + ?? placemarks?.first?.locality + ?? "" + DispatchQueue.main.async { + guard let self else { return } + if !address.isEmpty { + self.lastAddress = address + } self.lastGeocodedCoord = coord - self.publishLocation(coord: coord, address: address, loc: loc) } } } private func publishLocation(coord: CLLocationCoordinate2D, address: String, loc: CLLocation) { - MQTTService.shared.reportLocation( - lat: coord.latitude, - lon: coord.longitude, - addr: address, - speed: loc.speed, - bearing: loc.course, - altitude: loc.altitude, - accuracy: loc.horizontalAccuracy - ) + let work = { + MQTTService.shared.reportLocation( + lat: coord.latitude, + lon: coord.longitude, + addr: address, + speed: loc.speed, + bearing: loc.course, + altitude: loc.altitude, + accuracy: loc.horizontalAccuracy + ) + } + if Thread.isMainThread { + work() + } else { + DispatchQueue.main.async(execute: work) + } } // MARK: - Actions @@ -242,16 +267,23 @@ class HomeViewController: BaseViewController { self?.openTodayTrackDetail() }).disposed(by: disposeBag) + // 实时互动 + rootView.groupMemberView.emojiCard.rx.tapGesture.subscribe(onNext: { [weak self] _ in + self?.openEmojiPopView() + }).disposed(by: disposeBag) + + rootView.groupMemberView.messageCard.rx.tapGesture.subscribe(onNext: { [weak self] _ in + self?.openMessagePopView() + }).disposed(by: disposeBag) + // 手机报告二级页 rootView.groupMemberView.phoneReportView.rx.tapGesture.subscribe(onNext: { [weak self] _ in self?.openPhoneReportDetail() }).disposed(by: disposeBag) - // 地图回到自己 + // 地图回到自己并重新开启自动跟随 rootView.locationView.rx.tapGesture.subscribe { _ in - if let ann = self.currentUserAnnotation { - self.selectMember(userId: ann.member.id, centerMap: true, dismissPanel: false) - } + self.startFollowingCurrentUser() }.disposed(by: disposeBag) // User Config刷新 @@ -612,8 +644,20 @@ class HomeViewController: BaseViewController { // 其他成员从 select_group_employee 取,过滤掉当前用户 var others: [CircleMember] = [] + let now = Date() for model in list where model.user_id != currentUserId || currentUserId.isEmpty { - let m = CircleMember(member: model, isOwner: isGroupOwner(model.user_id)) + var m = CircleMember(member: model, isOwner: isGroupOwner(model.user_id)) + let mqttFresh = lastUpdateTimes[model.user_id].map { now.timeIntervalSince($0) < 60 } ?? false + if mqttFresh, let trueCoord = trueCoordinateByUserId[model.user_id], + CLLocationCoordinate2DIsValid(trueCoord) { + m = CircleMember( + id: m.id, name: m.name, avatar: m.avatar, + isOnline: true, isOwner: m.isOwner, + coordinate: trueCoord, address: m.address, + heading: m.heading, lastUpdateTime: m.lastUpdateTime, + battery: m.battery + ) + } guard CLLocationCoordinate2DIsValid(m.coordinate) else { continue } others.append(m) } @@ -637,7 +681,12 @@ class HomeViewController: BaseViewController { } let onlineIDs = Set(onlineMembers.map { $0.id }) - let toRemove = allExisting.filter { !onlineIDs.contains($0.member.id) } + let toRemove = allExisting.filter { annotation in + if annotation === currentUserAnnotation || annotation.member.isCurrentUser || annotation.member.id == "current" { + return false + } + return !onlineIDs.contains(annotation.member.id) + } if !toRemove.isEmpty { mapView.removeAnnotations(toRemove) } @@ -657,30 +706,10 @@ class HomeViewController: BaseViewController { mapView.addAnnotations(annotations) annotations.forEach { rememberAnnotation($0) } } - - if currentUserAnnotation == nil, - annotationByUserId["current"] == nil, - let me = currentUserMember, - let loc = lastLocation, - CLLocationCoordinate2DIsValid(loc.coordinate), - !isMemberInBubble("current") { - let updatedMe = CircleMember( - id: "current", - name: me.name, - avatar: me.avatar, - isOnline: true, - isOwner: false, - coordinate: loc.coordinate, - address: me.address, - heading: me.heading, - lastUpdateTime: me.lastUpdateTime, - battery: me.battery - ) - currentUserMember = updatedMe - let annotation = MemberAnnotation(member: updatedMe) - mapView.addAnnotation(annotation) - rememberAnnotation(annotation) - } + // 自己的针只等高德 didUpdate 再加,不用苹果 GPS / 缓存点 + applyDisplayCoordinates() + refreshAnnotationScreenPositions() + bringAnnotationToFront(userId: selectedMemberId) #endif } @@ -708,6 +737,70 @@ class HomeViewController: BaseViewController { AppRouter.push(Route.todayTrackDetail, userInfo: userInfo) } + private func openEmojiPopView() { + AddEmojiPopView.show { [weak self] name in + guard let self, let name else { return } + self.sendRealtimeEmoji(name) + } + } + + private func openMessagePopView() { + AddMessagePopView.show { [weak self] index in + guard let self, let index else { return } + self.sendRealtimeMessage(index: index) + } + } + + private func sendRealtimeEmoji(_ name: String) { + guard name.hasPrefix("normal_") else { return } + let numStr = name.replacingOccurrences(of: "normal_", with: "") + guard let num = Int(numStr) else { return } + let targetId = selectedMemberId + sendRealtimeEmote(emoteIdx: "1\(num)".integer) { [weak self] in + self?.rootView.groupMemberView.applyEmojiEcho(name: name, for: targetId) + } + } + + private func sendRealtimeMessage(index: Int) { + let texts = QuickMessageView.messageList + guard texts.indices.contains(index) else { return } + let targetId = selectedMemberId + sendRealtimeEmote(emoteIdx: "3\(index)".integer) { [weak self] in + self?.rootView.groupMemberView.applyMessageEcho(text: texts[index], for: targetId) + } + } + + private func sendRealtimeEmote(emoteIdx: Int, onSuccess: @escaping () -> Void) { + guard selectedMemberId != AppContextManager.shared.userId else { + DLToast.show(text: "不能给自己发送") + return + } + guard let model = viewModel.groupModel else { return } + DLToast.showLoading() + UserService.sendEmote( + emoteIdx: emoteIdx, + groupKey: model.default_group_key, + targetUid: selectedMemberId + ).subscribe(onNext: { _ in + DLToast.show(text: "发送成功") + onSuccess() + }, onError: { _ in }).disposed(by: disposeBag) + } + + private func applyIncomingEmote(from userId: String, emojiName: String?, message: String?) { + if let emojiName { + rootView.groupMemberView.applyEmojiEcho(name: emojiName, for: userId) + ReceivedEmojiPopView.show(name: emojiName) + } + if let message { + rootView.groupMemberView.applyMessageEcho(text: message, for: userId) + ReceivedMessagePopView.showIncoming( + nickName: viewModel.getUserNickName(id: userId), + message: message + ) + } + } + private func openPhoneReportDetail() { let members = viewModel.memberList.map { $0.toJSON() } var userInfo: [String: Any] = [ @@ -740,13 +833,40 @@ class HomeViewController: BaseViewController { } } - #if !targetEnvironment(simulator) - if dismissPanel { - rootView.dismissGroupMemberView() - } +// if dismissPanel { +// rootView.dismissGroupMemberView() +// } + if centerMap { + let isSelf = userId == "current" || viewModel.isCurrentUser(id: userId) + if !isSelf { + stopFollowingCurrentUser() + } centerMapOnMember(userId: userId) } + #if !targetEnvironment(simulator) + bringAnnotationToFront(userId: listUserId, restack: true) + #endif + } + + private func startFollowingCurrentUser() { + isAutoFollowingUser = true + #if !targetEnvironment(simulator) + if let ann = currentUserAnnotation { + selectMember(userId: ann.member.id, centerMap: true, dismissPanel: false) + } else if let coordinate = lastLocation?.coordinate, CLLocationCoordinate2DIsValid(coordinate) { + rootView.mapView.setCenter(coordinate, animated: true) + rootView.mapView.setZoomLevel(16, animated: true) + } + rootView.mapView.setUserTrackingMode(.follow, animated: true) + #endif + } + + private func stopFollowingCurrentUser() { + guard isAutoFollowingUser else { return } + isAutoFollowingUser = false + #if !targetEnvironment(simulator) + rootView.mapView.setUserTrackingMode(.none, animated: false) #endif } @@ -843,6 +963,9 @@ extension HomeViewController { isOnline: isOnline, lastUpdateTime: firstPoint.time ) updateOnlineCount() + self.refreshSelectedMemberInfoIfNeeded(userId: userId) + // 自己的地图点由 GPS 维护(id = "current"),MQTT 回环不再加点,避免叠两个自己 + if userId == AppContextManager.shared.userId { return } // 经纬度无变化跳过地图标注更新 let shouldUpdateMap: Bool = { if let existing = self.members.first(where: { $0.id == userId }) { @@ -858,7 +981,6 @@ extension HomeViewController { } else if !isOnline { self.removeAnnotation(userId: userId) } - self.refreshSelectedMemberInfoIfNeeded(userId: userId) } case "disconnect": // 离线 self.removeAnnotation(userId: userId) @@ -876,47 +998,18 @@ extension HomeViewController { let emoteUserId = parts[1] if firstChar == "1" || firstChar == "2" { // 表情 -// let emojiFileName = firstChar == "1" ? "normal_" : "fun_" - let nickName = self.viewModel.getUserNickName(id: emoteUserId) - let fullText = nickName + "对你发送了表情" - let attr = NSMutableAttributedString(string: fullText) - attr.addAttribute(.font, value: UIFont.systemFont(ofSize: 12, weight: .medium), range: NSRange(location: 0, length: fullText.count)) - attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#16B3FF"), range: NSRange(location: 0, length: nickName.count)) -// DispatchQueue.main.async { [weak self] in -// guard let self = self else { return } -// self.rootView.messageLab.attributedText = attr -// self.rootView.messageBubbleView.isHidden = false -// if let path = Bundle.main.path(forResource: "\(emojiFileName)\(lastChar)", ofType: "json") { -// self.rootView.emojiPopView.animation = LottieAnimation.filepath(path) -// self.rootView.bringSubviewToFront(self.rootView.emojiPopView) -// self.rootView.emojiPopView.isHidden = false -// self.rootView.emojiPopView.play { completed in -// self.rootView.emojiPopView.isHidden = true -// } -// } -// DispatchQueue.main.asyncAfter(deadline: .now() + 5) { -// self.rootView.messageBubbleView.isHidden = true -// } -// } + let emojiFileName = firstChar == "1" ? "normal_\(lastChar)" : "fun_\(lastChar)" + DispatchQueue.main.async { [weak self] in + self?.applyIncomingEmote(from: emoteUserId, emojiName: emojiFileName, message: nil) + } } else if firstChar == "3" { // 文字 let textIdx = lastChar.integer let texts = QuickMessageView.messageList guard textIdx < texts.count else { break } - let nickName = self.viewModel.getUserNickName(id: emoteUserId) - let fullText = nickName + "对你说:" + texts[textIdx] - let attr = NSMutableAttributedString(string: fullText) - attr.addAttribute(.font, value: UIFont.systemFont(ofSize: 12, weight: .medium), range: NSRange(location: 0, length: fullText.count)) - attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#16B3FF"), range: NSRange(location: 0, length: nickName.count)) - attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#333333"), range: NSRange(location: nickName.count, length: texts[textIdx].count)) -// DispatchQueue.main.async { [weak self] in -// guard let self = self else { return } -// self.rootView.messageLab.attributedText = attr -// self.rootView.messageBubbleView.isHidden = false -// DispatchQueue.main.asyncAfter(deadline: .now() + 5) { -// self.rootView.messageBubbleView.isHidden = true -// } -// } + DispatchQueue.main.async { [weak self] in + self?.applyIncomingEmote(from: emoteUserId, emojiName: nil, message: texts[textIdx]) + } } case "bubble": // 气泡 guard let userId = msg.data?.user_id else { return } @@ -1003,6 +1096,166 @@ extension HomeViewController { currentUserAnnotation = annotation } } + + /// 加点后按当前 view 尺寸重投;follow 延后到下一帧再开,避免动画冻住旧投影 + private func refreshAnnotationScreenPositions() { + guard let mapView = rootView.mapView else { return } + let shouldResumeFollow = isAutoFollowingUser + if mapView.userTrackingMode != .none { + mapView.setUserTrackingMode(.none, animated: false) + } + for annotation in mapView.annotations ?? [] { + guard let memberAnn = annotation as? MemberAnnotation else { continue } + let coord = memberAnn.coordinate + memberAnn.coordinate = coord + if let view = mapView.view(for: memberAnn) as? MemberAnnotationView { + view.applyAnchor() + } + } + mapView.setCenter(mapView.centerCoordinate, animated: false) + guard shouldResumeFollow else { return } + DispatchQueue.main.async { [weak self] in + guard let self, self.isAutoFollowingUser else { return } + self.rootView.mapView.setUserTrackingMode(.follow, animated: false) + } + } + + private func metersBetween(_ a: CLLocationCoordinate2D, _ b: CLLocationCoordinate2D) -> CLLocationDistance { + CLLocation(latitude: a.latitude, longitude: a.longitude) + .distance(from: CLLocation(latitude: b.latitude, longitude: b.longitude)) + } + + private func offsetCoordinate(_ coord: CLLocationCoordinate2D, meters: CLLocationDistance, bearing: Double) -> CLLocationCoordinate2D { + let earth: CLLocationDistance = 6_378_137 + let latRad = coord.latitude * .pi / 180 + let dLat = meters * cos(bearing) / earth * 180 / .pi + let dLon = meters * sin(bearing) / (earth * cos(latRad)) * 180 / .pi + return CLLocationCoordinate2D(latitude: coord.latitude + dLat, longitude: coord.longitude + dLon) + } + + /// 20 米内的针绕真实点散开;自己钉在 GPS,别人往外偏 + private func applyDisplayCoordinates() { + guard let mapView = rootView.mapView else { return } + let annotations = (mapView.annotations ?? []).compactMap { $0 as? MemberAnnotation } + guard !annotations.isEmpty else { return } + + struct Pin { + let id: String + let isSelf: Bool + let trueCoord: CLLocationCoordinate2D + let annotation: MemberAnnotation + } + + var pins: [Pin] = [] + for annotation in annotations { + let isSelf = annotation.member.isCurrentUser + let key = isSelf ? "current" : annotation.member.id + let trueCoord: CLLocationCoordinate2D + if let stored = trueCoordinateByUserId[key], CLLocationCoordinate2DIsValid(stored) { + trueCoord = stored + } else if isSelf, let loc = lastLocation?.coordinate, CLLocationCoordinate2DIsValid(loc) { + trueCoord = loc + } else if let member = members.first(where: { $0.id == annotation.member.id }), + CLLocationCoordinate2DIsValid(member.coordinate) { + trueCoord = member.coordinate + } else { + continue + } + pins.append(Pin(id: key, isSelf: isSelf, trueCoord: trueCoord, annotation: annotation)) + } + + var assigned = Set() + for i in pins.indices { + guard !assigned.contains(i) else { continue } + var cluster = [i] + assigned.insert(i) + var k = 0 + while k < cluster.count { + let cur = cluster[k] + for j in pins.indices where !assigned.contains(j) { + if metersBetween(pins[cur].trueCoord, pins[j].trueCoord) < overlapClusterRadius { + cluster.append(j) + assigned.insert(j) + } + } + k += 1 + } + + if cluster.count == 1 { + pins[cluster[0]].annotation.coordinate = pins[cluster[0]].trueCoord + continue + } + + let selfIdx = cluster.first(where: { pins[$0].isSelf }) + let centroid: CLLocationCoordinate2D = { + if let selfIdx { return pins[selfIdx].trueCoord } + let lat = cluster.map { pins[$0].trueCoord.latitude }.reduce(0, +) / Double(cluster.count) + let lon = cluster.map { pins[$0].trueCoord.longitude }.reduce(0, +) / Double(cluster.count) + return CLLocationCoordinate2D(latitude: lat, longitude: lon) + }() + + if let selfIdx { + pins[selfIdx].annotation.coordinate = pins[selfIdx].trueCoord + let others = cluster.filter { !pins[$0].isSelf }.sorted { pins[$0].id < pins[$1].id } + for (i, idx) in others.enumerated() { + let angle = 2 * Double.pi * Double(i) / Double(max(others.count, 1)) - Double.pi / 2 + pins[idx].annotation.coordinate = offsetCoordinate(centroid, meters: overlapSpreadRadius, bearing: angle) + } + } else { + let ordered = cluster.sorted { pins[$0].id < pins[$1].id } + for (i, idx) in ordered.enumerated() { + let angle = 2 * Double.pi * Double(i) / Double(ordered.count) - Double.pi / 2 + pins[idx].annotation.coordinate = offsetCoordinate(centroid, meters: overlapSpreadRadius, bearing: angle) + } + } + } + } + + private func isSelectedAnnotation(_ annotation: MemberAnnotation, userId: String) -> Bool { + let ids = annotationIds(matching: userId) + return ids.contains(annotation.member.id) + || (annotation.member.isCurrentUser && (ids.contains("current") || ids.contains(AppContextManager.shared.userId))) + } + + private func raiseAnnotationView(_ view: MAAnnotationView) { + view.zIndex = 10 + var current: UIView = view + while let superview = current.superview, !(superview is MAMapView) { + superview.bringSubviewToFront(current) + current = superview + } + current.superview?.bringSubviewToFront(current) + } + + /// AMap 的 zIndex 只在 viewFor / didAdd 时生效;GPS 刷新自己的点还会把层级打乱。 + /// restack=true 时先删再加,保证选中针在最上层。 + private func bringAnnotationToFront(userId: String, restack: Bool = false) { + guard let mapView = rootView.mapView, !userId.isEmpty else { return } + var selectedAnn: MemberAnnotation? + for annotation in mapView.annotations ?? [] { + guard let memberAnn = annotation as? MemberAnnotation else { continue } + let selected = isSelectedAnnotation(memberAnn, userId: userId) + if selected { selectedAnn = memberAnn } + if let view = mapView.view(for: memberAnn) as? MemberAnnotationView { + if selected { + view.zIndex = 10 + } else if memberAnn.member.isCurrentUser { + view.zIndex = 1 + } else { + view.zIndex = 0 + } + } + } + guard let selectedAnn else { return } + if restack { + mapView.removeAnnotation(selectedAnn) + mapView.addAnnotation(selectedAnn) + rememberAnnotation(selectedAnn) + } + if let view = mapView.view(for: selectedAnn) { + raiseAnnotationView(view) + } + } #endif /// 当前用户地图点 id 是 "current",MQTT 里是真实 user_id private func annotationIds(matching userId: String) -> Set { @@ -1062,43 +1315,56 @@ extension HomeViewController { #endif } - /// 更新指定成员的标注位置(只更新坐标,头像/名称不变) + /// 更新指定成员的标注位置(用 MQTT 坐标,不依赖接口 last_position) private func updateAnnotation(userId: String, coordinate: CLLocationCoordinate2D, address: String) { #if !targetEnvironment(simulator) if isMemberInBubble(userId) { removeAnnotation(userId: userId) return } - // 更新 members 数组 - if let idx = members.firstIndex(where: { $0.id == userId }) { - let old = members[idx] - members[idx] = CircleMember( - id: old.id, name: old.name, avatar: old.avatar, - isOnline: true, isOwner: old.isOwner, - coordinate: coordinate, address: address, - heading: old.heading, lastUpdateTime: old.lastUpdateTime, - battery: old.battery - ) - } + guard CLLocationCoordinate2DIsValid(coordinate) else { return } + trueCoordinateByUserId[userId] = coordinate - // 更新地图标注 - guard let mapView = rootView.mapView else { return } let memberToShow: CircleMember? = { - if let existing = members.first(where: { $0.id == userId }) { - return existing + if let idx = members.firstIndex(where: { $0.id == userId }) { + let old = members[idx] + let updated = CircleMember( + id: old.id, name: old.name, avatar: old.avatar, + isOnline: true, isOwner: old.isOwner, + coordinate: coordinate, address: address, + heading: old.heading, lastUpdateTime: old.lastUpdateTime, + battery: old.battery + ) + members[idx] = updated + return updated } guard let model = viewModel.memberList.first(where: { $0.user_id == userId }) else { return nil } - let created = CircleMember(member: model, isOwner: viewModel.isGroupOwn(id: model.user_id)) - guard CLLocationCoordinate2DIsValid(created.coordinate) else { return nil } + let created = CircleMember( + id: model.user_id, + name: model.nick_name, + avatar: model.head_pic, + isOnline: true, + isOwner: viewModel.isGroupOwn(id: model.user_id), + coordinate: coordinate, + address: address, + heading: 0, + lastUpdateTime: model.last_active_time, + battery: model.battery + ) members.append(created) return created }() - if let oldMember = memberToShow, oldMember.isOnline { - removeAnnotation(userId: userId) - let newAnn = MemberAnnotation(member: oldMember) + + guard let member = memberToShow, let mapView = rootView.mapView else { return } + if let existing = annotationByUserId[userId] { + existing.coordinate = coordinate + } else { + let newAnn = MemberAnnotation(member: member) mapView.addAnnotation(newAnn) rememberAnnotation(newAnn) } + applyDisplayCoordinates() + bringAnnotationToFront(userId: selectedMemberId) #endif } } @@ -1114,7 +1380,9 @@ extension HomeViewController: MAMapViewDelegate { guard let memberAnnotation = annotation as? MemberAnnotation else { return nil } - let identifier = "MemberAnnotation" + let identifier = memberAnnotation.member.isCurrentUser + ? "MemberAnnotation.current" + : "MemberAnnotation.member" var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MemberAnnotationView if annotationView == nil { annotationView = MemberAnnotationView(annotation: memberAnnotation, reuseIdentifier: identifier) @@ -1131,10 +1399,25 @@ extension HomeViewController: MAMapViewDelegate { if memberAnnotation.member.isCurrentUser { annotationView?.updateHeading(currentHeading) } + let selectedIds = annotationIds(matching: selectedMemberId) + if selectedIds.contains(memberAnnotation.member.id) + || (memberAnnotation.member.isCurrentUser && (selectedIds.contains("current") || selectedIds.contains(AppContextManager.shared.userId))) { + annotationView?.zIndex = 10 + } else if memberAnnotation.member.isCurrentUser { + annotationView?.zIndex = 1 + } else { + annotationView?.zIndex = 0 + } return annotationView } + func mapView(_ mapView: MAMapView!, didAddAnnotationViews views: [Any]!) { + for case let view as MemberAnnotationView in views ?? [] { + view.applyAnchor() + } + } + func mapView(_ mapView: MAMapView!, didSelect view: MAAnnotationView!) { guard let ann = view.annotation as? MemberAnnotation else { return } mapView.deselectAnnotation(ann, animated: false) @@ -1149,16 +1432,23 @@ extension HomeViewController: MAMapViewDelegate { rootView.updateGPSSignal(bars: strength.barCount) // 地图标注 + let isFirstFix = lastLocation == nil lastLocation = location + if isFirstFix { + reportCurrentLocationIfNeeded() + } Defaults[\.currentLatitude] = location.coordinate.latitude Defaults[\.currentLongitude] = location.coordinate.longitude let coordinate = location.coordinate guard CLLocationCoordinate2DIsValid(coordinate) else { return } + trueCoordinateByUserId["current"] = coordinate if isMemberInBubble("current") { removeAnnotation(userId: "current") } else if let ann = currentUserAnnotation { ann.coordinate = coordinate + applyDisplayCoordinates() + bringAnnotationToFront(userId: selectedMemberId) } else if let me = currentUserMember { let updatedMe = CircleMember( id: "current", @@ -1176,13 +1466,19 @@ extension HomeViewController: MAMapViewDelegate { let annotation = MemberAnnotation(member: updatedMe) mapView.addAnnotation(annotation) rememberAnnotation(annotation) + applyDisplayCoordinates() + bringAnnotationToFront(userId: selectedMemberId) } - if !isMemberPanelShown { - mapView.setCenter(coordinate, animated: true) - mapView.setUserTrackingMode(.follow, animated: true) + if isAutoFollowingUser, mapView.userTrackingMode != .follow { + mapView.setUserTrackingMode(.follow, animated: false) } } + + func mapView(_ mapView: MAMapView!, mapWillMoveByUser wasUserAction: Bool) { + guard wasUserAction else { return } + stopFollowingCurrentUser() + } } // MARK: - SOS 接收提示和报警音 @@ -1284,24 +1580,6 @@ extension HomeViewController { } } -// MARK: - 快捷消息 & 表情 -extension HomeViewController: TTGTextTagCollectionViewDelegate { - func textTagCollectionView(_ textTagCollectionView: TTGTextTagCollectionView!, didTap tag: TTGTextTag!, at index: UInt) { - let emoteIdx = "3\(index)".integer - requestSendEmote(emoteIdx: emoteIdx) - } - - func requestSendEmote(emoteIdx: Int) { - guard let model = viewModel.groupModel else { return } - DLToast.showLoading() - UserService.sendEmote(emoteIdx: emoteIdx, - groupKey: model.default_group_key, - targetUid: viewModel.targetUid).subscribe(onNext: { response in - DLToast.show(text: "发送成功") - }, onError: { _ in }).disposed(by: disposeBag) - } -} - #endif #if !targetEnvironment(simulator) // MARK: - CLLocationManagerDelegate (heading only) diff --git a/QuickLocation/Section/Home/InteractionEmojiCell.swift b/QuickLocation/Section/Home/InteractionEmojiCell.swift index bfd27aa4..9485ea4a 100644 --- a/QuickLocation/Section/Home/InteractionEmojiCell.swift +++ b/QuickLocation/Section/Home/InteractionEmojiCell.swift @@ -34,6 +34,13 @@ final class InteractionEmojiCell: UICollectionViewCell { static let normalFileNames: [String] = normalPngMap.keys.sorted() static let funFileNames: [String] = funPngMap.keys.sorted() + static func pngImage(named name: String) -> UIImage? { + let map = name.hasPrefix("fun_") ? funPngMap : normalPngMap + guard let pngName = map[name], + let path = Bundle.main.path(forResource: pngName, ofType: "png") else { return nil } + return UIImage(contentsOfFile: path) + } + private let imageView: UIImageView = { let v = UIImageView() v.contentMode = .scaleAspectFit diff --git a/QuickLocation/Section/Home/MemberPhoneReportView.swift b/QuickLocation/Section/Home/MemberPhoneReportView.swift index 77a8f6a5..7b43befb 100644 --- a/QuickLocation/Section/Home/MemberPhoneReportView.swift +++ b/QuickLocation/Section/Home/MemberPhoneReportView.swift @@ -29,7 +29,6 @@ final class MemberPhoneReportView: UIView { static let leftPanelAspect: CGFloat = 147 / 164 static let panelGap: CGFloat = 13 static let cardInset: CGFloat = 12 - static let usageCardAspect: CGFloat = 69 / 146 static let usageUnlockGap: CGFloat = 9 } @@ -162,7 +161,6 @@ final class MemberPhoneReportView: UIView { usageCard.layoutChain .top() .edgesHorzontal() - .heightToWidth(Layout.usageCardAspect) usageIcon.image = UIImage(named: "Home/member_usage_count") usageIcon.contentMode = .scaleAspectFit @@ -204,7 +202,7 @@ final class MemberPhoneReportView: UIView { unlockCard.layoutChain .topToBottomOfView(usageCard, offset: Layout.usageUnlockGap) .edgesHorzontal() - .heightToWidth(Layout.usageCardAspect) + .heightToView(usageCard) .bottom() unlockIcon.image = UIImage(named: "Home/member_daily_unlock") diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationHeaderView.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationHeaderView.swift index 177908c3..a1fce517 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationHeaderView.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationHeaderView.swift @@ -25,6 +25,9 @@ final class SearchLocationHeaderView: UIView { required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func startMarqueeAnimation() { + marqueeScrollView.isHidden = true + return + marqueeScrollView.layer.removeAllAnimations() marqueeScrollView.contentOffset.x = 0 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in @@ -46,6 +49,7 @@ final class SearchLocationHeaderView: UIView { addSubview(marqueeScrollView) heroImageView.backgroundColor = .clear + heroImageView.contentMode = .scaleAspectFit heroImageView.image = UIImage(named: "SearchLocation/header_bg") heroImageView.layoutChain .top() @@ -54,18 +58,16 @@ final class SearchLocationHeaderView: UIView { .height(190) let count = Int.random(in: 8000...15000) - let usageText = "有 \(count) 人正在使用此功能" - let attr = NSMutableAttributedString(string: usageText) - if let range = usageText.range(of: "\(count)") { - attr.addAttribute(.foregroundColor, value: UIColor(hexStr: "#16B3FF"), - range: NSRange(range, in: usageText)) - } - usageLab.attributedText = attr + let formatter = NumberFormatter() + formatter.numberStyle = .decimal + formatter.groupingSeparator = "," + let countText = formatter.string(from: NSNumber(value: count)) ?? "\(count)" + usageLab.text = "有\(countText)人正在使用此功能" usageLab.font = .systemFont(ofSize: 14, weight: .medium) usageLab.textColor = UIColor(hexStr: "#999999") usageLab.textAlignment = .center usageLab.layoutChain - .topToBottomOfView(heroImageView, offset: 8) + .topToBottomOfView(heroImageView, offset: 42) .centerX() headlineLab.text = "实时查看TA的位置" @@ -73,7 +75,7 @@ final class SearchLocationHeaderView: UIView { headlineLab.textColor = UIColor(hexStr: "#293445") headlineLab.textAlignment = .center headlineLab.layoutChain - .topToBottomOfView(usageLab, offset: 16) + .topToBottomOfView(usageLab, offset: 37) .centerX() subheadLab.text = "为你安心守护出行安全" @@ -81,17 +83,14 @@ final class SearchLocationHeaderView: UIView { subheadLab.textColor = UIColor(hexStr: "#293445") subheadLab.textAlignment = .center subheadLab.layoutChain - .topToBottomOfView(headlineLab, offset: 6) + .topToBottomOfView(headlineLab, offset: 18) .centerX() + .bottom() + marqueeScrollView.isHidden = true marqueeScrollView.backgroundColor = .clear marqueeScrollView.showsHorizontalScrollIndicator = false marqueeScrollView.isScrollEnabled = false - marqueeScrollView.layoutChain - .topToBottomOfView(subheadLab, offset: 12) - .edgesHorzontal() - .height(36) - .bottom() } private func randomPhoneNumber() -> String { diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift index 7efe47ca..a5ca136e 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift @@ -25,22 +25,37 @@ class SearchLocationResultVC: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - - let isVip = AppContextManager.shared.vip > 1 - rootView.unlockVipView.isHidden = isVip - rootView.scrollView.isHidden = !isVip - reactiveAction() + applyResultPresentation() requestPhoneArea() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) rootView.startMarqueeAnimation() + applyResultPresentation() + } + + private func isVipUnlocked() -> Bool { + AppContextManager.shared.vip > 1 + } + + private func applyResultPresentation() { + handleCode() + let isVip = isVipUnlocked() + rootView.areaBlurView.isHidden = isVip + if !isVip { + rootView.actionBtn.setTitle("开通会员", for: .normal) + rootView.actionBtn.isHidden = false + } } private func reactiveAction() { rootView.actionBtn.rx.tap.subscribe(onNext: { _ in + guard self.isVipUnlocked() else { + AppRouter.push(Route.vipRecharge) + return + } switch self.code { case 0: NotificationCenter.default.post(name: .ShowMemberLocationNotification, @@ -84,8 +99,6 @@ class SearchLocationResultVC: BaseViewController { } private func handleCode() { - guard AppContextManager.shared.vip > 1 else { return } - rootView.actionBtn.isHidden = true rootView.inviteView.isHidden = true @@ -114,7 +127,9 @@ class SearchLocationResultVC: BaseViewController { ) rootView.actionBtn.setTitle("邀请TA加入", for: .normal) rootView.actionBtn.isHidden = false - requestGroupInfo() + if groupModel == nil { + requestGroupInfo() + } default: break } @@ -123,12 +138,10 @@ class SearchLocationResultVC: BaseViewController { private func requestPhoneArea() { SystemService.phoneArea(phone: phone).subscribe(onNext: { response in guard let data = response.data else { return } - self.handleCode() let province = data["Province"].safeString let city = data["City"].safeString - let area = "\(province)·\(city)" - self.rootView.phoneAreaLab.text = area - self.rootView.unlockVipPhoneAreaLab.text = area + self.rootView.phoneAreaLab.text = "\(province)·\(city)" + self.applyResultPresentation() }).disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift index 3c3c6116..f15976a5 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift @@ -4,18 +4,13 @@ // import UIKit -import RxSwift -import RxCocoa import Lottie class SearchLocationResultView: UIView { - var disposeBag = DisposeBag() - let headerView = SearchLocationHeaderView() private func setupUI() { - addSubview(unlockVipView) addSubview(navBgView) addSubview(navView) addSubview(scrollView) @@ -28,8 +23,6 @@ class SearchLocationResultView: UIView { .edges(excludingEdge: .bottom) .height(kNaviHeight) - unlockVipView.layoutChain.edges() - scrollView.layoutChain .topToBottomOfView(navView) .edges(excludingEdge: .top) @@ -104,11 +97,19 @@ class SearchLocationResultView: UIView { locationRow.addSubview(pinIcon) locationRow.addSubview(phoneAreaLab) - pinIcon.layoutChain.left().top().bottom().width(18).height(18) + locationRow.addSubview(areaBlurView) + + pinIcon.layoutChain.left().centerY().width(18).height(18) phoneAreaLab.layoutChain .leftToRightOfView(pinIcon, offset: 6) .right() - .centerY(pinIcon) + .top() + .bottom() + areaBlurView.layoutChain + .topToView(phoneAreaLab, offset: -2) + .bottomToView(phoneAreaLab, offset: 2) + .leftToView(phoneAreaLab, offset: -4) + .rightToView(phoneAreaLab, offset: 4) locationRow.layoutChain.top(20).centerX() let pillContainer = UIView() @@ -152,6 +153,15 @@ class SearchLocationResultView: UIView { return label }() + lazy var areaBlurView: UIVisualEffectView = { + let view = UIVisualEffectView(effect: UIBlurEffect(style: .light)) + view.isUserInteractionEnabled = false + view.isHidden = true + view.cornerRadius = 4 + view.clipsToBounds = true + return view + }() + lazy var statusPillLab: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 16, weight: .medium) @@ -241,65 +251,6 @@ class SearchLocationResultView: UIView { return view }() - lazy var unlockVipView: UIView = { - let view = UIView() - view.backgroundColor = .white - view.isHidden = true - - let heroPlaceholder = UIImageView() - heroPlaceholder.backgroundColor = UIColor(hexStr: "#F5F5F5") - heroPlaceholder.cornerRadius = 16 - view.addSubview(heroPlaceholder) - heroPlaceholder.layoutChain - .top(120) - .edgesHorzontal(40) - .height(200) - - view.addSubview(unlockVipPhoneAreaLab) - unlockVipPhoneAreaLab.layoutChain - .topToBottomOfView(heroPlaceholder, offset: 16) - .centerX() - - let unlockVipBtn = UIButton() - unlockVipBtn.setTitle("开通会员", for: .normal) - unlockVipBtn.setTitleColor(.white, for: .normal) - unlockVipBtn.titleLabel?.font = FontManager.boboBold(16) - unlockVipBtn.backgroundColor = UIColor(hexStr: "#16B3FF") - unlockVipBtn.cornerRadius = 25 - unlockVipBtn.rx.tap.subscribe(onNext: { _ in - AppRouter.push(Route.vipRecharge) - }).disposed(by: disposeBag) - view.addSubview(unlockVipBtn) - unlockVipBtn.layoutChain - .edgesHorzontal(15) - .bottom(kSafeBottomMargin + 20) - .height(50) - - let unlockVipTitleLab = UILabel() - unlockVipTitleLab.text = "再迈一步,你就能看到:" - unlockVipTitleLab.font = .systemFont(ofSize: 14, weight: .medium) - unlockVipTitleLab.textColor = UIColor(hexStr: "#16B3FF") - view.addSubview(unlockVipTitleLab) - unlockVipTitleLab.layoutChain - .bottomToTopOfView(unlockVipBtn, offset: -60) - .centerX() - - return view - }() - - lazy var unlockVipLottieView: LottieAnimationView = { - let view = LottieAnimationView(name: "phone_search_no_vip") - view.isHidden = true - return view - }() - - lazy var unlockVipPhoneAreaLab: UILabel = { - let label = UILabel() - label.font = .systemFont(ofSize: 20, weight: .semibold) - label.textColor = UIColor(hexStr: "#16B3FF") - return label - }() - override init(frame: CGRect) { super.init(frame: .zero) backgroundColor = .white diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationView.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationView.swift index b09b53b3..70ba01da 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationView.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationView.swift @@ -108,9 +108,9 @@ class SearchLocationView: UIView { contentView.addSubview(searchInputView) searchInputView.layoutChain - .topToBottomOfView(headerView, offset: 20) + .topToBottomOfView(headerView, offset: 45) .edgesHorzontal(15) - .bottom(kSafeBottomMargin + 30) + .bottom(kSafeBottomMargin + 30, relation: .greaterThanOrEqual) return view }() diff --git a/QuickLocation/Section/Map/MemberAnnotationView.swift b/QuickLocation/Section/Map/MemberAnnotationView.swift index fbfdf42b..00573284 100644 --- a/QuickLocation/Section/Map/MemberAnnotationView.swift +++ b/QuickLocation/Section/Map/MemberAnnotationView.swift @@ -131,6 +131,8 @@ final class MemberAnnotationView: MAAnnotationView { canShowCallout = false isEnabled = true isUserInteractionEnabled = true + // 不设 image 时高德按默认大头针锚点,自定义 bounds 会偏;给 1px 透明图让 SDK 用 bounds + image = Self.transparentPixel addSubview(containerView) containerView.isUserInteractionEnabled = true @@ -172,6 +174,20 @@ final class MemberAnnotationView: MAAnnotationView { layoutMarker() } + override func prepareForReuse() { + super.prepareForReuse() + showsNameTag = false + nameTagView.isHidden = true + nameLabel.text = nil + onTap = nil + layoutMarker() + } + + /// 高德在 didAdd 后才吃 bounds/centerOffset,加点完成后再 layout 一次 + func applyAnchor() { + layoutMarker() + } + @objc private func handleTap() { guard let ann = annotation as? MemberAnnotation else { return } onTap?(ann) @@ -202,8 +218,6 @@ final class MemberAnnotationView: MAAnnotationView { bounds = CGRect(x: 0, y: 0, width: totalWidth, height: totalHeight) containerView.frame = bounds - - // 色点中心对准 annotation 坐标(负 y 将视图上移) centerOffset = CGPoint(x: 0, y: -(totalHeight / 2 - Self.dotOuterSize / 2)) if showsNameTag { @@ -257,6 +271,15 @@ final class MemberAnnotationView: MAAnnotationView { } // MARK: - Dot Color + private static let transparentPixel: UIImage = { + UIGraphicsBeginImageContextWithOptions(CGSize(width: 1, height: 1), false, 0) + UIColor.clear.setFill() + UIRectFill(CGRect(x: 0, y: 0, width: 1, height: 1)) + let img = UIGraphicsGetImageFromCurrentImageContext() ?? UIImage() + UIGraphicsEndImageContext() + return img + }() + private static func dotColor(for member: CircleMember) -> UIColor { if member.isCurrentUser { return currentUserDotColor diff --git a/QuickLocation/Section/Mine/MinePhotoWallView.swift b/QuickLocation/Section/Mine/MinePhotoWallView.swift index 3e23aab1..d32ca167 100644 --- a/QuickLocation/Section/Mine/MinePhotoWallView.swift +++ b/QuickLocation/Section/Mine/MinePhotoWallView.swift @@ -175,6 +175,8 @@ final class MinePhotoWallView: UIView { daysBadge.layoutChain .leftToRightOfView(daysPrefixLab, offset: 4) .centerY() + .width(37) + .height(26) daysSuffixLab.layoutChain .leftToRightOfView(daysBadge, offset: 4) .right() @@ -192,15 +194,31 @@ final class MinePhotoWallView: UIView { return label }() - private lazy var daysBadge: UILabel = { - let label = PaddingLabel() + private lazy var daysBadge: UIView = { + let view = UIView() + view.addSubview(daysBadgeImg) + view.addSubview(daysLab) + daysBadgeImg.layoutChain.edges() + daysLab.layoutChain + .left(3) + .right(3) + .centerY(view, offset: 3) + return view + }() + + private lazy var daysBadgeImg: UIImageView = { + let iv = UIImageView(image: UIImage(named: "Mine/circle_days")) + iv.contentMode = .scaleAspectFit + return iv + }() + + private lazy var daysLab: UILabel = { + let label = UILabel() label.font = .systemFont(ofSize: 12, weight: .bold) label.textColor = UIColor(hexStr: "#16B3FF") - label.backgroundColor = UIColor(hexStr: "#E3F6FF") - label.cornerRadius = 4 - label.clipsToBounds = true label.textAlignment = .center - label.insets = UIEdgeInsets(top: 2, left: 6, bottom: 2, right: 6) + label.adjustsFontSizeToFitWidth = true + label.minimumScaleFactor = 0.6 return label }() @@ -267,7 +285,7 @@ final class MinePhotoWallView: UIView { daysRow.layoutChain .centerY(titleLab) .centerX() - .height(25) + .height(26) idRow.layoutChain .topToBottomOfView(titleLab, offset: 6) @@ -424,7 +442,7 @@ final class MinePhotoWallView: UIView { } else { titleLab.isHidden = true daysRow.isHidden = false - daysBadge.text = model.joinDaysDisplay + daysLab.text = model.joinDaysDisplay } idLab.text = "ID:\(model.user_id)" } diff --git a/QuickLocation/Section/Mine/MoodStatus/MoodStatusView.swift b/QuickLocation/Section/Mine/MoodStatus/MoodStatusView.swift index 8d58d25d..4fb1f5f1 100644 --- a/QuickLocation/Section/Mine/MoodStatus/MoodStatusView.swift +++ b/QuickLocation/Section/Mine/MoodStatus/MoodStatusView.swift @@ -133,14 +133,23 @@ final class MoodStatusView: UIView { } private func updateGridLayout(for width: CGFloat) { - let cardWidth = max(width - 32, 0) + let cardSideInset: CGFloat = 15 + let cardWidth = gridCard.bounds.width > 1 + ? gridCard.bounds.width + : max(width - cardSideInset * 2, 0) guard cardWidth > 0, abs(cardWidth - lastLayoutWidth) > 0.5 else { return } lastLayoutWidth = cardWidth - collectionLayout.itemSize = CGSize(width: 60, height: 60) - collectionLayout.hSpacing = 20 + let columns: CGFloat = 4 + let itemWidth: CGFloat = 60 + let hSpacing: CGFloat = 20 + let rowWidth = columns * itemWidth + (columns - 1) * hSpacing + let sideInset = max((cardWidth - rowWidth) / 2, 0) + + collectionLayout.itemSize = CGSize(width: itemWidth, height: 60) + collectionLayout.hSpacing = hSpacing collectionLayout.vSpacing = 10 - collectionLayout.sectionInset = UIEdgeInsets(top: 23, left: 23, bottom: 0, right: 23) + collectionLayout.sectionInset = UIEdgeInsets(top: 23, left: sideInset, bottom: 0, right: sideInset) collectionLayout.invalidateLayout() } diff --git a/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift b/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift index 3fd1edec..0c6948db 100644 --- a/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift +++ b/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift @@ -48,6 +48,7 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { private let imageEditorView = UIView() private let voiceEditorView = UIView() private let selectedImageView = UIImageView() + private let selectedImageMaskView = UIView() private let imagePlaceholderLabel = UILabel() private let captionField = UITextField() private let captionCountLabel = UILabel() @@ -108,10 +109,11 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { func setSelectedImage(_ image: UIImage?) { selectedImageView.image = image selectedImageView.isHidden = image == nil + selectedImageMaskView.isHidden = image == nil imagePlaceholderLabel.isHidden = image != nil imageThumbnailView.image = image imageThumbnailButton.isHidden = image == nil - deleteImageButton.isHidden = image == nil +// deleteImageButton.isHidden = image == nil addTile.alpha = 1 updateAddTilePosition(hasImage: image != nil) } @@ -435,11 +437,16 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { imageEditorView.layer.cornerRadius = scaled(22) imageEditorView.clipsToBounds = true + selectedImageMaskView.backgroundColor = .black.withAlphaComponent(0.2) + selectedImageMaskView.isHidden = true selectedImageView.contentMode = .scaleAspectFill selectedImageView.clipsToBounds = true imageEditorView.addSubview(selectedImageView) selectedImageView.layoutChain.edges() - + + imageEditorView.addSubview(selectedImageMaskView) + selectedImageMaskView.layoutChain.edges() + imagePlaceholderLabel.text = "点击下方添加一张图片" imagePlaceholderLabel.font = .systemFont(ofSize: scaled(14), weight: .medium) imagePlaceholderLabel.textColor = UIColor(hexStr: "#9298A1") diff --git a/QuickLocation/Section/PopupWindow/PromotionalActivitiesView.swift b/QuickLocation/Section/PopupWindow/PromotionalActivitiesView.swift index 5927b982..0e6e86f2 100644 --- a/QuickLocation/Section/PopupWindow/PromotionalActivitiesView.swift +++ b/QuickLocation/Section/PopupWindow/PromotionalActivitiesView.swift @@ -20,13 +20,24 @@ class PromotionalActivitiesView: UIView { private func setupRx() { navView.onBackTapped = { VipWaivePopView.show() } + + backBtn.rx.tap.subscribe(onNext: { _ in + AppRouter.shared.popOrDismiss() + }) + .disposed(by: disposeBag) } private func setupUI() { addSubview(scrollView) - + addSubview(backBtn) addSubview(navView) + backBtn.layoutChain + .top(kStatusBarHeight + 5) + .left(15) + .width(36) + .height(36) + navView.layoutChain .edges(excludingEdge: .bottom) .height(kNaviHeight) @@ -44,6 +55,13 @@ class PromotionalActivitiesView: UIView { lazy var navView = BaseNavigationView(title: "超值优惠") + lazy var backBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setImage(UIImage(named: "Common/back"), for: .normal) + btn.extendEdgeInsets = UIEdgeInsets(top: 54, left: 15, bottom: 100, right: 100) + return btn + }() + lazy var scrollView: UIScrollView = { let view = UIScrollView() view.backgroundColor = UIColor(hexStr: "#F6F9FB") diff --git a/QuickLocation/Section/Schedule/LocationPicker/LocationPickerVC.swift b/QuickLocation/Section/Schedule/LocationPicker/LocationPickerVC.swift index 57b77331..e2b85d55 100644 --- a/QuickLocation/Section/Schedule/LocationPicker/LocationPickerVC.swift +++ b/QuickLocation/Section/Schedule/LocationPicker/LocationPickerVC.swift @@ -317,7 +317,7 @@ extension LocationPickerVC: MAMapViewDelegate { } else { view?.annotation = annotation } - view?.image = UIImage(named: "Schedule/location") + view?.image = UIImage(named: "IM/location_pin") view?.centerOffset = CGPoint(x: 0, y: -30) return view } diff --git a/QuickLocation/UIKit/CollectionHFlowLayout.swift b/QuickLocation/UIKit/CollectionHFlowLayout.swift index 4d61b918..458c9fab 100644 --- a/QuickLocation/UIKit/CollectionHFlowLayout.swift +++ b/QuickLocation/UIKit/CollectionHFlowLayout.swift @@ -22,6 +22,11 @@ class CollectionHFlowLayout: UICollectionViewLayout { var contentWidth: CGFloat = 0 var page = 0 // MARK: - Lifecycle + private var pageWidth: CGFloat { + let width = collectionView?.bounds.width ?? 0 + return width > 1 ? width : UIScreen.main.bounds.width + } + override func prepare() { super.prepare() attributesArr = [] @@ -29,6 +34,7 @@ class CollectionHFlowLayout: UICollectionViewLayout { page = 0 let pageTotal = rows * colums guard let itemCount = collectionView?.numberOfItems(inSection: 0) else { return } + let pageWidth = self.pageWidth for index in 0.. Bool { + abs((collectionView?.bounds.width ?? 0) - newBounds.width) > 0.5 + } @@ -65,6 +75,6 @@ class CollectionHFlowLayout: UICollectionViewLayout { override var collectionViewContentSize: CGSize { var height = itemSize.height * CGFloat(rows) height = height + CGFloat(rows - 1) * vSpacing + sectionInset.top + sectionInset.bottom - return CGSize(width: CGFloat(page + 1) * (collectionView?.bounds.width ?? UIScreen.main.bounds.width), height: height) + return CGSize(width: CGFloat(page + 1) * pageWidth, height: height) } }