私聊完成
This commit is contained in:
10
Podfile
10
Podfile
@@ -23,8 +23,18 @@ pod 'SVGAPlayer'
|
|||||||
|
|
||||||
pod 'NIMSDK_LITE', '9.6.1'
|
pod 'NIMSDK_LITE', '9.6.1'
|
||||||
|
|
||||||
|
pod 'TZImagePickerController'
|
||||||
pod 'LookinServer', :configurations => ['Debug']
|
pod 'LookinServer', :configurations => ['Debug']
|
||||||
|
|
||||||
# Pods for yinmeng-ios
|
# Pods for yinmeng-ios
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
post_install do |installer|
|
||||||
|
installer.pods_project.targets.each do |target|
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
10
Podfile.lock
10
Podfile.lock
@@ -39,6 +39,11 @@ PODS:
|
|||||||
- SVGAPlayer/ProtoFiles
|
- SVGAPlayer/ProtoFiles
|
||||||
- SVGAPlayer/ProtoFiles (2.5.7):
|
- SVGAPlayer/ProtoFiles (2.5.7):
|
||||||
- Protobuf (~> 3.4)
|
- Protobuf (~> 3.4)
|
||||||
|
- TZImagePickerController (3.8.4):
|
||||||
|
- TZImagePickerController/Basic (= 3.8.4)
|
||||||
|
- TZImagePickerController/Location (= 3.8.4)
|
||||||
|
- TZImagePickerController/Basic (3.8.4)
|
||||||
|
- TZImagePickerController/Location (3.8.4)
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- DeviceKit (~> 4.0)
|
- DeviceKit (~> 4.0)
|
||||||
@@ -55,6 +60,7 @@ DEPENDENCIES:
|
|||||||
- RxSwift
|
- RxSwift
|
||||||
- SnapKit (~> 5.6.0)
|
- SnapKit (~> 5.6.0)
|
||||||
- SVGAPlayer
|
- SVGAPlayer
|
||||||
|
- TZImagePickerController
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
||||||
@@ -76,6 +82,7 @@ SPEC REPOS:
|
|||||||
- SnapKit
|
- SnapKit
|
||||||
- SSZipArchive
|
- SSZipArchive
|
||||||
- SVGAPlayer
|
- SVGAPlayer
|
||||||
|
- TZImagePickerController
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7
|
Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7
|
||||||
@@ -96,7 +103,8 @@ SPEC CHECKSUMS:
|
|||||||
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
|
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
|
||||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||||
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
|
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
|
||||||
|
TZImagePickerController: f1c9f1cae6ac0e30b31aaa9698f9bf4a7cf5b84f
|
||||||
|
|
||||||
PODFILE CHECKSUM: 27f0d4aae2435f02d30619007e2b2ba1e9205d05
|
PODFILE CHECKSUM: 5f55788a4e0d9fc7115e0ba01f38062806d64f6d
|
||||||
|
|
||||||
COCOAPODS: 1.14.3
|
COCOAPODS: 1.14.3
|
||||||
|
10
Pods/Manifest.lock
generated
10
Pods/Manifest.lock
generated
@@ -39,6 +39,11 @@ PODS:
|
|||||||
- SVGAPlayer/ProtoFiles
|
- SVGAPlayer/ProtoFiles
|
||||||
- SVGAPlayer/ProtoFiles (2.5.7):
|
- SVGAPlayer/ProtoFiles (2.5.7):
|
||||||
- Protobuf (~> 3.4)
|
- Protobuf (~> 3.4)
|
||||||
|
- TZImagePickerController (3.8.4):
|
||||||
|
- TZImagePickerController/Basic (= 3.8.4)
|
||||||
|
- TZImagePickerController/Location (= 3.8.4)
|
||||||
|
- TZImagePickerController/Basic (3.8.4)
|
||||||
|
- TZImagePickerController/Location (3.8.4)
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- DeviceKit (~> 4.0)
|
- DeviceKit (~> 4.0)
|
||||||
@@ -55,6 +60,7 @@ DEPENDENCIES:
|
|||||||
- RxSwift
|
- RxSwift
|
||||||
- SnapKit (~> 5.6.0)
|
- SnapKit (~> 5.6.0)
|
||||||
- SVGAPlayer
|
- SVGAPlayer
|
||||||
|
- TZImagePickerController
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
|
||||||
@@ -76,6 +82,7 @@ SPEC REPOS:
|
|||||||
- SnapKit
|
- SnapKit
|
||||||
- SSZipArchive
|
- SSZipArchive
|
||||||
- SVGAPlayer
|
- SVGAPlayer
|
||||||
|
- TZImagePickerController
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7
|
Alamofire: 3ca42e259043ee0dc5c0cdd76c4bc568b8e42af7
|
||||||
@@ -96,7 +103,8 @@ SPEC CHECKSUMS:
|
|||||||
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
|
SnapKit: e01d52ebb8ddbc333eefe2132acf85c8227d9c25
|
||||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||||
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
|
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
|
||||||
|
TZImagePickerController: f1c9f1cae6ac0e30b31aaa9698f9bf4a7cf5b84f
|
||||||
|
|
||||||
PODFILE CHECKSUM: 27f0d4aae2435f02d30619007e2b2ba1e9205d05
|
PODFILE CHECKSUM: 5f55788a4e0d9fc7115e0ba01f38062806d64f6d
|
||||||
|
|
||||||
COCOAPODS: 1.14.3
|
COCOAPODS: 1.14.3
|
||||||
|
8414
Pods/Pods.xcodeproj/project.pbxproj
generated
8414
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,13 @@
|
|||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>18</integer>
|
<integer>18</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>TZImagePickerController.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>21</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
<key>SuppressBuildableAutocreation</key>
|
||||||
<dict/>
|
<dict/>
|
||||||
|
@@ -600,4 +600,30 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
## TZImagePickerController
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Zhen Tan
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
Generated by CocoaPods - https://cocoapods.org
|
Generated by CocoaPods - https://cocoapods.org
|
||||||
|
@@ -720,6 +720,38 @@ THE SOFTWARE.
|
|||||||
<key>Type</key>
|
<key>Type</key>
|
||||||
<string>PSGroupSpecifier</string>
|
<string>PSGroupSpecifier</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Zhen Tan
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
</string>
|
||||||
|
<key>License</key>
|
||||||
|
<string>MIT</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>TZImagePickerController</string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>FooterText</key>
|
<key>FooterText</key>
|
||||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||||
|
@@ -17,4 +17,5 @@ ${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework
|
${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework
|
${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework
|
${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
|
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework
|
@@ -16,4 +16,5 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxRelay.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVGAPlayer.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVGAPlayer.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TZImagePickerController.framework
|
@@ -16,4 +16,5 @@ ${BUILT_PRODUCTS_DIR}/RxRelay/RxRelay.framework
|
|||||||
${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework
|
${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework
|
${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework
|
${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework
|
||||||
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
|
${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework
|
||||||
|
${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework
|
@@ -15,4 +15,5 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxRelay.framework
|
|||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SSZipArchive.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVGAPlayer.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVGAPlayer.framework
|
||||||
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework
|
||||||
|
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TZImagePickerController.framework
|
@@ -195,6 +195,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework"
|
||||||
fi
|
fi
|
||||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework"
|
||||||
@@ -215,6 +216,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then
|
|||||||
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SSZipArchive/SSZipArchive.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SVGAPlayer/SVGAPlayer.framework"
|
||||||
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
|
install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
|
||||||
|
install_framework "${BUILT_PRODUCTS_DIR}/TZImagePickerController/TZImagePickerController.framework"
|
||||||
fi
|
fi
|
||||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||||
wait
|
wait
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_ROOT}/NIMSDK_LITE/NIMSDK"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_ROOT}/NIMSDK_LITE/NIMSDK"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers"
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -l"c++" -l"iconv" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "LookinServer" -framework "MBProgressHUD" -framework "Moya" -framework "NIMNOS" -framework "NIMSDK" -framework "NSObject_Rx" -framework "Nuke" -framework "Protobuf" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SnapKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -weak_framework "Combine" -weak_framework "SwiftUI"
|
OTHER_LDFLAGS = $(inherited) -l"c++" -l"iconv" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "LookinServer" -framework "MBProgressHUD" -framework "Moya" -framework "NIMNOS" -framework "NIMSDK" -framework "NSObject_Rx" -framework "Nuke" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SnapKit" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "VideoToolbox" -weak_framework "Combine" -weak_framework "SwiftUI"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
|
||||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_ROOT}/NIMSDK_LITE/NIMSDK"
|
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController" "${PODS_ROOT}/NIMSDK_LITE/NIMSDK"
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1
|
||||||
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DeviceKit/DeviceKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HandyJSON/HandyJSON.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Kingfisher/Kingfisher.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NSObject+Rx/NSObject_Rx.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Nuke/Nuke.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf/Protobuf.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reusable/Reusable.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SSZipArchive/SSZipArchive.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SVGAPlayer/SVGAPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/TZImagePickerController/TZImagePickerController.framework/Headers"
|
||||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
|
||||||
OTHER_LDFLAGS = $(inherited) -l"c++" -l"iconv" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "NIMNOS" -framework "NIMSDK" -framework "NSObject_Rx" -framework "Nuke" -framework "Protobuf" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SnapKit" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" -weak_framework "Combine" -weak_framework "SwiftUI"
|
OTHER_LDFLAGS = $(inherited) -l"c++" -l"iconv" -l"resolv" -l"sqlite3.0" -l"z" -framework "AVFoundation" -framework "Accelerate" -framework "Alamofire" -framework "AudioToolbox" -framework "CFNetwork" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "DeviceKit" -framework "Foundation" -framework "HandyJSON" -framework "Kingfisher" -framework "MBProgressHUD" -framework "Moya" -framework "NIMNOS" -framework "NIMSDK" -framework "NSObject_Rx" -framework "Nuke" -framework "Photos" -framework "PhotosUI" -framework "Protobuf" -framework "QuartzCore" -framework "Reusable" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SSZipArchive" -framework "SVGAPlayer" -framework "Security" -framework "SnapKit" -framework "SystemConfiguration" -framework "TZImagePickerController" -framework "UIKit" -framework "VideoToolbox" -weak_framework "Combine" -weak_framework "SwiftUI"
|
||||||
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<key>yinmeng-ios.xcscheme_^#shared#^_</key>
|
<key>yinmeng-ios.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>21</integer>
|
<integer>22</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
Binary file not shown.
@@ -19,16 +19,16 @@
|
|||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "0F9AD5F9-E68D-4D59-AA9C-49EDA3BAE3A3"
|
uuid = "A13339C1-73DD-4996-91B1-602150B243F2"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "yinmeng-ios/Modules/Chat/Keyboard/ChatKeyboardView.swift"
|
filePath = "yinmeng-ios/Modules/Chat/VM/ChatViewModel.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "453"
|
startingLineNumber = "329"
|
||||||
endingLineNumber = "453"
|
endingLineNumber = "329"
|
||||||
landmarkName = "changeKeyboardHeight(_:height:)"
|
landmarkName = "onRecvMessages(_:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
Binary file not shown.
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 38 KiB |
@@ -7,7 +7,8 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
import NIMSDK
|
import NIMSDK
|
||||||
class ChatVC: BaseViewController, HiddenNavigationBarProtocol {
|
import TZImagePickerController
|
||||||
|
class ChatVC: BaseViewController, HiddenNavigationBarProtocol, TZImagePickerControllerDelegate{
|
||||||
|
|
||||||
// 键盘收起/弹出 滚动的时候收起输入栏
|
// 键盘收起/弹出 滚动的时候收起输入栏
|
||||||
private var isBecome: Bool = false
|
private var isBecome: Bool = false
|
||||||
@@ -57,6 +58,8 @@ class ChatVC: BaseViewController, HiddenNavigationBarProtocol {
|
|||||||
private func registerChatCell() {
|
private func registerChatCell() {
|
||||||
chatTableView.register(cellType: ChatTextCell.self)
|
chatTableView.register(cellType: ChatTextCell.self)
|
||||||
chatTableView.register(cellType: ChatTimeCell.self)
|
chatTableView.register(cellType: ChatTimeCell.self)
|
||||||
|
chatTableView.register(cellType: ChatVoiceCell.self)
|
||||||
|
chatTableView.register(cellType: ChatImageCell.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var chatTableView: UITableView = {
|
private lazy var chatTableView: UITableView = {
|
||||||
@@ -111,8 +114,20 @@ extension ChatVC: ChatKeyboardViewDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func keyboard(_ keyboard: ChatKeyboardView, DidMoreMenu type: ChatMoreMenuType) {
|
func keyboard(_ keyboard: ChatKeyboardView, DidMoreMenu type: ChatMoreMenuType) {
|
||||||
|
if type == .album {
|
||||||
//TODO: 点击更多
|
let imagePicker = TZImagePickerController(maxImagesCount: 1, columnNumber: 5, delegate: self)
|
||||||
|
imagePicker?.allowPickingVideo = false
|
||||||
|
imagePicker?.modalPresentationStyle = .fullScreen
|
||||||
|
imagePicker?.didFinishPickingPhotosHandle = {(images: [UIImage]?, assets:[Any]?, isSelectOriginalPhoto: Bool) in
|
||||||
|
if (type == .album) {
|
||||||
|
if let image = images?[safe:0] {
|
||||||
|
self.vm.sendImageMessage(image: image) { _ in}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.navigationController?.present(imagePicker!, animated: true)
|
||||||
|
keyboard.hiddenMoreView()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func keyboard(_ keyboard: ChatKeyboardView, DidObserver offsetY: CGFloat) {
|
func keyboard(_ keyboard: ChatKeyboardView, DidObserver offsetY: CGFloat) {
|
||||||
@@ -123,6 +138,7 @@ extension ChatVC: ChatKeyboardViewDelegate {
|
|||||||
extension ChatVC {
|
extension ChatVC {
|
||||||
|
|
||||||
func requestInfo() {
|
func requestInfo() {
|
||||||
|
self.navView.uid = vm.session.sessionId
|
||||||
let params = ["uid": vm.session.sessionId]
|
let params = ["uid": vm.session.sessionId]
|
||||||
RequestGet(path: "user/get", parma: params) { data in
|
RequestGet(path: "user/get", parma: params) { data in
|
||||||
if let info = Deserialized<UserObject>.toModel(with: data) {
|
if let info = Deserialized<UserObject>.toModel(with: data) {
|
||||||
@@ -133,7 +149,7 @@ extension ChatVC {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let par:[String : Any] = ["uid": AuthManager.userUid, "isLikeUid": vm.session.sessionId]
|
let par:[String : Any] = ["uid": AuthManager.userUid, "isLikeUid": vm.session.sessionId]
|
||||||
RequestGet(path: "fans/isLike", parma: par) { data in
|
RequestGet(path: "fans/islike", parma: par) { data in
|
||||||
if let isLike = data as? Bool {
|
if let isLike = data as? Bool {
|
||||||
self.navView.isLike = isLike
|
self.navView.isLike = isLike
|
||||||
}
|
}
|
||||||
@@ -194,6 +210,7 @@ extension ChatVC {
|
|||||||
animated: false
|
animated: false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
chatTableView.reloadData()
|
||||||
}
|
}
|
||||||
|
|
||||||
public func tableViewDeleteIndexs(_ indexs: [IndexPath]) {
|
public func tableViewDeleteIndexs(_ indexs: [IndexPath]) {
|
||||||
@@ -211,7 +228,7 @@ extension ChatVC {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension ChatVC: ChatViewModelDelegate{
|
extension ChatVC: ChatViewModelDelegate{
|
||||||
public func onRecvMessages(_ messages: [NIMMessage]) {
|
public func onRecvMessages1(_ messages: [NIMMessage]) {
|
||||||
insertRows()
|
insertRows()
|
||||||
vm.markRead(messages: messages) { error in
|
vm.markRead(messages: messages) { error in
|
||||||
|
|
||||||
@@ -229,7 +246,9 @@ extension ChatVC: ChatViewModelDelegate{
|
|||||||
public func send(_ message: NIMMessage, progress: Float) {}
|
public func send(_ message: NIMMessage, progress: Float) {}
|
||||||
|
|
||||||
public func send(_ message: NIMMessage, didCompleteWithError error: Error?) {
|
public func send(_ message: NIMMessage, didCompleteWithError error: Error?) {
|
||||||
|
if error == nil {
|
||||||
|
insertRows()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func indexPathsWithMessags(_ messages: [NIMMessage]) -> [IndexPath] {
|
private func indexPathsWithMessags(_ messages: [NIMMessage]) -> [IndexPath] {
|
||||||
@@ -263,10 +282,21 @@ extension ChatVC: UITableViewDelegate, UITableViewDataSource, UIScrollViewDelega
|
|||||||
if model?.type == .text {
|
if model?.type == .text {
|
||||||
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatTextCell.self)
|
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatTextCell.self)
|
||||||
cell.model = model
|
cell.model = model
|
||||||
|
return cell
|
||||||
} else if model?.type == .time {
|
} else if model?.type == .time {
|
||||||
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatTimeCell.self)
|
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatTimeCell.self)
|
||||||
cell.model = model
|
cell.model = model
|
||||||
|
return cell
|
||||||
|
} else if model?.type == .voice {
|
||||||
|
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatVoiceCell.self)
|
||||||
|
cell.model = model
|
||||||
|
return cell
|
||||||
|
} else if model?.type == .image {
|
||||||
|
let cell = tableView.dequeueReusableCell(for: indexPath, cellType: ChatImageCell.self)
|
||||||
|
cell.model = model
|
||||||
|
return cell
|
||||||
}
|
}
|
||||||
|
|
||||||
return UITableViewCell()
|
return UITableViewCell()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,7 +33,8 @@ class ChatKeyboardView: UIView {
|
|||||||
private let kLeft: CGFloat = 12.0
|
private let kLeft: CGFloat = 12.0
|
||||||
private let kSpace: CGFloat = 12.0
|
private let kSpace: CGFloat = 12.0
|
||||||
private let kViewWH: CGFloat = 26.0
|
private let kViewWH: CGFloat = 26.0
|
||||||
private let kLineHeight: CGFloat = 0.75
|
private let kTextHeight: CGFloat = 36
|
||||||
|
|
||||||
|
|
||||||
// MARK: - var lazy
|
// MARK: - var lazy
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ class ChatKeyboardView: UIView {
|
|||||||
fileprivate lazy var changeButton : UIButton = {
|
fileprivate lazy var changeButton : UIButton = {
|
||||||
let button = UIButton(type: .custom)
|
let button = UIButton(type: .custom)
|
||||||
let x: CGFloat = self.kLeft
|
let x: CGFloat = self.kLeft
|
||||||
button.frame = CGRect(x: x, y: self.kSpace + 5, width: self.kViewWH, height: self.kViewWH)
|
button.frame = CGRect(x: x, y: self.kSpace + (kTextHeight - kViewWH) / 2.0, width: self.kViewWH, height: self.kViewWH)
|
||||||
button.setImage(UIImage(named: "chat_input_text"), for: .normal)
|
button.setImage(UIImage(named: "chat_input_text"), for: .normal)
|
||||||
button.setImage(UIImage(named: "chat_voice"), for: .highlighted)
|
button.setImage(UIImage(named: "chat_voice"), for: .highlighted)
|
||||||
button.addTarget(self, action: #selector(changeDidAction(_:)), for: .touchUpInside)
|
button.addTarget(self, action: #selector(changeDidAction(_:)), for: .touchUpInside)
|
||||||
@@ -80,7 +81,7 @@ class ChatKeyboardView: UIView {
|
|||||||
fileprivate lazy var moreButton : UIButton = {
|
fileprivate lazy var moreButton : UIButton = {
|
||||||
let button = UIButton(type: .custom)
|
let button = UIButton(type: .custom)
|
||||||
let x: CGFloat = ScreenWidth - self.kViewWH - self.kSpace
|
let x: CGFloat = ScreenWidth - self.kViewWH - self.kSpace
|
||||||
button.frame = CGRect(x: x, y: self.kSpace + 5, width: self.kViewWH, height: self.kViewWH)
|
button.frame = CGRect(x: x, y: self.kSpace + (kTextHeight - kViewWH) / 2.0, width: self.kViewWH, height: self.kViewWH)
|
||||||
button.setImage(UIImage(named: "chat_more"), for: .normal)
|
button.setImage(UIImage(named: "chat_more"), for: .normal)
|
||||||
button.setImage(UIImage(named: "chat_more"), for: .highlighted)
|
button.setImage(UIImage(named: "chat_more"), for: .highlighted)
|
||||||
button.addTarget(self, action: #selector(moreDidAction(_:)), for: .touchUpInside)
|
button.addTarget(self, action: #selector(moreDidAction(_:)), for: .touchUpInside)
|
||||||
@@ -90,7 +91,7 @@ class ChatKeyboardView: UIView {
|
|||||||
/// 文本输入框
|
/// 文本输入框
|
||||||
fileprivate lazy var chatTextView: ChatGrowingTextView = {
|
fileprivate lazy var chatTextView: ChatGrowingTextView = {
|
||||||
let w: CGFloat = ScreenWidth - self.kViewWH * 2 - self.kSpace * 3 - self.kSpace
|
let w: CGFloat = ScreenWidth - self.kViewWH * 2 - self.kSpace * 3 - self.kSpace
|
||||||
let textView = ChatGrowingTextView(frame: CGRect(x: self.kSpace + self.kLeft + self.kViewWH, y: self.kSpace, width: w, height: 36))
|
let textView = ChatGrowingTextView(frame: CGRect(x: self.kSpace + self.kLeft + self.kViewWH, y: self.kSpace, width: w, height: kTextHeight))
|
||||||
textView.placeholder = "请输入..."
|
textView.placeholder = "请输入..."
|
||||||
textView.textColor = ThemeColor(hexStr: "#000000")
|
textView.textColor = ThemeColor(hexStr: "#000000")
|
||||||
textView.maxNumberOfLines = 5
|
textView.maxNumberOfLines = 5
|
||||||
@@ -310,6 +311,7 @@ extension ChatKeyboardView {
|
|||||||
keyboardHeight = endFrame.height
|
keyboardHeight = endFrame.height
|
||||||
// 键盘弹出状态
|
// 键盘弹出状态
|
||||||
isShowKeyboard = false
|
isShowKeyboard = false
|
||||||
|
contentHeight = 0
|
||||||
|
|
||||||
let option = userInfo["UIKeyboardAnimationCurveUserInfoKey"] as! Int
|
let option = userInfo["UIKeyboardAnimationCurveUserInfoKey"] as! Int
|
||||||
let changedY = ScreenHeight - self.toolBarHeight - self.contentHeight
|
let changedY = ScreenHeight - self.toolBarHeight - self.contentHeight
|
||||||
@@ -413,6 +415,14 @@ extension ChatKeyboardView {
|
|||||||
delegate?.keyboard(self, DidBecome: true)
|
delegate?.keyboard(self, DidBecome: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func hiddenMoreView() {
|
||||||
|
contentView.isHidden = true
|
||||||
|
moreMenuView.isHidden = true
|
||||||
|
isShowMore = false
|
||||||
|
contentHeight = 0.0
|
||||||
|
restToolbarContentHeight()
|
||||||
|
}
|
||||||
|
|
||||||
/// 更改容器高度
|
/// 更改容器高度
|
||||||
func restToolbarContentHeight(_ isRest: Bool = false) {
|
func restToolbarContentHeight(_ isRest: Bool = false) {
|
||||||
var changedY = ScreenHeight - self.toolBarHeight - contentHeight
|
var changedY = ScreenHeight - self.toolBarHeight - contentHeight
|
||||||
@@ -433,6 +443,8 @@ extension ChatKeyboardView {
|
|||||||
self.layoutIfNeeded()
|
self.layoutIfNeeded()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - 改变输入框高度位置
|
// MARK: - 改变输入框高度位置
|
||||||
@@ -446,7 +458,7 @@ extension ChatKeyboardView {
|
|||||||
toolBarView.frame = CGRect(x: toolBarView.x, y: 0, width: toolBarView.width, height: toolBarHeight)
|
toolBarView.frame = CGRect(x: toolBarView.x, y: 0, width: toolBarView.width, height: toolBarHeight)
|
||||||
|
|
||||||
let spaceY = toolBarView.height - kSpace - kViewWH
|
let spaceY = toolBarView.height - kSpace - kViewWH
|
||||||
chatTextView.frame = CGRect(x: chatTextView.x, y: chatTextView.x, width: chatTextView.width, height: textHeight)
|
chatTextView.frame = CGRect(x: chatTextView.x, y: chatTextView.y, width: chatTextView.width, height: textHeight)
|
||||||
moreButton.frame = CGRect(x: moreButton.x, y: spaceY, width: moreButton.width, height: moreButton.height)
|
moreButton.frame = CGRect(x: moreButton.x, y: spaceY, width: moreButton.width, height: moreButton.height)
|
||||||
contentView.frame = CGRect(x: contentView.x, y: toolBarView.maxY, width: contentView.width, height: contentHeight)
|
contentView.frame = CGRect(x: contentView.x, y: toolBarView.maxY, width: contentView.width, height: contentHeight)
|
||||||
|
|
||||||
|
@@ -112,10 +112,10 @@ class ChatVoiceObject: ChatBaseObject {
|
|||||||
required init(msg: NIMMessage?) {
|
required init(msg: NIMMessage?) {
|
||||||
super.init(msg: msg)
|
super.init(msg: msg)
|
||||||
type = .voice
|
type = .voice
|
||||||
let voiceHeight = 30.0
|
let voiceHeight = 40.0
|
||||||
if let content = msg?.messageObject as? NIMAudioObject {
|
if let content = msg?.messageObject as? NIMAudioObject {
|
||||||
let scale = 2*atan((Double(content.duration)/1000.0-1)/10.0)/M_PI;
|
let scale = 2*atan((Double(content.duration)/1000.0-1)/9.0)/M_PI;
|
||||||
let low = (ChatUIConfig.layout.contentMaxWidth - 180)
|
let low = (ChatUIConfig.layout.contentMaxWidth - 160)
|
||||||
let max = (ChatUIConfig.layout.contentMaxWidth - 100)
|
let max = (ChatUIConfig.layout.contentMaxWidth - 100)
|
||||||
let width = (max - low) * scale + low
|
let width = (max - low) * scale + low
|
||||||
if let path = content.path {
|
if let path = content.path {
|
||||||
@@ -125,7 +125,7 @@ class ChatVoiceObject: ChatBaseObject {
|
|||||||
contentSize = CGSize(width: width, height: voiceHeight)
|
contentSize = CGSize(width: width, height: voiceHeight)
|
||||||
height = Float(voiceHeight + ChatUIConfig.layout.cellContentInsets.bottom + ChatUIConfig.layout.cellContentInsets.top)
|
height = Float(voiceHeight + ChatUIConfig.layout.cellContentInsets.bottom + ChatUIConfig.layout.cellContentInsets.top)
|
||||||
} else {
|
} else {
|
||||||
let low = (ChatUIConfig.layout.contentMaxWidth - 180)
|
let low = (ChatUIConfig.layout.contentMaxWidth - 160)
|
||||||
contentSize = CGSize(width: low , height: voiceHeight)
|
contentSize = CGSize(width: low , height: voiceHeight)
|
||||||
height = Float(voiceHeight + ChatUIConfig.layout.cellContentInsets.bottom + ChatUIConfig.layout.cellContentInsets.top)
|
height = Float(voiceHeight + ChatUIConfig.layout.cellContentInsets.bottom + ChatUIConfig.layout.cellContentInsets.top)
|
||||||
}
|
}
|
||||||
|
@@ -25,13 +25,12 @@ public protocol ChatViewModelDelegate: NSObjectProtocol {
|
|||||||
|
|
||||||
func send(_ message: NIMMessage, didCompleteWithError error: Error?)
|
func send(_ message: NIMMessage, didCompleteWithError error: Error?)
|
||||||
func send(_ message: NIMMessage, progress: Float)
|
func send(_ message: NIMMessage, progress: Float)
|
||||||
func onRecvMessages(_ messages: [NIMMessage])
|
func onRecvMessages1(_ messages: [NIMMessage])
|
||||||
func willSend(_ message: NIMMessage)
|
func willSend(_ message: NIMMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class ChatViewModel: NSObject,
|
public class ChatViewModel: NSObject, NIMChatManagerDelegate {
|
||||||
NIMConversationManagerDelegate, NIMSystemNotificationManagerDelegate {
|
|
||||||
private var userInfo = [String: NIMUser]()
|
private var userInfo = [String: NIMUser]()
|
||||||
public let messagPageNum: UInt = 100
|
public let messagPageNum: UInt = 100
|
||||||
|
|
||||||
@@ -52,8 +51,6 @@ public class ChatViewModel: NSObject,
|
|||||||
|
|
||||||
private func addMessageListener() {
|
private func addMessageListener() {
|
||||||
NIMSDK.shared().chatManager.add(self)
|
NIMSDK.shared().chatManager.add(self)
|
||||||
NIMSDK.shared().conversationManager.add(self)
|
|
||||||
NIMSDK.shared().systemNotificationManager.add(self)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init(session: NIMSession) {
|
init(session: NIMSession) {
|
||||||
@@ -316,6 +313,67 @@ public class ChatViewModel: NSObject,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func send(_ message: NIMMessage, didCompleteWithError error: Error?) {
|
||||||
|
for (i, msg) in messageObjects.enumerated() {
|
||||||
|
if message.messageId == msg.msg?.messageId {
|
||||||
|
messageObjects[i].msg = message
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delegate?.send(message, didCompleteWithError: error)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 收到消息
|
||||||
|
public func onRecvMessages(_ messages: [NIMMessage]) {
|
||||||
|
for msg in messages {
|
||||||
|
if msg.session?.sessionId == session.sessionId {
|
||||||
|
if let model = modelTransformMessage(message: msg) {
|
||||||
|
newMsg = msg
|
||||||
|
addTimeMessage(msg)
|
||||||
|
self.messageObjects.append(model)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delegate?.onRecvMessages1(messages)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func willSend(_ message: NIMMessage) {
|
||||||
|
if message.session?.sessionId != session.sessionId {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
guard let model = modelTransformMessage(message: message) else { return }
|
||||||
|
|
||||||
|
if newMsg == nil {
|
||||||
|
newMsg = message
|
||||||
|
}
|
||||||
|
|
||||||
|
var isResend = false
|
||||||
|
for (i, msg) in messageObjects.enumerated() {
|
||||||
|
if message.messageId == msg.msg?.messageId {
|
||||||
|
messageObjects[i].msg = message
|
||||||
|
isResend = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !isResend {
|
||||||
|
addTimeMessage(message)
|
||||||
|
messageObjects.append(model)
|
||||||
|
}
|
||||||
|
delegate?.didAppend(message)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public func onReceive(_ notification: NIMCustomSystemNotification) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public func send(_ message: NIMMessage, progress: Float) {
|
||||||
|
delegate?.send(message, progress: progress)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@discardableResult
|
@discardableResult
|
||||||
public func resendMessage(message: NIMMessage) -> Error? {
|
public func resendMessage(message: NIMMessage) -> Error? {
|
||||||
@@ -600,66 +658,3 @@ public class ChatViewModel: NSObject,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extension ChatViewModel: NIMChatManagerDelegate {
|
|
||||||
// MARK: NIMChatManagerDelegate
|
|
||||||
public func send(_ message: NIMMessage, didCompleteWithError error: Error?) {
|
|
||||||
for (i, msg) in messageObjects.enumerated() {
|
|
||||||
if message.messageId == msg.msg?.messageId {
|
|
||||||
messageObjects[i].msg = message
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delegate?.send(message, didCompleteWithError: error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 收到消息
|
|
||||||
public func onRecvMessages(_ messages: [NIMMessage]) {
|
|
||||||
for msg in messages {
|
|
||||||
if msg.session?.sessionId == session.sessionId {
|
|
||||||
if let model = modelTransformMessage(message: msg) {
|
|
||||||
newMsg = msg
|
|
||||||
addTimeMessage(msg)
|
|
||||||
self.messageObjects.append(model)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delegate?.onRecvMessages(messages)
|
|
||||||
}
|
|
||||||
|
|
||||||
public func willSend(_ message: NIMMessage) {
|
|
||||||
if message.session?.sessionId != session.sessionId {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
guard let model = modelTransformMessage(message: message) else { return }
|
|
||||||
|
|
||||||
if newMsg == nil {
|
|
||||||
newMsg = message
|
|
||||||
}
|
|
||||||
|
|
||||||
var isResend = false
|
|
||||||
for (i, msg) in messageObjects.enumerated() {
|
|
||||||
if message.messageId == msg.msg?.messageId {
|
|
||||||
messageObjects[i].msg = message
|
|
||||||
isResend = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !isResend {
|
|
||||||
addTimeMessage(message)
|
|
||||||
messageObjects.append(model)
|
|
||||||
}
|
|
||||||
delegate?.didAppend(message)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public func onReceive(_ notification: NIMCustomSystemNotification) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public func send(_ message: NIMMessage, progress: Float) {
|
|
||||||
delegate?.send(message, progress: progress)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@@ -55,7 +55,7 @@ class ChatBaseCell: UITableViewCell, Reusable{
|
|||||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
selectionStyle = .none
|
selectionStyle = .none
|
||||||
backgroundColor = ThemeColor(hexStr: "#F8F8FB")
|
backgroundColor = .clear
|
||||||
contentView.addSubview(avatarImgView)
|
contentView.addSubview(avatarImgView)
|
||||||
contentView.addSubview(bubbleView)
|
contentView.addSubview(bubbleView)
|
||||||
contentView.addSubview(activityIndicatorView)
|
contentView.addSubview(activityIndicatorView)
|
||||||
|
@@ -37,6 +37,11 @@ class ChatImageCell: ChatBaseCell {
|
|||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
override func layoutMessageCell() {
|
||||||
|
super.layoutMessageCell()
|
||||||
|
setupCellLayout()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ChatImageCell {
|
extension ChatImageCell {
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
class ChatNavView: BaseView {
|
class ChatNavView: BaseView {
|
||||||
|
var uid:String = ""
|
||||||
|
|
||||||
var isLike:Bool? {
|
var isLike:Bool? {
|
||||||
didSet {
|
didSet {
|
||||||
@@ -54,6 +55,7 @@ class ChatNavView: BaseView {
|
|||||||
let button = UIButton(type: .custom)
|
let button = UIButton(type: .custom)
|
||||||
button.setImage(UIImage(named: "chat_back"), for: .normal)
|
button.setImage(UIImage(named: "chat_back"), for: .normal)
|
||||||
button.setImage(UIImage(named: "chat_back"), for: .selected)
|
button.setImage(UIImage(named: "chat_back"), for: .selected)
|
||||||
|
button.addTarget(self, action: #selector(backClick), for: .touchUpInside)
|
||||||
return button
|
return button
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -82,10 +84,35 @@ class ChatNavView: BaseView {
|
|||||||
let button = UIButton(type: .custom)
|
let button = UIButton(type: .custom)
|
||||||
button.setImage(UIImage(named: "chat_opt"), for: .normal)
|
button.setImage(UIImage(named: "chat_opt"), for: .normal)
|
||||||
button.setImage(UIImage(named: "chat_opt"), for: .selected)
|
button.setImage(UIImage(named: "chat_opt"), for: .selected)
|
||||||
|
button.addTarget(self, action: #selector(optClick), for: .touchUpInside)
|
||||||
return button
|
return button
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@objc func optClick() {
|
||||||
|
let alertController = UIAlertController(title: nil,
|
||||||
|
message: nil,
|
||||||
|
preferredStyle: .actionSheet)
|
||||||
|
|
||||||
|
alertController.addAction(UIAlertAction(title: "举报", style: .default, handler: { action in
|
||||||
|
HUDTool.show(with: "举报成功, 我们将尽快处理")
|
||||||
|
}))
|
||||||
|
|
||||||
|
alertController.addAction(UIAlertAction(title: "取消", style: .cancel, handler: { action in
|
||||||
|
|
||||||
|
}))
|
||||||
|
YMRequestX.topViewController()?.present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
@objc func likeClick() {
|
@objc func likeClick() {
|
||||||
//TODO: 关注
|
let params:[String: Any] = ["uid": AuthManager.userUid, "ticket": AuthManager.ticket, "type":"1", "likedUid": uid]
|
||||||
|
RequestPost(path: "fans/like", parma: params) { _ in
|
||||||
|
self.likeBtn.isHidden = true
|
||||||
|
} fail: { code, msg in
|
||||||
|
HUDTool.show(with: msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func backClick() {
|
||||||
|
YMRequestX.topViewController()?.navigationController?.popViewController(animated: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,7 +21,7 @@ class ChatTimeCell: UITableViewCell, Reusable {
|
|||||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
selectionStyle = .none
|
selectionStyle = .none
|
||||||
backgroundColor = ThemeColor(hexStr: "#F8F8FB")
|
backgroundColor = .clear
|
||||||
contentView.addSubview(timeLb)
|
contentView.addSubview(timeLb)
|
||||||
timeLb.snp.makeConstraints { make in
|
timeLb.snp.makeConstraints { make in
|
||||||
make.edges.equalTo(contentView)
|
make.edges.equalTo(contentView)
|
||||||
|
@@ -12,7 +12,7 @@ class ChatVoiceCell: ChatBaseCell, NIMMediaManagerDelegate {
|
|||||||
override var model: ChatSessionProtocol? {
|
override var model: ChatSessionProtocol? {
|
||||||
didSet {
|
didSet {
|
||||||
if let model = model as? ChatVoiceObject {
|
if let model = model as? ChatVoiceObject {
|
||||||
timeLabel.text = "\(model.duartion / 1000)"
|
timeLabel.text = "\(model.duartion / 1000)s"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,8 +28,8 @@ class ChatVoiceCell: ChatBaseCell, NIMMediaManagerDelegate {
|
|||||||
let imageView = UIImageView()
|
let imageView = UIImageView()
|
||||||
imageView.isUserInteractionEnabled = true
|
imageView.isUserInteractionEnabled = true
|
||||||
let firstImage = UIImage(named:"chat_audio_playing_first")!
|
let firstImage = UIImage(named:"chat_audio_playing_first")!
|
||||||
let second = UIImage(named:"chat_audio_playing_first")!
|
let second = UIImage(named:"chat_audio_playing_second")!
|
||||||
let third = UIImage(named:"chat_audio_playing_first")!
|
let third = UIImage(named:"chat_audio_playing_third")!
|
||||||
imageView.animationImages = [firstImage, second, third];
|
imageView.animationImages = [firstImage, second, third];
|
||||||
imageView.animationDuration = 1
|
imageView.animationDuration = 1
|
||||||
imageView.animationRepeatCount = 100
|
imageView.animationRepeatCount = 100
|
||||||
@@ -42,6 +42,8 @@ class ChatVoiceCell: ChatBaseCell, NIMMediaManagerDelegate {
|
|||||||
NIMSDK.shared().mediaManager.setNeedProximityMonitor(false)
|
NIMSDK.shared().mediaManager.setNeedProximityMonitor(false)
|
||||||
NIMSDK.shared().mediaManager.add(self)
|
NIMSDK.shared().mediaManager.add(self)
|
||||||
loadSubViews()
|
loadSubViews()
|
||||||
|
let tap = UITapGestureRecognizer(target: self, action: #selector(didTapBackRecognizer))
|
||||||
|
addGestureRecognizer(tap)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -89,6 +91,10 @@ class ChatVoiceCell: ChatBaseCell, NIMMediaManagerDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func layoutMessageCell() {
|
||||||
|
super.layoutMessageCell()
|
||||||
|
setupCellLayout()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user