Browse Source

升级TZImagePicker ,处理iOS 18系统相册问题

Steven 6 months ago
parent
commit
02d1b6539f
41 changed files with 253 additions and 330 deletions
  1. 8 8
      KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj
  2. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/CloudAccompanyLibrary
  3. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/Info.plist
  4. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeDirectory
  5. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeRequirements-1
  6. 1 1
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeResources
  7. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeSignature
  8. 10 0
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/Headers/KSDocumentViewController.h
  9. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/Info.plist
  10. BIN
      KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/KSToolLibrary
  11. 1 1
      KulexiuForTeacher/Podfile
  12. 8 8
      KulexiuForTeacher/Podfile.lock
  13. 8 8
      KulexiuForTeacher/Pods/Manifest.lock
  14. 151 147
      KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj
  15. 0 120
      KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist
  16. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXChatMusicMessage.h
  17. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXChatMusicMessage.m
  18. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.h
  19. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.m
  20. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXLiveShareMessage.h
  21. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXLiveShareMessage.m
  22. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.h
  23. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.m
  24. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.h
  25. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.m
  26. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.h
  27. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.m
  28. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.h
  29. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.m
  30. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.h
  31. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.m
  32. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.h
  33. 0 0
      KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.m
  34. 15 14
      KulexiuForTeacher/Pods/TZImagePickerController/README.md
  35. 2 2
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m
  36. 1 1
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/ar.lproj/Localizable.strings
  37. 4 4
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h
  38. 7 5
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m
  39. 35 7
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
  40. 1 1
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m
  41. 1 3
      KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m

+ 8 - 8
KulexiuForTeacher/KulexiuForTeacher.xcodeproj/project.pbxproj

@@ -385,7 +385,6 @@
 		BC161CE92AE0FD630071530A /* TenantGroupSortView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC161CE82AE0FD630071530A /* TenantGroupSortView.xib */; };
 		BC1E284F2C77218A0063E0A1 /* KSDeleteFailedAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC1E284C2C7721890063E0A1 /* KSDeleteFailedAlertView.xib */; };
 		BC1E28502C77218A0063E0A1 /* KSDeleteFailedAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1E284E2C77218A0063E0A1 /* KSDeleteFailedAlertView.m */; };
-		BC1E285A2C783B5A0063E0A1 /* KSToolLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC1E28592C783B5A0063E0A1 /* KSToolLibrary.framework */; };
 		BC221FA128C72B9500F99802 /* MyStyleVideoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC221F9D28C72B9500F99802 /* MyStyleVideoView.xib */; };
 		BC221FA228C72B9500F99802 /* MyStyleVideoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC221F9E28C72B9500F99802 /* MyStyleVideoCell.xib */; };
 		BC221FA328C72B9500F99802 /* MyStyleVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC221F9F28C72B9500F99802 /* MyStyleVideoView.m */; };
@@ -567,7 +566,6 @@
 		BC513E7E28A4D874003F58C4 /* live_animation.json in Resources */ = {isa = PBXBuildFile; fileRef = BC513E7D28A4D874003F58C4 /* live_animation.json */; };
 		BC523B1028A09F3000E9D66B /* MineHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC523B0F28A09F2F00E9D66B /* MineHeadView.m */; };
 		BC523B1228A09F3800E9D66B /* MineHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC523B1128A09F3800E9D66B /* MineHeadView.xib */; };
-		BC533DA42C7DF2E50073169B /* CloudAccompanyLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC533DA32C7DF2E50073169B /* CloudAccompanyLibrary.framework */; };
 		BC542E3328406EA400633781 /* UserAuthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E3228406EA400633781 /* UserAuthViewController.m */; };
 		BC542E3628406F7700633781 /* UserAuthBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC542E3528406F7700633781 /* UserAuthBodyView.m */; };
 		BC542E3828406F8000633781 /* UserAuthBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC542E3728406F8000633781 /* UserAuthBodyView.xib */; };
@@ -713,6 +711,8 @@
 		BC76146F280D57220080FD1F /* HomeworkVideoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC76146E280D57220080FD1F /* HomeworkVideoView.xib */; };
 		BC7705FD287676D3003EFA7F /* HomeActionView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7705FC287676D3003EFA7F /* HomeActionView.m */; };
 		BC7705FF287676DC003EFA7F /* HomeActionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7705FE287676DC003EFA7F /* HomeActionView.xib */; };
+		BC77A6EA2CB7DE2800E1A595 /* KSToolLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC77A6E92CB7DE2800E1A595 /* KSToolLibrary.framework */; };
+		BC77A6EC2CB7DE4500E1A595 /* CloudAccompanyLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC77A6EB2CB7DE4500E1A595 /* CloudAccompanyLibrary.framework */; };
 		BC7B0F5029271B5E0044CF61 /* CourseWarePreviewView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7B0F4F29271B5E0044CF61 /* CourseWarePreviewView.m */; };
 		BC7B0F5229271B650044CF61 /* CourseWarePreviewView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7B0F5129271B650044CF61 /* CourseWarePreviewView.xib */; };
 		BC7B0F5529276D980044CF61 /* KSWareSliderView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7B0F5429276D980044CF61 /* KSWareSliderView.m */; };
@@ -1815,7 +1815,6 @@
 		BC1E284C2C7721890063E0A1 /* KSDeleteFailedAlertView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KSDeleteFailedAlertView.xib; sourceTree = "<group>"; };
 		BC1E284D2C7721890063E0A1 /* KSDeleteFailedAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSDeleteFailedAlertView.h; sourceTree = "<group>"; };
 		BC1E284E2C77218A0063E0A1 /* KSDeleteFailedAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSDeleteFailedAlertView.m; sourceTree = "<group>"; };
-		BC1E28592C783B5A0063E0A1 /* KSToolLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = KSToolLibrary.framework; sourceTree = "<group>"; };
 		BC221F9B28C72B9500F99802 /* MyStyleVideoView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoView.h; sourceTree = "<group>"; };
 		BC221F9C28C72B9500F99802 /* MyStyleVideoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyStyleVideoCell.h; sourceTree = "<group>"; };
 		BC221F9D28C72B9500F99802 /* MyStyleVideoView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyStyleVideoView.xib; sourceTree = "<group>"; };
@@ -2109,7 +2108,6 @@
 		BC523B0E28A09F2F00E9D66B /* MineHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MineHeadView.h; sourceTree = "<group>"; };
 		BC523B0F28A09F2F00E9D66B /* MineHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MineHeadView.m; sourceTree = "<group>"; };
 		BC523B1128A09F3800E9D66B /* MineHeadView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MineHeadView.xib; sourceTree = "<group>"; };
-		BC533DA32C7DF2E50073169B /* CloudAccompanyLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CloudAccompanyLibrary.framework; sourceTree = "<group>"; };
 		BC542E3128406EA400633781 /* UserAuthViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserAuthViewController.h; sourceTree = "<group>"; };
 		BC542E3228406EA400633781 /* UserAuthViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserAuthViewController.m; sourceTree = "<group>"; };
 		BC542E3428406F7700633781 /* UserAuthBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserAuthBodyView.h; sourceTree = "<group>"; };
@@ -2328,6 +2326,8 @@
 		BC7705FB287676D3003EFA7F /* HomeActionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeActionView.h; sourceTree = "<group>"; };
 		BC7705FC287676D3003EFA7F /* HomeActionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeActionView.m; sourceTree = "<group>"; };
 		BC7705FE287676DC003EFA7F /* HomeActionView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeActionView.xib; sourceTree = "<group>"; };
+		BC77A6E92CB7DE2800E1A595 /* KSToolLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = KSToolLibrary.framework; sourceTree = "<group>"; };
+		BC77A6EB2CB7DE4500E1A595 /* CloudAccompanyLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CloudAccompanyLibrary.framework; sourceTree = "<group>"; };
 		BC7B0F4E29271B5E0044CF61 /* CourseWarePreviewView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CourseWarePreviewView.h; sourceTree = "<group>"; };
 		BC7B0F4F29271B5E0044CF61 /* CourseWarePreviewView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CourseWarePreviewView.m; sourceTree = "<group>"; };
 		BC7B0F5129271B650044CF61 /* CourseWarePreviewView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CourseWarePreviewView.xib; sourceTree = "<group>"; };
@@ -3009,7 +3009,7 @@
 				2779333F27E314640010E277 /* CoreVideo.framework in Frameworks */,
 				BC8B6E572856ED0600866917 /* UMDevice.framework in Frameworks */,
 				BC3A55662BAA799B002E1616 /* KSTunerLibrary.framework in Frameworks */,
-				BC533DA42C7DF2E50073169B /* CloudAccompanyLibrary.framework in Frameworks */,
+				BC77A6EC2CB7DE4500E1A595 /* CloudAccompanyLibrary.framework in Frameworks */,
 				2779334127E3146B0010E277 /* CoreMedia.framework in Frameworks */,
 				2779333D27E314550010E277 /* AVFoundation.framework in Frameworks */,
 				2779333B27E314450010E277 /* AudioToolbox.framework in Frameworks */,
@@ -3025,7 +3025,7 @@
 				BC8B6E5C2856ED0600866917 /* libSocialOfficialWeChat.a in Frameworks */,
 				BCFEE18A2AD15A27000E888F /* AudioKitEX in Frameworks */,
 				2779332B27E313EB0010E277 /* CoreTelephony.framework in Frameworks */,
-				BC1E285A2C783B5A0063E0A1 /* KSToolLibrary.framework in Frameworks */,
+				BC77A6EA2CB7DE2800E1A595 /* KSToolLibrary.framework in Frameworks */,
 				2779332927E313E40010E277 /* WebKit.framework in Frameworks */,
 				2779332727E313DC0010E277 /* MobileCoreServices.framework in Frameworks */,
 				2779332527E313D20010E277 /* AssetsLibrary.framework in Frameworks */,
@@ -5305,8 +5305,8 @@
 			isa = PBXGroup;
 			children = (
 				BC3A55612BAA798A002E1616 /* KSTunerLibrary.framework */,
-				BC1E28592C783B5A0063E0A1 /* KSToolLibrary.framework */,
-				BC533DA32C7DF2E50073169B /* CloudAccompanyLibrary.framework */,
+				BC77A6E92CB7DE2800E1A595 /* KSToolLibrary.framework */,
+				BC77A6EB2CB7DE4500E1A595 /* CloudAccompanyLibrary.framework */,
 				BC00A65B2BB58F1700231B74 /* LLPhotoBrowse.bundle */,
 				BC00A6592BB58F0000231B74 /* WMPlayer.bundle */,
 				BC24570E286C437D00D1F7C0 /* SoundFontFile */,

BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/CloudAccompanyLibrary


BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/Info.plist


BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeDirectory


BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeRequirements-1


+ 1 - 1
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeResources

@@ -70,7 +70,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		eWLlubwTo0FaMLs4jLsrdWyOWZs=
+		p9d8vM2Q8TYqxIhjLz4voy55li0=
 		</data>
 	</dict>
 	<key>files2</key>

BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/CloudAccompanyLibrary.framework/_CodeSignature/CodeSignature


+ 10 - 0
KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/Headers/KSDocumentViewController.h

@@ -8,10 +8,20 @@
 
 #import <UIKit/UIKit.h>
 
+typedef NS_ENUM(NSInteger, KSDOCUMENT_TYPE) {
+    KSDOCUMENT_TYPE_UPLOAD,
+    KSDOCUMENT_TYPE_DOWNLOADAUDIO,
+    KSDOCUMENT_TYPE_DOWNLOADFILE,
+};
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface KSDocumentViewController : UIDocumentPickerViewController
 
+@property (nonatomic, assign) KSDOCUMENT_TYPE currentType;
+
+@property (nonatomic, strong) NSURL *currentSaveUrl;
+
 @property (nonatomic, strong) UIColor *buttonColor;
 
 @end

BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/Info.plist


BIN
KulexiuForTeacher/KulexiuForTeacher/ToolKit/KSToolLibrary.framework/KSToolLibrary


+ 1 - 1
KulexiuForTeacher/Podfile

@@ -28,7 +28,7 @@ install! 'cocoapods', :disable_input_output_paths => true
   pod 'RSKImageCropper'
   pod 'TYCyclePagerView'
   
-  pod 'TZImagePickerController'
+  pod 'TZImagePickerController', "~>3.8.7"
   #lottie 动画库
   pod 'lottie-ios', '~> 2.5'
   

+ 8 - 8
KulexiuForTeacher/Podfile.lock

@@ -231,11 +231,11 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.3):
-    - TZImagePickerController/Basic (= 3.8.3)
-    - TZImagePickerController/Location (= 3.8.3)
-  - TZImagePickerController/Basic (3.8.3)
-  - TZImagePickerController/Location (3.8.3)
+  - TZImagePickerController (3.8.7):
+    - TZImagePickerController/Basic (= 3.8.7)
+    - TZImagePickerController/Location (= 3.8.7)
+  - TZImagePickerController/Basic (3.8.7)
+  - TZImagePickerController/Location (3.8.7)
   - Whiteboard (2.16.39):
     - Whiteboard/Whiteboard-YYModel (= 2.16.39)
   - Whiteboard/Base (2.16.39):
@@ -289,7 +289,7 @@ DEPENDENCIES:
   - TUISearch/UI_Classic
   - TXLiteAVSDK_Professional
   - TYCyclePagerView
-  - TZImagePickerController
+  - TZImagePickerController (~> 3.8.7)
   - Whiteboard
 
 SPEC REPOS:
@@ -369,10 +369,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4
+  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
   Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: 409015a7b6d294d1b0057c9e5290353dee49a410
+PODFILE CHECKSUM: 72369807dbbdad7b4f31ff5aed439d267d467412
 
 COCOAPODS: 1.15.2

+ 8 - 8
KulexiuForTeacher/Pods/Manifest.lock

@@ -231,11 +231,11 @@ PODS:
     - TXLiteAVSDK_Professional/Professional (= 11.7.15304)
   - TXLiteAVSDK_Professional/Professional (11.7.15304)
   - TYCyclePagerView (1.2.0)
-  - TZImagePickerController (3.8.3):
-    - TZImagePickerController/Basic (= 3.8.3)
-    - TZImagePickerController/Location (= 3.8.3)
-  - TZImagePickerController/Basic (3.8.3)
-  - TZImagePickerController/Location (3.8.3)
+  - TZImagePickerController (3.8.7):
+    - TZImagePickerController/Basic (= 3.8.7)
+    - TZImagePickerController/Location (= 3.8.7)
+  - TZImagePickerController/Basic (3.8.7)
+  - TZImagePickerController/Location (3.8.7)
   - Whiteboard (2.16.39):
     - Whiteboard/Whiteboard-YYModel (= 2.16.39)
   - Whiteboard/Base (2.16.39):
@@ -289,7 +289,7 @@ DEPENDENCIES:
   - TUISearch/UI_Classic
   - TXLiteAVSDK_Professional
   - TYCyclePagerView
-  - TZImagePickerController
+  - TZImagePickerController (~> 3.8.7)
   - Whiteboard
 
 SPEC REPOS:
@@ -369,10 +369,10 @@ SPEC CHECKSUMS:
   TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
   TXLiteAVSDK_Professional: 60add29dbe52bed7d828f1d68d88487d9f16e9d1
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
-  TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4
+  TZImagePickerController: 5f35bb7266552e36ca834bafa955b869fe086124
   Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: 409015a7b6d294d1b0057c9e5290353dee49a410
+PODFILE CHECKSUM: 72369807dbbdad7b4f31ff5aed439d267d467412
 
 COCOAPODS: 1.15.2

+ 151 - 147
KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj

@@ -1552,24 +1552,24 @@
 		BC1C980538365364BA47BEC364D917D3 /* QCloudAuthentationV4Creator.h in Headers */ = {isa = PBXBuildFile; fileRef = 58EF0ED3F641F7C4343A13B43A461C46 /* QCloudAuthentationV4Creator.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		BC21AAB3DF90CB6719EDE4A9579DB7B4 /* JXCategoryTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D63816590A863B5BB41FF97B8AB1CFF /* JXCategoryTitleCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		BC39164671956A06963E783D36DE9AB5 /* QCloudHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = E14515D799B017007060ECA87CA06921 /* QCloudHosts.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
-		BC9ADDF72CA54A78004E6EEC /* TXLiveShareCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9ADDF22CA54A78004E6EEC /* TXLiveShareCell.m */; };
-		BC9ADDF82CA54A78004E6EEC /* TXShareMusicCellContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9ADDF62CA54A78004E6EEC /* TXShareMusicCellContentView.m */; };
-		BC9ADDF92CA54A78004E6EEC /* TXChatMusicShareCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9ADDF02CA54A78004E6EEC /* TXChatMusicShareCell.m */; };
-		BC9ADDFA2CA54A78004E6EEC /* TXShareLiveCellContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9ADDF42CA54A78004E6EEC /* TXShareLiveCellContentView.m */; };
-		BC9ADDFB2CA54A78004E6EEC /* TXLiveShareCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9ADDF12CA54A78004E6EEC /* TXLiveShareCell.h */; };
-		BC9ADDFC2CA54A78004E6EEC /* TXShareMusicCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9ADDF52CA54A78004E6EEC /* TXShareMusicCellContentView.h */; };
-		BC9ADDFD2CA54A78004E6EEC /* TXChatMusicShareCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9ADDEF2CA54A78004E6EEC /* TXChatMusicShareCell.h */; };
-		BC9ADDFE2CA54A78004E6EEC /* TXShareLiveCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9ADDF32CA54A78004E6EEC /* TXShareLiveCellContentView.h */; };
-		BC9CDE282C9AB66F006C4D16 /* TXLiveShareMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9CDE262C9AB66F006C4D16 /* TXLiveShareMessage.h */; };
-		BC9CDE292C9AB66F006C4D16 /* TXChatMusicMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9CDE242C9AB66F006C4D16 /* TXChatMusicMessage.h */; };
-		BC9CDE2A2C9AB66F006C4D16 /* TXLiveShareMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9CDE272C9AB66F006C4D16 /* TXLiveShareMessage.m */; };
-		BC9CDE2B2C9AB66F006C4D16 /* TXChatMusicMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9CDE252C9AB66F006C4D16 /* TXChatMusicMessage.m */; };
-		BC9CDE2E2C9AB973006C4D16 /* TXGroupNoticeMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9CDE2C2C9AB972006C4D16 /* TXGroupNoticeMessage.h */; };
-		BC9CDE2F2C9AB973006C4D16 /* TXGroupNoticeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9CDE2D2C9AB972006C4D16 /* TXGroupNoticeMessage.m */; };
-		BC9CDE342C9AB98A006C4D16 /* TXGroupNoticeMessageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9CDE302C9AB98A006C4D16 /* TXGroupNoticeMessageCell.h */; };
-		BC9CDE352C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9CDE322C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.h */; };
-		BC9CDE362C9AB98A006C4D16 /* TXGroupNoticeMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9CDE312C9AB98A006C4D16 /* TXGroupNoticeMessageCell.m */; };
-		BC9CDE372C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9CDE332C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.m */; };
+		BC77A7072CB7E0EB00E1A595 /* TXLiveShareMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7052CB7E0EB00E1A595 /* TXLiveShareMessage.h */; };
+		BC77A7082CB7E0EB00E1A595 /* TXChatMusicMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7012CB7E0EB00E1A595 /* TXChatMusicMessage.h */; };
+		BC77A7092CB7E0EB00E1A595 /* TXGroupNoticeMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7032CB7E0EB00E1A595 /* TXGroupNoticeMessage.h */; };
+		BC77A70A2CB7E0EB00E1A595 /* TXGroupNoticeMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7042CB7E0EB00E1A595 /* TXGroupNoticeMessage.m */; };
+		BC77A70B2CB7E0EB00E1A595 /* TXLiveShareMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7062CB7E0EB00E1A595 /* TXLiveShareMessage.m */; };
+		BC77A70C2CB7E0EB00E1A595 /* TXChatMusicMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7022CB7E0EB00E1A595 /* TXChatMusicMessage.m */; };
+		BC77A7192CB7E11300E1A595 /* TXLiveShareCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7132CB7E11300E1A595 /* TXLiveShareCell.h */; };
+		BC77A71A2CB7E11300E1A595 /* TXChatMusicShareCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A70D2CB7E11300E1A595 /* TXChatMusicShareCell.h */; };
+		BC77A71B2CB7E11300E1A595 /* TXGroupNoticeMessageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A70F2CB7E11300E1A595 /* TXGroupNoticeMessageCell.h */; };
+		BC77A71C2CB7E11300E1A595 /* TXGroupNoticeMessageContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7112CB7E11300E1A595 /* TXGroupNoticeMessageContentView.h */; };
+		BC77A71D2CB7E11300E1A595 /* TXShareLiveCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7152CB7E11300E1A595 /* TXShareLiveCellContentView.h */; };
+		BC77A71E2CB7E11300E1A595 /* TXShareMusicCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC77A7172CB7E11300E1A595 /* TXShareMusicCellContentView.h */; };
+		BC77A71F2CB7E11300E1A595 /* TXGroupNoticeMessageContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7122CB7E11300E1A595 /* TXGroupNoticeMessageContentView.m */; };
+		BC77A7202CB7E11300E1A595 /* TXLiveShareCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7142CB7E11300E1A595 /* TXLiveShareCell.m */; };
+		BC77A7212CB7E11300E1A595 /* TXShareMusicCellContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7182CB7E11300E1A595 /* TXShareMusicCellContentView.m */; };
+		BC77A7222CB7E11300E1A595 /* TXChatMusicShareCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A70E2CB7E11300E1A595 /* TXChatMusicShareCell.m */; };
+		BC77A7232CB7E11300E1A595 /* TXGroupNoticeMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7102CB7E11300E1A595 /* TXGroupNoticeMessageCell.m */; };
+		BC77A7242CB7E11300E1A595 /* TXShareLiveCellContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC77A7162CB7E11300E1A595 /* TXShareLiveCellContentView.m */; };
 		BCB13876DAE2BF3E8AC7A539C1A69B6D /* LOTShapeFill.m in Sources */ = {isa = PBXBuildFile; fileRef = B6574B2B98D36024CCCAC387F45C6E4B /* LOTShapeFill.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
 		BCCE8FB859A66819765E8033629F3622 /* KS3ListBucketsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = CA1E2A9BFCDC4456A49F29E716C13955 /* KS3ListBucketsResponse.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		BD10398526C4373DCCCDE772C65A8F5C /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 329557B8F792DDD5250B397045715225 /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Project, ); }; };
@@ -4267,27 +4267,27 @@
 		BC4BAB8D9E95606E485D6C4CD4ABF75E /* LOTValueCallback.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LOTValueCallback.h; path = "lottie-ios/Classes/PublicHeaders/LOTValueCallback.h"; sourceTree = "<group>"; };
 		BC5F8D238EFC359C796EAE4F05DB931B /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = "<group>"; };
 		BC712B415A7230233D5F275FC6F66C32 /* TUIJoinGroupMessageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TUIJoinGroupMessageCell.h; path = TUIChat/UI_Classic/Cell/Chat/TUIJoinGroupMessageCell.h; sourceTree = "<group>"; };
+		BC77A7012CB7E0EB00E1A595 /* TXChatMusicMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXChatMusicMessage.h; path = TUIChat/BaseCellData/Custom/TXChatMusicMessage.h; sourceTree = "<group>"; };
+		BC77A7022CB7E0EB00E1A595 /* TXChatMusicMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXChatMusicMessage.m; path = TUIChat/BaseCellData/Custom/TXChatMusicMessage.m; sourceTree = "<group>"; };
+		BC77A7032CB7E0EB00E1A595 /* TXGroupNoticeMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXGroupNoticeMessage.h; path = TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.h; sourceTree = "<group>"; };
+		BC77A7042CB7E0EB00E1A595 /* TXGroupNoticeMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXGroupNoticeMessage.m; path = TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.m; sourceTree = "<group>"; };
+		BC77A7052CB7E0EB00E1A595 /* TXLiveShareMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXLiveShareMessage.h; path = TUIChat/BaseCellData/Custom/TXLiveShareMessage.h; sourceTree = "<group>"; };
+		BC77A7062CB7E0EB00E1A595 /* TXLiveShareMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXLiveShareMessage.m; path = TUIChat/BaseCellData/Custom/TXLiveShareMessage.m; sourceTree = "<group>"; };
+		BC77A70D2CB7E11300E1A595 /* TXChatMusicShareCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXChatMusicShareCell.h; path = TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.h; sourceTree = "<group>"; };
+		BC77A70E2CB7E11300E1A595 /* TXChatMusicShareCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXChatMusicShareCell.m; path = TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.m; sourceTree = "<group>"; };
+		BC77A70F2CB7E11300E1A595 /* TXGroupNoticeMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXGroupNoticeMessageCell.h; path = TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.h; sourceTree = "<group>"; };
+		BC77A7102CB7E11300E1A595 /* TXGroupNoticeMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXGroupNoticeMessageCell.m; path = TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.m; sourceTree = "<group>"; };
+		BC77A7112CB7E11300E1A595 /* TXGroupNoticeMessageContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXGroupNoticeMessageContentView.h; path = TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.h; sourceTree = "<group>"; };
+		BC77A7122CB7E11300E1A595 /* TXGroupNoticeMessageContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXGroupNoticeMessageContentView.m; path = TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.m; sourceTree = "<group>"; };
+		BC77A7132CB7E11300E1A595 /* TXLiveShareCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXLiveShareCell.h; path = TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.h; sourceTree = "<group>"; };
+		BC77A7142CB7E11300E1A595 /* TXLiveShareCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXLiveShareCell.m; path = TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.m; sourceTree = "<group>"; };
+		BC77A7152CB7E11300E1A595 /* TXShareLiveCellContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXShareLiveCellContentView.h; path = TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.h; sourceTree = "<group>"; };
+		BC77A7162CB7E11300E1A595 /* TXShareLiveCellContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXShareLiveCellContentView.m; path = TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.m; sourceTree = "<group>"; };
+		BC77A7172CB7E11300E1A595 /* TXShareMusicCellContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TXShareMusicCellContentView.h; path = TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.h; sourceTree = "<group>"; };
+		BC77A7182CB7E11300E1A595 /* TXShareMusicCellContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TXShareMusicCellContentView.m; path = TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.m; sourceTree = "<group>"; };
 		BC87405ABB3E9F194BAA21B786BE4113 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = "<group>"; };
 		BC996AF7FD255E8026804B5C1FC22605 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = "<group>"; };
-		BC9ADDEF2CA54A78004E6EEC /* TXChatMusicShareCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXChatMusicShareCell.h; sourceTree = "<group>"; };
-		BC9ADDF02CA54A78004E6EEC /* TXChatMusicShareCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXChatMusicShareCell.m; sourceTree = "<group>"; };
-		BC9ADDF12CA54A78004E6EEC /* TXLiveShareCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXLiveShareCell.h; sourceTree = "<group>"; };
-		BC9ADDF22CA54A78004E6EEC /* TXLiveShareCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXLiveShareCell.m; sourceTree = "<group>"; };
-		BC9ADDF32CA54A78004E6EEC /* TXShareLiveCellContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXShareLiveCellContentView.h; sourceTree = "<group>"; };
-		BC9ADDF42CA54A78004E6EEC /* TXShareLiveCellContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXShareLiveCellContentView.m; sourceTree = "<group>"; };
-		BC9ADDF52CA54A78004E6EEC /* TXShareMusicCellContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXShareMusicCellContentView.h; sourceTree = "<group>"; };
-		BC9ADDF62CA54A78004E6EEC /* TXShareMusicCellContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXShareMusicCellContentView.m; sourceTree = "<group>"; };
 		BC9BFF5D71D6492F27ABAC2DBF170E7F /* KS3Response.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KS3Response.m; path = KS3YunSDK/KS3YunSDK/KSYCore.RunTime/KS3Response.m; sourceTree = "<group>"; };
-		BC9CDE242C9AB66F006C4D16 /* TXChatMusicMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXChatMusicMessage.h; sourceTree = "<group>"; };
-		BC9CDE252C9AB66F006C4D16 /* TXChatMusicMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXChatMusicMessage.m; sourceTree = "<group>"; };
-		BC9CDE262C9AB66F006C4D16 /* TXLiveShareMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXLiveShareMessage.h; sourceTree = "<group>"; };
-		BC9CDE272C9AB66F006C4D16 /* TXLiveShareMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXLiveShareMessage.m; sourceTree = "<group>"; };
-		BC9CDE2C2C9AB972006C4D16 /* TXGroupNoticeMessage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXGroupNoticeMessage.h; sourceTree = "<group>"; };
-		BC9CDE2D2C9AB972006C4D16 /* TXGroupNoticeMessage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXGroupNoticeMessage.m; sourceTree = "<group>"; };
-		BC9CDE302C9AB98A006C4D16 /* TXGroupNoticeMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXGroupNoticeMessageCell.h; sourceTree = "<group>"; };
-		BC9CDE312C9AB98A006C4D16 /* TXGroupNoticeMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXGroupNoticeMessageCell.m; sourceTree = "<group>"; };
-		BC9CDE322C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TXGroupNoticeMessageContentView.h; sourceTree = "<group>"; };
-		BC9CDE332C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TXGroupNoticeMessageContentView.m; sourceTree = "<group>"; };
 		BCA15DE54A60D4F42EAA84A42F9CFF67 /* V2TIMOfflinePushManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = V2TIMOfflinePushManager.h; path = ImSDK_Plus.framework/cpluscplus/include/V2TIMOfflinePushManager.h; sourceTree = "<group>"; };
 		BD296217A0536D66A15FFCE3EBC625FD /* RACScheduler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RACScheduler.h; path = ReactiveObjC/RACScheduler.h; sourceTree = "<group>"; };
 		BD2B2504DAFA98EF1B3B28AAA7292700 /* LOTLayerContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LOTLayerContainer.h; path = "lottie-ios/Classes/AnimatableLayers/LOTLayerContainer.h"; sourceTree = "<group>"; };
@@ -7079,12 +7079,12 @@
 				B7B627D81B0505473885E5339EA3B558 /* TUILinkCellData.m */,
 				CCF7D0BDE1A7CF77793E169181AEBE22 /* TUIOrderCellData.h */,
 				AE349724C3CB82B0479DF1B59DE404C1 /* TUIOrderCellData.m */,
-				BC9CDE242C9AB66F006C4D16 /* TXChatMusicMessage.h */,
-				BC9CDE252C9AB66F006C4D16 /* TXChatMusicMessage.m */,
-				BC9CDE262C9AB66F006C4D16 /* TXLiveShareMessage.h */,
-				BC9CDE272C9AB66F006C4D16 /* TXLiveShareMessage.m */,
-				BC9CDE2C2C9AB972006C4D16 /* TXGroupNoticeMessage.h */,
-				BC9CDE2D2C9AB972006C4D16 /* TXGroupNoticeMessage.m */,
+				BC77A7012CB7E0EB00E1A595 /* TXChatMusicMessage.h */,
+				BC77A7022CB7E0EB00E1A595 /* TXChatMusicMessage.m */,
+				BC77A7032CB7E0EB00E1A595 /* TXGroupNoticeMessage.h */,
+				BC77A7042CB7E0EB00E1A595 /* TXGroupNoticeMessage.m */,
+				BC77A7052CB7E0EB00E1A595 /* TXLiveShareMessage.h */,
+				BC77A7062CB7E0EB00E1A595 /* TXLiveShareMessage.m */,
 			);
 			name = Custom;
 			sourceTree = "<group>";
@@ -7594,18 +7594,18 @@
 				F669BA428C5B3062B2A32CCDFABD523F /* TUILinkCell.m */,
 				7BEB689453F4400D5F4CD451FB315078 /* TUIOrderCell.h */,
 				0372615965E3C4DC4C54EAD7B7B87544 /* TUIOrderCell.m */,
-				BC9ADDEF2CA54A78004E6EEC /* TXChatMusicShareCell.h */,
-				BC9ADDF02CA54A78004E6EEC /* TXChatMusicShareCell.m */,
-				BC9ADDF12CA54A78004E6EEC /* TXLiveShareCell.h */,
-				BC9ADDF22CA54A78004E6EEC /* TXLiveShareCell.m */,
-				BC9ADDF32CA54A78004E6EEC /* TXShareLiveCellContentView.h */,
-				BC9ADDF42CA54A78004E6EEC /* TXShareLiveCellContentView.m */,
-				BC9ADDF52CA54A78004E6EEC /* TXShareMusicCellContentView.h */,
-				BC9ADDF62CA54A78004E6EEC /* TXShareMusicCellContentView.m */,
-				BC9CDE302C9AB98A006C4D16 /* TXGroupNoticeMessageCell.h */,
-				BC9CDE312C9AB98A006C4D16 /* TXGroupNoticeMessageCell.m */,
-				BC9CDE322C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.h */,
-				BC9CDE332C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.m */,
+				BC77A70D2CB7E11300E1A595 /* TXChatMusicShareCell.h */,
+				BC77A70E2CB7E11300E1A595 /* TXChatMusicShareCell.m */,
+				BC77A70F2CB7E11300E1A595 /* TXGroupNoticeMessageCell.h */,
+				BC77A7102CB7E11300E1A595 /* TXGroupNoticeMessageCell.m */,
+				BC77A7112CB7E11300E1A595 /* TXGroupNoticeMessageContentView.h */,
+				BC77A7122CB7E11300E1A595 /* TXGroupNoticeMessageContentView.m */,
+				BC77A7132CB7E11300E1A595 /* TXLiveShareCell.h */,
+				BC77A7142CB7E11300E1A595 /* TXLiveShareCell.m */,
+				BC77A7152CB7E11300E1A595 /* TXShareLiveCellContentView.h */,
+				BC77A7162CB7E11300E1A595 /* TXShareLiveCellContentView.m */,
+				BC77A7172CB7E11300E1A595 /* TXShareMusicCellContentView.h */,
+				BC77A7182CB7E11300E1A595 /* TXShareMusicCellContentView.m */,
 			);
 			name = Custom;
 			sourceTree = "<group>";
@@ -9802,7 +9802,16 @@
 			buildActionMask = 2147483647;
 			files = (
 				1DE13880F44FEF51F9EE7777AB88F75B /* amrFileCodec.h in Headers */,
+				BC77A7192CB7E11300E1A595 /* TXLiveShareCell.h in Headers */,
+				BC77A71A2CB7E11300E1A595 /* TXChatMusicShareCell.h in Headers */,
+				BC77A71B2CB7E11300E1A595 /* TXGroupNoticeMessageCell.h in Headers */,
+				BC77A71C2CB7E11300E1A595 /* TXGroupNoticeMessageContentView.h in Headers */,
+				BC77A71D2CB7E11300E1A595 /* TXShareLiveCellContentView.h in Headers */,
+				BC77A71E2CB7E11300E1A595 /* TXShareMusicCellContentView.h in Headers */,
 				325633F4BD4954346E5D03E1AAE2BBDD /* dec_if.h in Headers */,
+				BC77A7072CB7E0EB00E1A595 /* TXLiveShareMessage.h in Headers */,
+				BC77A7082CB7E0EB00E1A595 /* TXChatMusicMessage.h in Headers */,
+				BC77A7092CB7E0EB00E1A595 /* TXGroupNoticeMessage.h in Headers */,
 				86C43A14370A23B5DF9295C83FD4E0EF /* EMVoiceConverter.h in Headers */,
 				52A831BC6F5B3081AB25A963D1F6C625 /* if_rom.h in Headers */,
 				170A0254BA38D37B93B502F6DB3D325C /* interf_dec.h in Headers */,
@@ -9875,8 +9884,6 @@
 				890973C6444CA6217A0CD0866C1F0944 /* TUIJoinGroupMessageCell.h in Headers */,
 				DFCABB1A973C4D4833F1E71AC030FED4 /* TUIJoinGroupMessageCellData.h in Headers */,
 				D94B3347EC70410E6BEE11CB48CDE9E6 /* TUILinkCell.h in Headers */,
-				BC9CDE342C9AB98A006C4D16 /* TXGroupNoticeMessageCell.h in Headers */,
-				BC9CDE352C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.h in Headers */,
 				A0126555535413DAA87D3535EC59DB05 /* TUILinkCellData.h in Headers */,
 				086A69DE378797BEFE52A1A588C36B5A /* TUIMediaCollectionCell.h in Headers */,
 				8CF1243F7038482519F530C678BEEFC2 /* TUIMediaView.h in Headers */,
@@ -9891,7 +9898,6 @@
 				AF93B793CAECE68A397BD89CE11165E3 /* TUIMergeReplyQuoteView.h in Headers */,
 				7909B34318B92ABA5CAD652B1693B495 /* TUIMergeReplyQuoteViewData.h in Headers */,
 				450602420C2BE9759FA19E2A68E4872E /* TUIMessageBaseDataProvider.h in Headers */,
-				BC9CDE2E2C9AB973006C4D16 /* TXGroupNoticeMessage.h in Headers */,
 				B163B469D86BCBE387C933737F70EA82 /* TUIMessageBaseDataProvider+ProtectedAPI.h in Headers */,
 				78C0B949A3D41C034F2BCBAE40C3664D /* TUIMessageBaseMediaDataProvider.h in Headers */,
 				6705BFC69089AA5A0F402A7FA42BD31D /* TUIMessageCellConfig.h in Headers */,
@@ -9910,8 +9916,6 @@
 				A3A0962E4A8ECE495FE7E4D7619EB2DF /* TUIOrderCell.h in Headers */,
 				8CBD4CF570C51C94DDE89A91AD30C915 /* TUIOrderCellData.h in Headers */,
 				1207B27EC64E886AB24C40E92182D0CA /* TUIRecordView.h in Headers */,
-				BC9CDE282C9AB66F006C4D16 /* TXLiveShareMessage.h in Headers */,
-				BC9CDE292C9AB66F006C4D16 /* TXChatMusicMessage.h in Headers */,
 				12F4AC1E23D84D964416D2BFD66BE0D0 /* TUIReferenceMessageCell.h in Headers */,
 				BD146FAE53821E197BD123CAC3AEE5CB /* TUIRepliesDetailViewController.h in Headers */,
 				2B68B01FD57DC51B5E7622B3655658DC /* TUIReplyMessageCell.h in Headers */,
@@ -9933,10 +9937,6 @@
 				4C6829C8120567E7D7D2E35B388C6356 /* TUIVideoReplyQuoteViewData.h in Headers */,
 				992DF441D4574A9D6E6E1C8CE93E017A /* TUIVoiceMessageCell.h in Headers */,
 				2C1939E4B9484CD61687DACDD5D98FFD /* TUIVoiceMessageCellData.h in Headers */,
-				BC9ADDFB2CA54A78004E6EEC /* TXLiveShareCell.h in Headers */,
-				BC9ADDFC2CA54A78004E6EEC /* TXShareMusicCellContentView.h in Headers */,
-				BC9ADDFD2CA54A78004E6EEC /* TXChatMusicShareCell.h in Headers */,
-				BC9ADDFE2CA54A78004E6EEC /* TXShareLiveCellContentView.h in Headers */,
 				AB2A8AAE2E810AE59AE85670AB349D17 /* TUIVoiceReplyQuoteView.h in Headers */,
 				1E0B6A49FC1CF23601579729051E1DFA /* TUIVoiceReplyQuoteViewData.h in Headers */,
 				433E1FEEF0CEBC4D3902D8372FB5B2CD /* UIAlertController+TUICustomStyle.h in Headers */,
@@ -12165,8 +12165,6 @@
 				43FF778D4D4CBEAA34041F3965F732A9 /* TUICaptureTimer.m in Sources */,
 				49143FA77AE198D701F97B60DF89520D /* TUICaptureVideoPreviewView.m in Sources */,
 				F8EA368562B67643D191799C649B3F93 /* TUICaptureVideoPreviewViewController.m in Sources */,
-				BC9CDE2A2C9AB66F006C4D16 /* TXLiveShareMessage.m in Sources */,
-				BC9CDE2B2C9AB66F006C4D16 /* TXChatMusicMessage.m in Sources */,
 				D0E8EDFC0DB601391BB037A9A0BD37DF /* TUIChat-dummy.m in Sources */,
 				7E7B2D0BA3572B85651B449671842F80 /* TUIChatBaseDataProvider.m in Sources */,
 				599E900FCFDEF42A03631D7A267CF566 /* TUIChatCallingDataProvider.m in Sources */,
@@ -12215,16 +12213,14 @@
 				2DE6EFC6954664571E24274735B35E1B /* TUIInputController.m in Sources */,
 				4CA0B1AE608069E7042DDF6C00B4CCC5 /* TUIInputMoreCell.m in Sources */,
 				CDB24D6E39F18ACAA7E3E319CF5C1C95 /* TUIInputMoreCellData.m in Sources */,
-				BC9ADDF72CA54A78004E6EEC /* TXLiveShareCell.m in Sources */,
-				BC9ADDF82CA54A78004E6EEC /* TXShareMusicCellContentView.m in Sources */,
-				BC9ADDF92CA54A78004E6EEC /* TXChatMusicShareCell.m in Sources */,
-				BC9ADDFA2CA54A78004E6EEC /* TXShareLiveCellContentView.m in Sources */,
 				108EF93ECFD8F51E6E46CCB93CE543DA /* TUIJoinGroupMessageCell.m in Sources */,
 				0A21119E72ADE5BC75689ACED698EBE6 /* TUIJoinGroupMessageCellData.m in Sources */,
 				3B55E2DC813E3F6ACA44B5AC95409E6D /* TUILinkCell.m in Sources */,
+				BC77A70A2CB7E0EB00E1A595 /* TXGroupNoticeMessage.m in Sources */,
+				BC77A70B2CB7E0EB00E1A595 /* TXLiveShareMessage.m in Sources */,
+				BC77A70C2CB7E0EB00E1A595 /* TXChatMusicMessage.m in Sources */,
 				176F30C9DD211593FBF46434257D1A79 /* TUILinkCellData.m in Sources */,
 				86091694B5D323AE433868D8568BCBD0 /* TUIMediaCollectionCell.m in Sources */,
-				BC9CDE2F2C9AB973006C4D16 /* TXGroupNoticeMessage.m in Sources */,
 				67D75915808A7E786FF86C41E6C5D580 /* TUIMediaView.m in Sources */,
 				1D31160AC4D643CF896E8001DB039CFA /* TUIMemberCell.m in Sources */,
 				3887CA063A2263F36D0B567226D74790 /* TUIMemberCellData.m in Sources */,
@@ -12238,6 +12234,12 @@
 				86910BBA735CF04216ED4D4D4BF2299F /* TUIMergeReplyQuoteViewData.m in Sources */,
 				BEDA9ED2A0D94174999566AF5F7C1FBB /* TUIMessageBaseDataProvider.m in Sources */,
 				174DEA1D7E9C4299F351E85554C98A97 /* TUIMessageBaseMediaDataProvider.m in Sources */,
+				BC77A71F2CB7E11300E1A595 /* TXGroupNoticeMessageContentView.m in Sources */,
+				BC77A7202CB7E11300E1A595 /* TXLiveShareCell.m in Sources */,
+				BC77A7212CB7E11300E1A595 /* TXShareMusicCellContentView.m in Sources */,
+				BC77A7222CB7E11300E1A595 /* TXChatMusicShareCell.m in Sources */,
+				BC77A7232CB7E11300E1A595 /* TXGroupNoticeMessageCell.m in Sources */,
+				BC77A7242CB7E11300E1A595 /* TXShareLiveCellContentView.m in Sources */,
 				C7695A81DBA79F4DF1CC5A33E2C836A5 /* TUIMessageCellConfig.m in Sources */,
 				DE1E8938DEFAA29CFFC0CDB155EF2A42 /* TUIMessageController.m in Sources */,
 				C5554700AAF9BC8A94CF4083FF6A190A /* TUIMessageDataProvider.m in Sources */,
@@ -12269,8 +12271,6 @@
 				7C4DA765A5777A43988A8A0F4FD7D688 /* TUITextReplyQuoteViewData.m in Sources */,
 				EA9FABD79FAA6F49DDD455DD7D6E6CE6 /* TUITypingStatusCellData.m in Sources */,
 				DF8D6A2FD2CE7B3A67B3F1596E39D307 /* TUIVideoCollectionCell.m in Sources */,
-				BC9CDE362C9AB98A006C4D16 /* TXGroupNoticeMessageCell.m in Sources */,
-				BC9CDE372C9AB98A006C4D16 /* TXGroupNoticeMessageContentView.m in Sources */,
 				0052A04103A3D3DF9422E3F447BA22A8 /* TUIVideoMessageCell.m in Sources */,
 				87FDFBD0F8EBC11D7DFFD28153437262 /* TUIVideoMessageCellData.m in Sources */,
 				DB0A8EAF7D557EFCE1819728D47BE134 /* TUIVideoReplyQuoteView.m in Sources */,
@@ -13000,30 +13000,6 @@
 			};
 			name = TEST;
 		};
-		0EE6C0DB719CF30A4D965937FF7A0083 /* DEV */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 3608C10902349A82F2122739CA2319AF /* TZImagePickerController.release.xcconfig */;
-			buildSettings = {
-				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				OTHER_LDFLAGS = "";
-				OTHER_LIBTOOLFLAGS = "";
-				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = TZImagePickerController;
-				PRODUCT_NAME = TZImagePickerController;
-				PUBLIC_HEADERS_FOLDER_PATH = "";
-				SDKROOT = iphoneos;
-				SKIP_INSTALL = YES;
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
-				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = DEV;
-		};
 		0F4AA1B4BB0160D72FC99D57F3099C81 /* TEST */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 7F5D5F389A6D5D4ACEF21F4437DB9B89 /* JCore.release.xcconfig */;
@@ -13089,6 +13065,30 @@
 			};
 			name = TEST;
 		};
+		113D106877125194B6214C131E1A3CE7 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5503FAD1B0ECD5C8D2A16B1EB91B2743 /* TZImagePickerController.debug.xcconfig */;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = NO;
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = TZImagePickerController;
+				PRODUCT_NAME = TZImagePickerController;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
 		14022E6B7D50D587E277B481CA179668 /* Release */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 0613F5FBC9BD182C493520712ABB085F /* JPush.release.xcconfig */;
@@ -13180,6 +13180,31 @@
 			};
 			name = Release;
 		};
+		1A02B228BDA27A370CC37681D46C6B26 /* DEV */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 3608C10902349A82F2122739CA2319AF /* TZImagePickerController.release.xcconfig */;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = NO;
+				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
+				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
+				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				OTHER_LDFLAGS = "";
+				OTHER_LIBTOOLFLAGS = "";
+				PRIVATE_HEADERS_FOLDER_PATH = "";
+				PRODUCT_MODULE_NAME = TZImagePickerController;
+				PRODUCT_NAME = TZImagePickerController;
+				PUBLIC_HEADERS_FOLDER_PATH = "";
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = DEV;
+		};
 		1ABECCA180DDC1364802EEBB245A8AE1 /* DEV */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = D026CD297E1EED018105D95C6DEB3347 /* Whiteboard.release.xcconfig */;
@@ -13642,10 +13667,11 @@
 			};
 			name = Debug;
 		};
-		36FCAE4CDC431D105C5927AAE96507D1 /* Release */ = {
+		38D0B4C875AA3C0A580791F179BB9D0B /* TEST */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 3608C10902349A82F2122739CA2319AF /* TZImagePickerController.release.xcconfig */;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = NO;
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
@@ -13664,7 +13690,7 @@
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALIDATE_PRODUCT = YES;
 			};
-			name = Release;
+			name = TEST;
 		};
 		3915DF74709AEC382838CB0DE5B9E66F /* Release */ = {
 			isa = XCBuildConfiguration;
@@ -13714,23 +13740,21 @@
 			};
 			name = TEST;
 		};
-		3CC91642863C3A8B28889C12AAC17C7D /* TEST */ = {
+		3C26C2862E192F76E26829927B3DC8E4 /* Release */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 3A7F124FD4AA298F02C40AC6FB69AD44 /* TUICore.release.xcconfig */;
+			baseConfigurationReference = 3608C10902349A82F2122739CA2319AF /* TZImagePickerController.release.xcconfig */;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_WEAK = NO;
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				ENABLE_MODULE_VERIFIER = YES;
-				GCC_PREFIX_HEADER = "Target Support Files/TUICore/TUICore-prefix.pch";
+				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				MODULEMAP_FILE = Headers/Public/TUICore/TUICore.modulemap;
-				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14";
 				OTHER_LDFLAGS = "";
 				OTHER_LIBTOOLFLAGS = "";
 				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = TUICore;
-				PRODUCT_NAME = TUICore;
+				PRODUCT_MODULE_NAME = TZImagePickerController;
+				PRODUCT_NAME = TZImagePickerController;
 				PUBLIC_HEADERS_FOLDER_PATH = "";
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
@@ -13739,54 +13763,57 @@
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VALIDATE_PRODUCT = YES;
 			};
-			name = TEST;
+			name = Release;
 		};
-		3DCB20FC3847FFF785F2DA898F6682CB /* Debug */ = {
+		3CC91642863C3A8B28889C12AAC17C7D /* TEST */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 4DA3E2C406B8140C799ABA333178346B /* YYModel.debug.xcconfig */;
+			baseConfigurationReference = 3A7F124FD4AA298F02C40AC6FB69AD44 /* TUICore.release.xcconfig */;
 			buildSettings = {
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch";
+				ENABLE_MODULE_VERIFIER = YES;
+				GCC_PREFIX_HEADER = "Target Support Files/TUICore/TUICore-prefix.pch";
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+				MODULEMAP_FILE = Headers/Public/TUICore/TUICore.modulemap;
+				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14";
 				OTHER_LDFLAGS = "";
 				OTHER_LIBTOOLFLAGS = "";
 				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = YYModel;
-				PRODUCT_NAME = YYModel;
+				PRODUCT_MODULE_NAME = TUICore;
+				PRODUCT_NAME = TUICore;
 				PUBLIC_HEADERS_FOLDER_PATH = "";
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
 			};
-			name = Debug;
+			name = TEST;
 		};
-		4129BFCECF1E55040C6843BC963D8B02 /* TEST */ = {
+		3DCB20FC3847FFF785F2DA898F6682CB /* Debug */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 3608C10902349A82F2122739CA2319AF /* TZImagePickerController.release.xcconfig */;
+			baseConfigurationReference = 4DA3E2C406B8140C799ABA333178346B /* YYModel.debug.xcconfig */;
 			buildSettings = {
 				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
 				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
+				GCC_PREFIX_HEADER = "Target Support Files/YYModel/YYModel-prefix.pch";
 				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
 				OTHER_LDFLAGS = "";
 				OTHER_LIBTOOLFLAGS = "";
 				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = TZImagePickerController;
-				PRODUCT_NAME = TZImagePickerController;
+				PRODUCT_MODULE_NAME = YYModel;
+				PRODUCT_NAME = YYModel;
 				PUBLIC_HEADERS_FOLDER_PATH = "";
 				SDKROOT = iphoneos;
 				SKIP_INSTALL = YES;
 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
 			};
-			name = TEST;
+			name = Debug;
 		};
 		41EEF7985F3B43752141FD583933795D /* DEV */ = {
 			isa = XCBuildConfiguration;
@@ -13926,29 +13953,6 @@
 			};
 			name = DEV;
 		};
-		479D5A0DB5B81E6B5971E79799791BD0 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 5503FAD1B0ECD5C8D2A16B1EB91B2743 /* TZImagePickerController.debug.xcconfig */;
-			buildSettings = {
-				"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
-				"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
-				GCC_PREFIX_HEADER = "Target Support Files/TZImagePickerController/TZImagePickerController-prefix.pch";
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				OTHER_LDFLAGS = "";
-				OTHER_LIBTOOLFLAGS = "";
-				PRIVATE_HEADERS_FOLDER_PATH = "";
-				PRODUCT_MODULE_NAME = TZImagePickerController;
-				PRODUCT_NAME = TZImagePickerController;
-				PUBLIC_HEADERS_FOLDER_PATH = "";
-				SDKROOT = iphoneos;
-				SKIP_INSTALL = YES;
-				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
-				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
 		480F590A47A6ABE0535BB453542347F3 /* DEV */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 1F40C9CFC76D878FAEF9E865FCFFE535 /* CocoaLumberjack.release.xcconfig */;
@@ -17078,10 +17082,10 @@
 		C7478D7259303F6FD2471F31777110C0 /* Build configuration list for PBXNativeTarget "TZImagePickerController" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				479D5A0DB5B81E6B5971E79799791BD0 /* Debug */,
-				0EE6C0DB719CF30A4D965937FF7A0083 /* DEV */,
-				36FCAE4CDC431D105C5927AAE96507D1 /* Release */,
-				4129BFCECF1E55040C6843BC963D8B02 /* TEST */,
+				113D106877125194B6214C131E1A3CE7 /* Debug */,
+				1A02B228BDA27A370CC37681D46C6B26 /* DEV */,
+				3C26C2862E192F76E26829927B3DC8E4 /* Release */,
+				38D0B4C875AA3C0A580791F179BB9D0B /* TEST */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;

+ 0 - 120
KulexiuForTeacher/Pods/Pods.xcodeproj/xcuserdata/wangzhi.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -8,326 +8,206 @@
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>1</integer>
 		</dict>
 		<key>AlipaySDK-iOS.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>2</integer>
 		</dict>
 		<key>Bugly.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>3</integer>
 		</dict>
 		<key>CocoaAsyncSocket.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>4</integer>
 		</dict>
 		<key>CocoaHTTPServer.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>5</integer>
 		</dict>
 		<key>CocoaLumberjack-CocoaLumberjackPrivacy.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>7</integer>
 		</dict>
 		<key>CocoaLumberjack.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>6</integer>
 		</dict>
 		<key>IQKeyboardManager.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>9</integer>
 		</dict>
 		<key>JCore.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>10</integer>
 		</dict>
 		<key>JPush.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>11</integer>
 		</dict>
 		<key>JXCategoryView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>12</integer>
 		</dict>
 		<key>JXPagingView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>13</integer>
 		</dict>
 		<key>MBProgressHUD.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>16</integer>
-		</dict>
-		<key>MJExtension-MJExtension.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>18</integer>
 		</dict>
 		<key>MJExtension.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>17</integer>
-		</dict>
-		<key>MJRefresh-MJRefresh.Privacy.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>20</integer>
 		</dict>
 		<key>MJRefresh.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>19</integer>
 		</dict>
 		<key>Masonry.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>15</integer>
 		</dict>
 		<key>NTLBridge.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>21</integer>
 		</dict>
 		<key>Pods-KulexiuForTeacher.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>22</integer>
 		</dict>
 		<key>QCloudCOSXML.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>24</integer>
 		</dict>
 		<key>QCloudCore.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>23</integer>
 		</dict>
 		<key>RSKImageCropper.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>27</integer>
 		</dict>
 		<key>Reachability.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>25</integer>
 		</dict>
 		<key>ReactiveObjC.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>26</integer>
-		</dict>
-		<key>SDWebImage-SDWebImage.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>29</integer>
 		</dict>
 		<key>SDWebImage.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>28</integer>
 		</dict>
 		<key>SSZipArchive.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>31</integer>
 		</dict>
 		<key>SocketRocket.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>30</integer>
-		</dict>
-		<key>TIMCommon-TIMCommon_Privacy.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>33</integer>
 		</dict>
 		<key>TIMCommon.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>32</integer>
 		</dict>
 		<key>TUIChat.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>34</integer>
 		</dict>
 		<key>TUIConversation.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>35</integer>
-		</dict>
-		<key>TUICore-TUICore_Privacy.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>37</integer>
 		</dict>
 		<key>TUICore.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>36</integer>
 		</dict>
 		<key>TUIGroup.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>38</integer>
 		</dict>
 		<key>TUISearch.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>39</integer>
 		</dict>
 		<key>TXIMSDK_Plus_iOS.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>TXIMSDK_Plus_iOS.xcscheme_^#shared#^_</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>48</integer>
-		</dict>
-		<key>TXIMSDK_Plus_iOS_XCFramework-TXIMSDK_Plus_iOS_XCFramework_Privacy.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>41</integer>
-		</dict>
-		<key>TXIMSDK_Plus_iOS_XCFramework.xcscheme</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>40</integer>
-		</dict>
 		<key>TXLiteAVSDK_Professional.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>42</integer>
 		</dict>
 		<key>TYCyclePagerView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>43</integer>
 		</dict>
 		<key>TZImagePickerController.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>44</integer>
 		</dict>
 		<key>Whiteboard-Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>46</integer>
 		</dict>
 		<key>Whiteboard.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>45</integer>
 		</dict>
 		<key>YYModel.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>47</integer>
 		</dict>
 		<key>iOS-KS3SDK.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>8</integer>
 		</dict>
 		<key>lottie-ios.xcscheme</key>
 		<dict>
 			<key>isShown</key>
 			<false/>
-			<key>orderHint</key>
-			<integer>14</integer>
 		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>

+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXChatMusicMessage.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXChatMusicMessage.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXChatMusicMessage.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXChatMusicMessage.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessage.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessage.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXGroupNoticeMessage.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXLiveShareMessage.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXLiveShareMessage.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXLiveShareMessage.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/BaseCellData/Custom/TXLiveShareMessage.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXChatMusicShareCell.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXChatMusicShareCell.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXChatMusicShareCell.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessageCell.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessageCell.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageCell.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessageContentView.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXGroupNoticeMessageContentView.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXGroupNoticeMessageContentView.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXLiveShareCell.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXLiveShareCell.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXLiveShareCell.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXShareLiveCellContentView.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXShareLiveCellContentView.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareLiveCellContentView.m


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXShareMusicCellContentView.h → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.h


+ 0 - 0
KulexiuForTeacher/Pods/TUIChat/TXShareMusicCellContentView.m → KulexiuForTeacher/Pods/TUIChat/TUIChat/UI_Classic/Cell/Custom/TXShareMusicCellContentView.m


+ 15 - 14
KulexiuForTeacher/Pods/TZImagePickerController/README.md

@@ -3,12 +3,12 @@
 [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
 
 
- A clone of UIImagePickerController, support picking multiple photos、original photo、video, also allow preview photo and video, support iOS6+.   
- 一个支持多选、选原图和视频的图片选择器,同时有预览功能,支持iOS6+。
+ A clone of UIImagePickerController, support picking multiple photos、original photo、video, also allow preview photo and video, support iOS10+.   
+ 一个支持多选、选原图和视频的图片选择器,同时有预览功能,支持iOS10+。
  
 ## 重要提示1:提issue前,请先对照Demo、常见问题自查!Demo正常说明你可以升级下新版试试。          
  
-## 重要提示2:3.7.5版本修复了iOS15.2下初次授权相册权限时的长时间卡顿&白屏问题,强烈建议尽快更新   
+## 重要提示2:3.8.7版本修复了iOS18下无照片的问题       
      关于iOS14模拟器的问题
  PHAuthorizationStatusLimited授权模式下,iOS14模拟器有bug,未授权照片无法显示,真机正常,暂可忽略:https://github.com/banchichen/TZImagePickerController/issues/1347 
  
@@ -43,14 +43,9 @@
     [self presentViewController:imagePickerVc animated:YES completion:nil];
   
 ## 三. Requirements 要求
-   iOS 6 or later. Requires ARC  
-   iOS6及以上系统可使用. ARC环境.
-   
-   When system version is iOS6 or iOS7,  Using AssetsLibrary.  
-   When system version is iOS8 or later, Using PhotoKit.  
-   如果运行在iOS6或7系统上,用的是AssetsLibrary库获取照片资源。  
-   如果运行在iOS8及以上系统上,用的是PhotoKit库获取照片资源。
-   
+   iOS 10 or later.      
+   支持iOS10及以上系统。      
+  
    TZImagePickerController uses Camera、Location、Microphone、Photo Library,you need add these properties to info.plist like Demo:       
    TZImagePickerController使用了相机、定位、麦克风、相册,请参考Demo添加下列属性到info.plist文件:        
    	`Privacy - Camera Usage Description`     
@@ -128,9 +123,11 @@ A:不要去拿PHImageFileURLKey,没用的,只有通过Photos框架才能
 
 ## 六. Release Notes 最近更新     
 
-**3.8.3 支持使用不带定位代码的版本** [#1606](https://github.com/banchichen/TZImagePickerController/pull/1606)               
-**3.8.1 iOS14下可添加访问更多照片,详见PR内的评论** [#1526](https://github.com/banchichen/TZImagePickerController/pull/1526)               
-**3.7.6 修复iOS15.2下初次授权相册权限时的长时间卡顿&白屏问题** [#1547](https://github.com/banchichen/TZImagePickerController/issues/1547)               
+**3.8.7 支持iOS18** [#1686](https://github.com/banchichen/TZImagePickerController/issues/1686)               
+**3.8.5 新增隐私清单文件** [#1675](https://github.com/banchichen/TZImagePickerController/pull/1675)               
+**3.8.4 支持使用不带定位代码的版本** [#1606](https://github.com/banchichen/TZImagePickerController/pull/1606)               
+3.8.1 iOS14下可添加访问更多照片,详见PR内的评论 [#1526](https://github.com/banchichen/TZImagePickerController/pull/1526)               
+3.7.6 修复iOS15.2下初次授权相册权限时的长时间卡顿&白屏问题 [#1547](https://github.com/banchichen/TZImagePickerController/issues/1547)               
 **3.6.7 修复Xcode13&iOS15下导航栏颜色异常问题**        
 3.6.2 新增allowEditVideo,单选视频时支持裁剪        
 3.6.0 修复iOS14下iCloud视频导出失败问题        
@@ -173,3 +170,7 @@ A:不要去拿PHImageFileURLKey,没用的,只有通过Photos框架才能
 ...      
 1.4.5  性能大幅提升(性能测试截图请去博客查看);可在照片列表页拍照;Demo大幅优化;   
 ...        
+
+## 七. Common links 常用链接    
+1. Json diff online: https://www.jsondiffonline.com/       
+

+ 2 - 2
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m

@@ -127,7 +127,7 @@ static dispatch_once_t onceToken;
     if (!self.sortAscendingByModificationDate) {
         option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:self.sortAscendingByModificationDate]];
     }
-    PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
+    PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
     for (PHAssetCollection *collection in smartAlbums) {
         // 有可能是PHCollectionList类的的对象,过滤掉
         if (![collection isKindOfClass:[PHAssetCollection class]]) continue;
@@ -162,7 +162,7 @@ static dispatch_once_t onceToken;
     }
     // 我的照片流 1.6.10重新加入..
     PHFetchResult *myPhotoStreamAlbum = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumMyPhotoStream options:nil];
-    PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
+    PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
     PHFetchResult *topLevelUserCollections = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];
     PHFetchResult *syncedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:nil];
     PHFetchResult *sharedAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumCloudShared options:nil];

+ 1 - 1
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle/ar.lproj/Localizable.strings

@@ -18,7 +18,7 @@
 "Can not choose both video and photo" = "لا يمكن اختيار كل من الفيديو والصور";
 "Can not choose both photo and GIF" = "لا يمكن اختيار كل من الصور و GIF";
 "Select the video when in multi state, we will handle the video as a photo" = "حدد مقطع الفيديو عندما يكون في حالة متعددة، وسنعمل على معالجة مقطع الفيديو كصورة";
-"Can not jump to the privacy settings page, please go to the settings page by self, thank you" = "إذا تعذّر الانتقال إلى صفحة "إعدادات الخصوصية"، فيرجى الانتقال إلى صفحة "الإعدادات" بنفسك، شكرًا لك";
+"Can not jump to the privacy settings page, please go to the settings page by self, thank you" = "إذا تعذّر الانتقال إلى صفحة \"إعدادات الخصوصية\"، فيرجى الانتقال إلى صفحة \"الإعدادات\" بنفسك، شكرًا لك";
 "Select a maximum of %zd photos" = "حدد فقط ما يصل إلى %zd صورة";
 "Select a minimum of %zd photos" = "الرجاء تحديد %zd صورة على الأقل";
 "Allow %@ to access your album in \"Settings -> Privacy -> Photos\"" = "السماح لـ %@ بالوصول إلى الألبوم في \"الإعدادات > الخصوصية > الصور\"";

+ 4 - 4
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.2 - 2022.07.20
+//  version 3.8.7 - 2024.08.14
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 /*
@@ -94,7 +94,7 @@
 
 /// Export quality of cropped video, Default is AVAssetExportPresetMediumQuality
 /// 裁剪视频的导出质量,默认是 AVAssetExportPresetMediumQuality
-@property (nonatomic, assign) NSString *presetName;
+@property (nonatomic, copy) NSString *presetName;
 
 /// Default is 30s. If it exceeds the video duration, it is the video duration.The minimum duration of video crop is 1s.
 /// 默认是30s,如果超过视频时长,则为视频时长,小于1s不裁剪
@@ -107,8 +107,8 @@
 /// Default is NO / 默认为NO,为YES时可以多选视频/gif/图片,和照片共享最大可选张数maxImagesCount的限制
 @property (nonatomic, assign) BOOL allowPickingMultipleVideo;
 
-/// Default is NO, if set YES, user can picking gif image.
-/// 默认为NO,如果设置为YES,用户可以选择gif图片
+/// Default is NO, if set YES, user can picking gif image. When NO, gif will be treated as a regular image. If want not displayed, please refer to isAssetCanBeDisplayed
+/// 默认为NO,如果设置为YES,用户可以选择gif图片。为NO时gif会被当成普通图片,若要不显示,请参考isAssetCanBeDisplayed
 @property (nonatomic, assign) BOOL allowPickingGif;
 
 /// Default is YES, if set NO, user can't picking image.

+ 7 - 5
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.2 - 2022.07.20
+//  version 3.8.7 - 2024.08.14
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 #import "TZImagePickerController.h"
@@ -193,7 +193,6 @@
         self.allowTakeVideo = YES;
         self.videoMaximumDuration = 10 * 60;
         self.sortAscendingByModificationDate = YES;
-        self.autoDismiss = YES;
         self.columnNumber = columnNumber;
         [self configDefaultSetting];
         
@@ -209,7 +208,7 @@
             NSString *appName = [TZCommonTools tz_getAppName];
             NSString *tipText = [NSString stringWithFormat:[NSBundle tz_localizedStringForKey:@"Allow %@ to access your album in \"Settings -> Privacy -> Photos\""],appName];
             _tipLabel.text = tipText;
-//            [self.view addSubview:_tipLabel];
+            [self.view addSubview:_tipLabel];
             
             _settingBtn = [UIButton buttonWithType:UIButtonTypeSystem];
             [_settingBtn setTitle:self.settingBtnTitleStr forState:UIControlStateNormal];
@@ -218,7 +217,7 @@
             [_settingBtn addTarget:self action:@selector(settingBtnClick) forControlEvents:UIControlEventTouchUpInside];
             _settingBtn.autoresizingMask = UIViewAutoresizingFlexibleWidth;
 
-//            [self.view addSubview:_settingBtn];
+            [self.view addSubview:_settingBtn];
             
             if ([PHPhotoLibrary authorizationStatus] == 0) {
                 _timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(observeAuthrizationStatusChange) userInfo:nil repeats:NO];
@@ -289,6 +288,7 @@
 }
 
 - (void)configDefaultSetting {
+    self.autoDismiss = YES;
     self.autoSelectCurrentWhenDone = YES;
     self.timeout = 30;
     self.photoWidth = 828.0;
@@ -521,6 +521,8 @@
     if (allowCrop) { // 允许裁剪的时候,不能选原图和GIF
         self.allowPickingOriginalPhoto = NO;
         self.allowPickingGif = NO;
+        self.photoWidth = 1200;
+        self.photoPreviewMaxWidth = 1200;
     }
 }
 
@@ -1015,7 +1017,7 @@
 
 + (BOOL)tz_isRightToLeftLayout {
     if (@available(iOS 9.0, *)) {
-        if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:UISemanticContentAttributeUnspecified] == UIUserInterfaceLayoutDirectionRightToLeft) {
+        if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:UIView.appearance.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft) {
             return YES;
         }
     } else {

+ 35 - 7
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m

@@ -151,7 +151,6 @@ static CGFloat itemMargin = 5;
         [self configCollectionView];
         self->_collectionView.hidden = YES;
         [self configBottomToolBar];
-        
         [self prepareScrollCollectionViewToBottom];
     });
 }
@@ -204,18 +203,23 @@ static CGFloat itemMargin = 5;
     
     _collectionView.contentSize = CGSizeMake(self.view.tz_width, (([self getAllCellCount] + self.columnNumber - 1) / self.columnNumber) * self.view.tz_width);
     if (_models.count == 0) {
-        _noDataLabel = [UILabel new];
+        [_collectionView addSubview:self.noDataLabel];
+    } else if (_noDataLabel) {
+        [_noDataLabel removeFromSuperview];
+        _noDataLabel = nil;
+    }
+}
+
+- (UILabel *)noDataLabel {
+    if (!_noDataLabel) {
+        _noDataLabel = [[UILabel alloc] initWithFrame:_collectionView.bounds];
         _noDataLabel.textAlignment = NSTextAlignmentCenter;
         _noDataLabel.text = [NSBundle tz_localizedStringForKey:@"No Photos or Videos"];
         CGFloat rgb = 153 / 256.0;
         _noDataLabel.textColor = [UIColor colorWithRed:rgb green:rgb blue:rgb alpha:1.0];
         _noDataLabel.font = [UIFont boldSystemFontOfSize:20];
-        _noDataLabel.frame = _collectionView.bounds;
-        [_collectionView addSubview:_noDataLabel];
-    } else if (_noDataLabel) {
-        [_noDataLabel removeFromSuperview];
-        _noDataLabel = nil;
     }
+    return _noDataLabel;
 }
 
 - (void)viewWillAppear:(BOOL)animated {
@@ -960,6 +964,7 @@ static CGFloat itemMargin = 5;
     for (TZAssetModel *model in selectedModels) {
         [selectedAssets addObject:model.asset];
     }
+    // 拿到了最新的models,在此刷新照片选中状态
     for (TZAssetModel *model in _models) {
         model.isSelected = NO;
         if ([selectedAssets containsObject:model.asset]) {
@@ -1104,6 +1109,14 @@ static CGFloat itemMargin = 5;
     dispatch_async(dispatch_get_main_queue(), ^{
         PHFetchResultChangeDetails *changeDetail = [changeInstance changeDetailsForFetchResult:self.model.result];
         if (changeDetail == nil) return;
+        if ([[TZImageManager manager] isPHAuthorizationStatusLimited]) {
+            NSArray *changedObjects = [changeDetail changedObjects];
+            changeDetail = [PHFetchResultChangeDetails changeDetailsFromFetchResult:self.model.result toFetchResult:changeDetail.fetchResultAfterChanges changedObjects:changedObjects];
+            if (changeDetail && changeDetail.removedObjects.count) {
+                [self handleRemovedAssets:changeDetail.removedObjects];
+            }
+        }
+
         if (changeDetail.hasIncrementalChanges == NO) {
             [self.model refreshFetchResult];
             [self fetchAssetModels];
@@ -1120,6 +1133,21 @@ static CGFloat itemMargin = 5;
     });
 }
 
+- (void)handleRemovedAssets:(NSArray<PHAsset *> *)removedObjects {
+    TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
+    for (PHAsset *asset in removedObjects) {
+        Boolean isSelected = [tzImagePickerVc.selectedAssetIds containsObject:asset.localIdentifier];
+        if (!isSelected) continue;
+        NSArray *selectedModels = [NSArray arrayWithArray:tzImagePickerVc.selectedModels];
+        for (TZAssetModel *model_item in selectedModels) {
+            if ([asset.localIdentifier isEqualToString:model_item.asset.localIdentifier]) {
+                [tzImagePickerVc removeSelectedModel:model_item];
+            }
+        }
+        [self refreshBottomToolBarStatus];
+    }
+}
+
 #pragma mark - Asset Caching
 
 - (void)resetCachedAssets {

+ 1 - 1
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m

@@ -567,7 +567,7 @@
 
 #pragma mark - Click Event
 
-- (void)signleTapAction {    
+- (void)signleTapAction {
     if (self.singleTapGestureBlock) {
         self.singleTapGestureBlock();
     }

+ 1 - 3
KulexiuForTeacher/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m

@@ -79,9 +79,7 @@
     [super viewWillAppear:animated];
     [self.navigationController setNavigationBarHidden:YES animated:YES];
     [UIApplication sharedApplication].statusBarHidden = YES;
-    if (_currentIndex) {
-        [_collectionView setContentOffset:CGPointMake((self.view.tz_width + 20) * self.currentIndex, 0) animated:NO];
-    }
+    [_collectionView setContentOffset:CGPointMake((self.view.tz_width + 20) * self.currentIndex, 0) animated:NO];
     [self refreshNaviBarAndBottomBarState];
 }