Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
54bcb13e86 | ||
![]() |
5f9aa7edea | ||
![]() |
b1e6c707b8 | ||
![]() |
1b5cbfad7d | ||
![]() |
1d1c6014c5 | ||
![]() |
8c5a8f7118 | ||
![]() |
a7dd7eb7a2 | ||
![]() |
cb0e706f44 | ||
![]() |
b10c35556d | ||
![]() |
db7b798590 | ||
![]() |
495613e2d7 | ||
![]() |
9b17c69509 | ||
![]() |
224ac8efb1 | ||
![]() |
e6afe4ba33 | ||
![]() |
a054d160ea | ||
![]() |
84f2877bd2 | ||
![]() |
048cc8dddd | ||
![]() |
f9e52ad286 | ||
![]() |
6378a2e509 | ||
![]() |
28ad714f6f |
4
Podfile
@@ -24,8 +24,7 @@ target 'xplan-ios' do
|
||||
pod 'SZTextView'
|
||||
#轮播图
|
||||
pod 'SDCycleScrollView'
|
||||
#上传图片
|
||||
pod 'Qiniu'
|
||||
|
||||
#内购
|
||||
pod 'IAPHelper'
|
||||
#持久化存储
|
||||
@@ -72,6 +71,7 @@ target 'xplan-ios' do
|
||||
pod 'WechatOpenSDK'
|
||||
#调试
|
||||
pod 'LookinServer', :configurations => ['Debug']
|
||||
pod 'QCloudCOSXML'
|
||||
|
||||
end
|
||||
post_install do |installer|
|
||||
|
186
Podfile.lock
@@ -14,92 +14,98 @@ PODS:
|
||||
- AFNetworking/Serialization (4.0.1)
|
||||
- AFNetworking/UIKit (4.0.1):
|
||||
- AFNetworking/NSURLSession
|
||||
- AgoraRtcEngine_iOS (4.2.2):
|
||||
- AgoraRtcEngine_iOS/AIAEC (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/AINS (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/AudioBeauty (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/ClearVision (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/ContentInspect (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/DRM (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/FaceDetection (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/ReplayKit (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/RtcBasic (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/SpatialAudio (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/VideoCodecDec (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/VideoCodecEnc (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/VirtualBackground (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/VQA (= 4.2.2)
|
||||
- AgoraRtcEngine_iOS/AIAEC (4.2.2)
|
||||
- AgoraRtcEngine_iOS/AINS (4.2.2)
|
||||
- AgoraRtcEngine_iOS/AudioBeauty (4.2.2)
|
||||
- AgoraRtcEngine_iOS/ClearVision (4.2.2)
|
||||
- AgoraRtcEngine_iOS/ContentInspect (4.2.2)
|
||||
- AgoraRtcEngine_iOS/DRM (4.2.2)
|
||||
- AgoraRtcEngine_iOS/FaceDetection (4.2.2)
|
||||
- AgoraRtcEngine_iOS/ReplayKit (4.2.2)
|
||||
- AgoraRtcEngine_iOS/RtcBasic (4.2.2)
|
||||
- AgoraRtcEngine_iOS/SpatialAudio (4.2.2)
|
||||
- AgoraRtcEngine_iOS/VideoCodecDec (4.2.2)
|
||||
- AgoraRtcEngine_iOS/VideoCodecEnc (4.2.2)
|
||||
- AgoraRtcEngine_iOS/VirtualBackground (4.2.2)
|
||||
- AgoraRtcEngine_iOS/VQA (4.2.2)
|
||||
- AlipaySDK-iOS (15.8.11)
|
||||
- AgoraRtcEngine_iOS (4.2.6):
|
||||
- AgoraRtcEngine_iOS/AIAEC (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/AINS (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/AudioBeauty (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/ClearVision (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/ContentInspect (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/DRM (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/FaceDetection (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/ReplayKit (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/RtcBasic (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/SpatialAudio (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/VideoCodecDec (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/VideoCodecEnc (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/VirtualBackground (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/VQA (= 4.2.6)
|
||||
- AgoraRtcEngine_iOS/AIAEC (4.2.6)
|
||||
- AgoraRtcEngine_iOS/AINS (4.2.6)
|
||||
- AgoraRtcEngine_iOS/AudioBeauty (4.2.6)
|
||||
- AgoraRtcEngine_iOS/ClearVision (4.2.6)
|
||||
- AgoraRtcEngine_iOS/ContentInspect (4.2.6)
|
||||
- AgoraRtcEngine_iOS/DRM (4.2.6)
|
||||
- AgoraRtcEngine_iOS/FaceDetection (4.2.6)
|
||||
- AgoraRtcEngine_iOS/ReplayKit (4.2.6)
|
||||
- AgoraRtcEngine_iOS/RtcBasic (4.2.6)
|
||||
- AgoraRtcEngine_iOS/SpatialAudio (4.2.6)
|
||||
- AgoraRtcEngine_iOS/VideoCodecDec (4.2.6)
|
||||
- AgoraRtcEngine_iOS/VideoCodecEnc (4.2.6)
|
||||
- AgoraRtcEngine_iOS/VirtualBackground (4.2.6)
|
||||
- AgoraRtcEngine_iOS/VQA (4.2.6)
|
||||
- AlipaySDK-iOS (15.8.16)
|
||||
- Base64 (1.1.2)
|
||||
- Bugly (2.5.93)
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- FFPopup (1.1.5)
|
||||
- FLAnimatedImage (1.0.17)
|
||||
- HappyDNS (0.3.17)
|
||||
- IAPHelper (1.1)
|
||||
- IQKeyboardManager (6.5.9)
|
||||
- JXCategoryView (1.5.9)
|
||||
- IQKeyboardManager (6.5.17)
|
||||
- JXCategoryView (1.6.1)
|
||||
- JXPagingView/Pager (2.1.2)
|
||||
- LinkedME_LinkPage (1.5.5.4)
|
||||
- LookinServer (1.0.4)
|
||||
- LookinServer (1.2.6):
|
||||
- LookinServer/Core (= 1.2.6)
|
||||
- LookinServer/Core (1.2.6)
|
||||
- MarqueeLabel-ObjC (3.3.0)
|
||||
- Masonry (1.1.0)
|
||||
- MBProgressHUD (1.2.0)
|
||||
- MJExtension (3.3.0)
|
||||
- MJRefresh (3.7.3)
|
||||
- mob_sharesdk (4.4.13):
|
||||
- mob_sharesdk/ShareSDK (= 4.4.13)
|
||||
- MJExtension (3.4.1)
|
||||
- MJRefresh (3.7.6)
|
||||
- mob_sharesdk (4.4.23):
|
||||
- mob_sharesdk/ShareSDK (= 4.4.23)
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- mob_sharesdk/ShareSDK (4.4.13):
|
||||
- mob_sharesdk/ShareSDK (4.4.23):
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- mob_sharesdk/ShareSDKExtension (4.4.13):
|
||||
- mob_sharesdk/ShareSDKExtension (4.4.23):
|
||||
- mob_sharesdk/ShareSDK
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- mob_sharesdk/ShareSDKPlatforms/Apple (4.4.13):
|
||||
- mob_sharesdk/ShareSDKPlatforms/Apple (4.4.23):
|
||||
- mob_sharesdk/ShareSDK
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- mob_sharesdk/ShareSDKPlatforms/QQ (4.4.13):
|
||||
- mob_sharesdk/ShareSDKPlatforms/QQ (4.4.23):
|
||||
- mob_sharesdk/ShareSDK
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- mob_sharesdk/ShareSDKPlatforms/WeChat_Lite (4.4.13):
|
||||
- mob_sharesdk/ShareSDKPlatforms/WeChat_Lite (4.4.23):
|
||||
- mob_sharesdk/ShareSDK
|
||||
- MOBFoundation (>= 3.2.9)
|
||||
- MOBFoundation (3.2.48)
|
||||
- NIMSDK_LITE (8.9.110)
|
||||
- NTESBaseComponent (1.4)
|
||||
- NTESQuickPass (3.2.6):
|
||||
- MOBFoundation (3.2.63)
|
||||
- NIMSDK_LITE (8.9.124)
|
||||
- NTESBaseComponent (1.8)
|
||||
- NTESQuickPass (3.4.9):
|
||||
- NTESBaseComponent
|
||||
- pop (1.0.12)
|
||||
- Protobuf (3.19.1)
|
||||
- QGVAPlayer (1.0.15)
|
||||
- Qiniu (8.3.2):
|
||||
- HappyDNS (~> 0.3.17)
|
||||
- Protobuf (3.25.3)
|
||||
- QCloudCore/Default (6.3.5):
|
||||
- QCloudTrack/Beacon (= 6.3.5)
|
||||
- QCloudCOSXML (6.3.5):
|
||||
- QCloudCOSXML/Default (= 6.3.5)
|
||||
- QCloudCOSXML/Default (6.3.5):
|
||||
- QCloudCore/Default (= 6.3.5)
|
||||
- QCloudTrack/Beacon (6.3.5)
|
||||
- QGVAPlayer (1.0.19)
|
||||
- QY_NIM_iOS_SDK (6.6.1)
|
||||
- ReactiveObjC (3.1.1)
|
||||
- SDCycleScrollView (1.82):
|
||||
- SDWebImage (>= 5.0.0)
|
||||
- SDWebImage (5.11.1):
|
||||
- SDWebImage/Core (= 5.11.1)
|
||||
- SDWebImage/Core (5.11.1)
|
||||
- SDWebImage (5.19.0):
|
||||
- SDWebImage/Core (= 5.19.0)
|
||||
- SDWebImage/Core (5.19.0)
|
||||
- SDWebImageFLPlugin (0.6.0):
|
||||
- FLAnimatedImage (>= 1.0.11)
|
||||
- SDWebImage/Core (~> 5.10)
|
||||
- SSKeychain (1.4.1)
|
||||
- SSZipArchive (2.4.2)
|
||||
- SSZipArchive (2.4.3)
|
||||
- SVGAPlayer (2.5.7):
|
||||
- SVGAPlayer/Core (= 2.5.7)
|
||||
- SVGAPlayer/ProtoFiles (= 2.5.7)
|
||||
@@ -109,13 +115,17 @@ PODS:
|
||||
- SVGAPlayer/ProtoFiles (2.5.7):
|
||||
- Protobuf (~> 3.4)
|
||||
- SZTextView (1.3.0)
|
||||
- TXLiteAVSDK_TRTC (11.4.14530):
|
||||
- TXLiteAVSDK_TRTC/TRTC (= 11.4.14530)
|
||||
- TXLiteAVSDK_TRTC/TRTC (11.4.14530)
|
||||
- TZImagePickerController (3.8.1)
|
||||
- UMCommon (7.3.5):
|
||||
- TXLiteAVSDK_TRTC (11.4.14571):
|
||||
- TXLiteAVSDK_TRTC/TRTC (= 11.4.14571)
|
||||
- TXLiteAVSDK_TRTC/TRTC (11.4.14571)
|
||||
- TZImagePickerController (3.8.4):
|
||||
- TZImagePickerController/Basic (= 3.8.4)
|
||||
- TZImagePickerController/Location (= 3.8.4)
|
||||
- TZImagePickerController/Basic (3.8.4)
|
||||
- TZImagePickerController/Location (3.8.4)
|
||||
- UMCommon (7.4.5):
|
||||
- UMDevice
|
||||
- UMDevice (2.0.5)
|
||||
- UMDevice (3.3.0)
|
||||
- WechatOpenSDK (2.0.2)
|
||||
- YYCache (1.0.4)
|
||||
- YYImage (1.0.4):
|
||||
@@ -154,8 +164,8 @@ DEPENDENCIES:
|
||||
- NIMSDK_LITE (~> 8.9.0)
|
||||
- NTESQuickPass
|
||||
- pop (~> 1.0.12)
|
||||
- QCloudCOSXML
|
||||
- QGVAPlayer
|
||||
- Qiniu
|
||||
- QY_NIM_iOS_SDK (~> 6.6.1)
|
||||
- ReactiveObjC
|
||||
- SDCycleScrollView
|
||||
@@ -182,7 +192,6 @@ SPEC REPOS:
|
||||
- CocoaAsyncSocket
|
||||
- FFPopup
|
||||
- FLAnimatedImage
|
||||
- HappyDNS
|
||||
- IAPHelper
|
||||
- IQKeyboardManager
|
||||
- JXCategoryView
|
||||
@@ -201,8 +210,10 @@ SPEC REPOS:
|
||||
- NTESQuickPass
|
||||
- pop
|
||||
- Protobuf
|
||||
- QCloudCore
|
||||
- QCloudCOSXML
|
||||
- QCloudTrack
|
||||
- QGVAPlayer
|
||||
- Qiniu
|
||||
- QY_NIM_iOS_SDK
|
||||
- ReactiveObjC
|
||||
- SDCycleScrollView
|
||||
@@ -224,53 +235,54 @@ SPEC REPOS:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
|
||||
AgoraRtcEngine_iOS: c510de329cd905daff3f01fa4c872ea6d5eaee23
|
||||
AlipaySDK-iOS: a07b6eafa847a5b29acb6c150ea16d9792d5d167
|
||||
AgoraRtcEngine_iOS: ac647332ad8f86d79cf810601c9e62b28c3a4de0
|
||||
AlipaySDK-iOS: 5e6011fbd546e7db6b43c1f527d164ee63f3d7cb
|
||||
Base64: cecfb41a004124895a7bcee567a89bae5a89d49b
|
||||
Bugly: b8715e6ec4004b7f7fbffab0643ba80545aee3da
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
FFPopup: a208dcee8db3e54ec4a88fcd6481f6f5d85b7a83
|
||||
FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b
|
||||
HappyDNS: 848ef73e24f2b0e2752064223ce2dc0dd88900ea
|
||||
IAPHelper: fd74f53b0ac142eed085777b88b86a11746a2dd4
|
||||
IQKeyboardManager: 241cc94ccabc9deb8f8bd7d12f00d73288d13ecc
|
||||
JXCategoryView: 2ef9ecfd3735158d009ce02d1f29811aa822da65
|
||||
IQKeyboardManager: 904d013844bbae0abe073f015487bfebe5476335
|
||||
JXCategoryView: 7b1ee69ede4843c581688afe84d0f047723262f2
|
||||
JXPagingView: 90924b364a2ff7e94db534fad1fa50925ff69ee4
|
||||
LinkedME_LinkPage: 0b443cec28582eb2d7e1c09987072e33e44083ec
|
||||
LookinServer: 743c1681771d0a8dcc38825325a080c3186404a5
|
||||
LookinServer: de929b55f8fa2e241c18c39af3f900eaa9166389
|
||||
MarqueeLabel-ObjC: 696eaa82e4fcc7fb53e4fdf37ac138f03bf022d6
|
||||
Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
|
||||
MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
|
||||
MJExtension: 01704cca2b60a214c10761b6491eab74069d68a9
|
||||
MJRefresh: ec9c53ff4abf3a9237b4283862f1bd51c2ee3fdb
|
||||
mob_sharesdk: e8efde8dc7a872064c197a0af13eb5d06a2b143c
|
||||
MOBFoundation: 5135f9e8310989a32b5ed4f130c01f4d8abc011a
|
||||
NIMSDK_LITE: 299ff39677d705b91413d14ad352b32a1b0e72fe
|
||||
NTESBaseComponent: 9e97373eec7e5a26c39db26477bf99a37ee9e71a
|
||||
NTESQuickPass: 781bd12ee63681389fe9b646c837fa76e3a00e6e
|
||||
MJExtension: 21c5f6f8c4d5d8844b7ae8fbae08fed0b501f961
|
||||
MJRefresh: 2fe7fb43a5167ceda20bb7e63f130c04fd1814a5
|
||||
mob_sharesdk: 6081cd4584b581be65cdcb78ff82e8288f037f97
|
||||
MOBFoundation: 0f932708bf9fa5c07aea37992554ca1b3af9e572
|
||||
NIMSDK_LITE: 48b43ff18d3d9634d36304e8c647a46bb05bc974
|
||||
NTESBaseComponent: 7b310e7e80bb6c27183176188b98356d200dbbc5
|
||||
NTESQuickPass: 248f5efa21c51227c391c3ff5110cf3ad4d3809b
|
||||
pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
|
||||
Protobuf: 3724efa50cb2846d7ccebc8691c574e85fd74471
|
||||
QGVAPlayer: 002673a02b4e50f9f53d0673b87168b540a300ae
|
||||
Qiniu: 61f1e2fdfb35b37f98c8f03a718faf12652f9994
|
||||
Protobuf: 8e9074797a13c484a79959fdb819ef4ae6da7dbe
|
||||
QCloudCore: 9ba71f98027912b87bde80084e074d4e443769f5
|
||||
QCloudCOSXML: e10fecf4f3bf55b56930162483c41c246237853f
|
||||
QCloudTrack: a1e25308ead00d58db596b8564c7f197a8a06102
|
||||
QGVAPlayer: a0bca68c9bd6f1c8de5ac2d10ddf98be6038cce9
|
||||
QY_NIM_iOS_SDK: 7fbf411c9c299f3b904fcc5b494542f41a11f70c
|
||||
ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
|
||||
SDCycleScrollView: a0d74c3384caa72bdfc81470bdbc8c14b3e1fbcf
|
||||
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
|
||||
SDWebImage: 981fd7e860af070920f249fd092420006014c3eb
|
||||
SDWebImageFLPlugin: 72efd2cfbf565bc438421abb426f4bcf7b670754
|
||||
SSKeychain: 55cc80f66f5c73da827e3077f02e43528897db41
|
||||
SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
|
||||
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
|
||||
TXLiteAVSDK_TRTC: 72ff3c596f55555be2dd733291501eef5fae9ce5
|
||||
TZImagePickerController: 943511626019431372cf908f24c114521e484f0e
|
||||
UMCommon: ab4d875ddefe1b06c60b577e4a58bc4d433ee067
|
||||
UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0
|
||||
TXLiteAVSDK_TRTC: 5be9b8b610608ad24525e88ac0c7ec5f146523d5
|
||||
TZImagePickerController: f1c9f1cae6ac0e30b31aaa9698f9bf4a7cf5b84f
|
||||
UMCommon: 28cd03c308341f687f5269abd26a82d66f01837f
|
||||
UMDevice: f67106f8f1a8bc465ba20d376d896e178be66ba7
|
||||
WechatOpenSDK: e79349b37d44c015210f39fd6d2379f0ec60efe2
|
||||
YYCache: 8105b6638f5e849296c71f331ff83891a4942952
|
||||
YYImage: 1e1b62a9997399593e4b9c4ecfbbabbf1d3f3b54
|
||||
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
|
||||
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
|
||||
|
||||
PODFILE CHECKSUM: 0f2e29ba8c875f839292918f612c6ec567ad4318
|
||||
PODFILE CHECKSUM: 3bd419f422e49acfd1c9500a9a45ab79466fa77a
|
||||
|
||||
COCOAPODS: 1.12.1
|
||||
|
@@ -219,10 +219,15 @@
|
||||
23844FC62B3AADA8002AD661 /* kMewMainHomePlayVoice.svga in Resources */ = {isa = PBXBuildFile; fileRef = 23844FC52B3AADA8002AD661 /* kMewMainHomePlayVoice.svga */; };
|
||||
23844FC82B3AADC5002AD661 /* kMewMainHoemloading.svga in Resources */ = {isa = PBXBuildFile; fileRef = 23844FC72B3AADC5002AD661 /* kMewMainHoemloading.svga */; };
|
||||
23844FCB2B3AC267002AD661 /* MewMineUserInfoOnRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23844FCA2B3AC267002AD661 /* MewMineUserInfoOnRoomView.m */; };
|
||||
23C9DFBD2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C9DFBC2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.m */; };
|
||||
23C9DFC02B83057000B51558 /* MewRoomReceiveGiftPopupWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C9DFBF2B83057000B51558 /* MewRoomReceiveGiftPopupWindow.m */; };
|
||||
23CEFB692AFB32BE00576D89 /* XPRoomAnimationTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 23CEFB682AFB32BE00576D89 /* XPRoomAnimationTool.m */; };
|
||||
23E1708C2AED2E080039DE62 /* YYTextAsyncLayer+XPTextAsyncLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 23E1708B2AED2E080039DE62 /* YYTextAsyncLayer+XPTextAsyncLayer.m */; };
|
||||
23EEB0622B3C1B3F00E8CA05 /* MewMainHomeEmptyCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 23EEB0612B3C1B3F00E8CA05 /* MewMainHomeEmptyCell.m */; };
|
||||
23F8BFF82A7A392000A36763 /* XPRoomMessagePrivilegeCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 23F8BFF72A7A392000A36763 /* XPRoomMessagePrivilegeCardCell.m */; };
|
||||
23FE47CF2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FE47CE2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.m */; };
|
||||
23FE47D22BB2D98300F09D23 /* YinMineSettingPopUpView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FE47D12BB2D98300F09D23 /* YinMineSettingPopUpView.m */; };
|
||||
23FE47EA2BB5076A00F09D23 /* YinUploadFileModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FE47E92BB5076A00F09D23 /* YinUploadFileModel.m */; };
|
||||
73FFADDC93E195344047A2EC /* Pods_xplan_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_xplan_ios.framework */; };
|
||||
9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; };
|
||||
9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; };
|
||||
@@ -831,7 +836,6 @@
|
||||
E83DB47A27462C4500D8CBD1 /* XPGiftBigPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */; };
|
||||
E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */; };
|
||||
E83DB481274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */; };
|
||||
E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */; };
|
||||
E83DB487274670DA00D8CBD1 /* XPRoomGiftBroadCastModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB486274670DA00D8CBD1 /* XPRoomGiftBroadCastModel.m */; };
|
||||
E8412F9627795E34006E1101 /* XPRoomInviteFansView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9527795E34006E1101 /* XPRoomInviteFansView.m */; };
|
||||
E8412F9927799249006E1101 /* InviteFansModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9827799249006E1101 /* InviteFansModel.m */; };
|
||||
@@ -1195,7 +1199,6 @@
|
||||
E8B825CA26EA1231009E8E9F /* LoginVerifCodeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C826EA1231009E8E9F /* LoginVerifCodeViewController.m */; };
|
||||
E8B825CD26EA18C8009E8E9F /* ThemeColor.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825CC26EA18C8009E8E9F /* ThemeColor.m */; };
|
||||
E8B825D026EA3825009E8E9F /* LoginPasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825CF26EA3825009E8E9F /* LoginPasswordViewController.m */; };
|
||||
E8B846BC26FD7C1200A777FE /* UploadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BB26FD7C1200A777FE /* UploadImage.m */; };
|
||||
E8B846BF26FD827900A777FE /* XPMineUserInfoAlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */; };
|
||||
E8B846C226FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C126FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m */; };
|
||||
E8B846C526FDB41A00A777FE /* XPMineUserInfolbumPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C426FDB41A00A777FE /* XPMineUserInfolbumPresenter.m */; };
|
||||
@@ -1826,6 +1829,10 @@
|
||||
23844FC72B3AADC5002AD661 /* kMewMainHoemloading.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = kMewMainHoemloading.svga; sourceTree = "<group>"; };
|
||||
23844FC92B3AC267002AD661 /* MewMineUserInfoOnRoomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MewMineUserInfoOnRoomView.h; sourceTree = "<group>"; };
|
||||
23844FCA2B3AC267002AD661 /* MewMineUserInfoOnRoomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewMineUserInfoOnRoomView.m; sourceTree = "<group>"; };
|
||||
23C9DFBB2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MewRoomReceiveGiftLandscapeView.h; sourceTree = "<group>"; };
|
||||
23C9DFBC2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewRoomReceiveGiftLandscapeView.m; sourceTree = "<group>"; };
|
||||
23C9DFBE2B83057000B51558 /* MewRoomReceiveGiftPopupWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MewRoomReceiveGiftPopupWindow.h; sourceTree = "<group>"; };
|
||||
23C9DFBF2B83057000B51558 /* MewRoomReceiveGiftPopupWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewRoomReceiveGiftPopupWindow.m; sourceTree = "<group>"; };
|
||||
23CEFB672AFB32BE00576D89 /* XPRoomAnimationTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnimationTool.h; sourceTree = "<group>"; };
|
||||
23CEFB682AFB32BE00576D89 /* XPRoomAnimationTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnimationTool.m; sourceTree = "<group>"; };
|
||||
23E1708A2AED2E080039DE62 /* YYTextAsyncLayer+XPTextAsyncLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "YYTextAsyncLayer+XPTextAsyncLayer.h"; path = "xplan-ios/Appdelegate/YYTextAsyncLayer+XPTextAsyncLayer.h"; sourceTree = SOURCE_ROOT; };
|
||||
@@ -1834,6 +1841,12 @@
|
||||
23EEB0612B3C1B3F00E8CA05 /* MewMainHomeEmptyCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MewMainHomeEmptyCell.m; sourceTree = "<group>"; };
|
||||
23F8BFF62A7A392000A36763 /* XPRoomMessagePrivilegeCardCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessagePrivilegeCardCell.h; sourceTree = "<group>"; };
|
||||
23F8BFF72A7A392000A36763 /* XPRoomMessagePrivilegeCardCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessagePrivilegeCardCell.m; sourceTree = "<group>"; };
|
||||
23FE47CD2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YinMineSettingFillCodeView.h; sourceTree = "<group>"; };
|
||||
23FE47CE2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YinMineSettingFillCodeView.m; sourceTree = "<group>"; };
|
||||
23FE47D02BB2D98300F09D23 /* YinMineSettingPopUpView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YinMineSettingPopUpView.h; sourceTree = "<group>"; };
|
||||
23FE47D12BB2D98300F09D23 /* YinMineSettingPopUpView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YinMineSettingPopUpView.m; sourceTree = "<group>"; };
|
||||
23FE47E82BB5076A00F09D23 /* YinUploadFileModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YinUploadFileModel.h; sourceTree = "<group>"; };
|
||||
23FE47E92BB5076A00F09D23 /* YinUploadFileModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YinUploadFileModel.m; sourceTree = "<group>"; };
|
||||
7DB00EC07F1D0ADFF900B38D /* Pods-xplan-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-xplan-ios.debug.xcconfig"; path = "Target Support Files/Pods-xplan-ios/Pods-xplan-ios.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = "<group>"; };
|
||||
9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = "<group>"; };
|
||||
@@ -2897,8 +2910,6 @@
|
||||
E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftBannerView.m; sourceTree = "<group>"; };
|
||||
E83DB47F274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftBannerUserInfoModel.h; sourceTree = "<group>"; };
|
||||
E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftBannerUserInfoModel.m; sourceTree = "<group>"; };
|
||||
E83DB4822746661800D8CBD1 /* XPRoomGiftBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftBroadcastView.h; sourceTree = "<group>"; };
|
||||
E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftBroadcastView.m; sourceTree = "<group>"; };
|
||||
E83DB485274670DA00D8CBD1 /* XPRoomGiftBroadCastModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftBroadCastModel.h; sourceTree = "<group>"; };
|
||||
E83DB486274670DA00D8CBD1 /* XPRoomGiftBroadCastModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftBroadCastModel.m; sourceTree = "<group>"; };
|
||||
E8412F9427795E34006E1101 /* XPRoomInviteFansView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInviteFansView.h; sourceTree = "<group>"; };
|
||||
@@ -3639,8 +3650,6 @@
|
||||
E8B825CC26EA18C8009E8E9F /* ThemeColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThemeColor.m; sourceTree = "<group>"; };
|
||||
E8B825CE26EA3825009E8E9F /* LoginPasswordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordViewController.h; sourceTree = "<group>"; };
|
||||
E8B825CF26EA3825009E8E9F /* LoginPasswordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPasswordViewController.m; sourceTree = "<group>"; };
|
||||
E8B846BA26FD7C1200A777FE /* UploadImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UploadImage.h; sourceTree = "<group>"; };
|
||||
E8B846BB26FD7C1200A777FE /* UploadImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UploadImage.m; sourceTree = "<group>"; };
|
||||
E8B846BD26FD827900A777FE /* XPMineUserInfoAlbumViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoAlbumViewController.h; sourceTree = "<group>"; };
|
||||
E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoAlbumViewController.m; sourceTree = "<group>"; };
|
||||
E8B846C026FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoAlbumCollectionViewCell.h; sourceTree = "<group>"; };
|
||||
@@ -4505,7 +4514,6 @@
|
||||
E82D5C77276B25B000858D6D /* SpriteSheetManager */,
|
||||
E865964E2701A1A900846EBD /* StatisticsService */,
|
||||
E89DA6612700590A008483C1 /* IAPHelper */,
|
||||
E8B846B926FD7BE600A777FE /* UploadImage */,
|
||||
E8EEB8EA26FC2050007C6EBA /* SDPhotoBrowser */,
|
||||
E81366E426F0A4820076364C /* NSString */,
|
||||
E82109AA26F1C86E00FC3319 /* CountDown */,
|
||||
@@ -5188,8 +5196,10 @@
|
||||
9B33E3C827D85379003B0E62 /* File */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9B33E3C927D85379003B0E62 /* UploadFile.m */,
|
||||
9B33E3CA27D85379003B0E62 /* UploadFile.h */,
|
||||
9B33E3C927D85379003B0E62 /* UploadFile.m */,
|
||||
23FE47E82BB5076A00F09D23 /* YinUploadFileModel.h */,
|
||||
23FE47E92BB5076A00F09D23 /* YinUploadFileModel.m */,
|
||||
);
|
||||
path = File;
|
||||
sourceTree = "<group>";
|
||||
@@ -7065,8 +7075,10 @@
|
||||
9B8DE0E3289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m */,
|
||||
E83DB47B2746372300D8CBD1 /* XPRoomGiftBannerView.h */,
|
||||
E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */,
|
||||
E83DB4822746661800D8CBD1 /* XPRoomGiftBroadcastView.h */,
|
||||
E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */,
|
||||
23C9DFBB2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.h */,
|
||||
23C9DFBC2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.m */,
|
||||
23C9DFBE2B83057000B51558 /* MewRoomReceiveGiftPopupWindow.h */,
|
||||
23C9DFBF2B83057000B51558 /* MewRoomReceiveGiftPopupWindow.m */,
|
||||
237B89EF2A948E60005DB380 /* XPRoomGameInviteBannerView.h */,
|
||||
237B89F02A948E60005DB380 /* XPRoomGameInviteBannerView.m */,
|
||||
E8A03DFD27635F960098D9EA /* XPRoomCandyGiftView.h */,
|
||||
@@ -8116,6 +8128,10 @@
|
||||
237B89DE2A933F52005DB380 /* XPMineUserGameCell.m */,
|
||||
237B89EC2A945F81005DB380 /* XPMineUserGameTypeCell.h */,
|
||||
237B89ED2A945F81005DB380 /* XPMineUserGameTypeCell.m */,
|
||||
23FE47CD2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.h */,
|
||||
23FE47CE2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.m */,
|
||||
23FE47D02BB2D98300F09D23 /* YinMineSettingPopUpView.h */,
|
||||
23FE47D12BB2D98300F09D23 /* YinMineSettingPopUpView.m */,
|
||||
);
|
||||
path = MineInfo;
|
||||
sourceTree = "<group>";
|
||||
@@ -8871,15 +8887,6 @@
|
||||
path = Model;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8B846B926FD7BE600A777FE /* UploadImage */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E8B846BA26FD7C1200A777FE /* UploadImage.h */,
|
||||
E8B846BB26FD7C1200A777FE /* UploadImage.m */,
|
||||
);
|
||||
path = UploadImage;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E8B846D026FDDBCD00A777FE /* Recharge */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -10466,6 +10473,7 @@
|
||||
E8664ED027E42238000171BA /* XPRoomPKTimePickerView.m in Sources */,
|
||||
E824544826F5945300BE8163 /* XPMinePayPwdProtocol.h in Sources */,
|
||||
9BFB10162897AAB300B3985E /* XPNewUserRechargeSucessView.m in Sources */,
|
||||
23C9DFBD2B82FDBA00B51558 /* MewRoomReceiveGiftLandscapeView.m in Sources */,
|
||||
E8AB633628AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m in Sources */,
|
||||
E824543A26F5880E00BE8163 /* XPLoginVerifBindPhoneProtocol.h in Sources */,
|
||||
E8E20BE2281695800033B688 /* XPMineLoginPasswordViewController.m in Sources */,
|
||||
@@ -10867,6 +10875,7 @@
|
||||
E81C1B1C27705F6B0020D1E4 /* XPArrangeMicPresenter.m in Sources */,
|
||||
184862CE27213FD7005FC5DC /* ZegoRtcImpl.m in Sources */,
|
||||
E8A88D2727E8193400CA8837 /* XPRoomPKSelectUserView.m in Sources */,
|
||||
23FE47CF2BB2C8CE00F09D23 /* YinMineSettingFillCodeView.m in Sources */,
|
||||
9B734F7C288AB05A00CBDAA9 /* XPMIneGameCollectionViewCell.m in Sources */,
|
||||
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */,
|
||||
E8664ED927E4355C000171BA /* XPRoomPKRecordTableViewCell.m in Sources */,
|
||||
@@ -10972,7 +10981,9 @@
|
||||
18A61BE8274F9CF000A09A54 /* SessionListViewController.m in Sources */,
|
||||
E8C1CD6A27D8937800376F83 /* XPRoomFaceCollectionViewCell.m in Sources */,
|
||||
E8DBB6F927B639A300AA285D /* LittleGameStageView.m in Sources */,
|
||||
23FE47EA2BB5076A00F09D23 /* YinUploadFileModel.m in Sources */,
|
||||
9B2EA7C02804037700ED17BF /* AnchorPKStageView.m in Sources */,
|
||||
23FE47D22BB2D98300F09D23 /* YinMineSettingPopUpView.m in Sources */,
|
||||
E811FFF72742367B00918544 /* XPGiftEmptyCollectionViewCell.m in Sources */,
|
||||
E8A86E0827BA38DB001C21F9 /* UIImage+RW.m in Sources */,
|
||||
E800807927FD84560055A8AB /* ClanInfoModel.m in Sources */,
|
||||
@@ -11088,7 +11099,6 @@
|
||||
14A0CF4429C022D300B2375A /* XPMineRechargePayCollectionViewCell.m in Sources */,
|
||||
E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */,
|
||||
189DD52E26DE255300AB55B1 /* AppDelegate.m in Sources */,
|
||||
E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */,
|
||||
E84150C527747E0900A7F548 /* FirstRechargeRewardModel.m in Sources */,
|
||||
E8A1E4572762092700B294CA /* XPCandyTreePresenter.m in Sources */,
|
||||
E8B9843328ABA2FF0022D026 /* MonentsPicResInfo.m in Sources */,
|
||||
@@ -11326,7 +11336,6 @@
|
||||
237B8A092A95A52B005DB380 /* XPMineGameOrderItemVC.m in Sources */,
|
||||
E839533F276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m in Sources */,
|
||||
9B73CD11279AE99B006AF255 /* XPSkillCardListCell.m in Sources */,
|
||||
E8B846BC26FD7C1200A777FE /* UploadImage.m in Sources */,
|
||||
9BCE6144277D657600CC0358 /* XPReleaseRadioTableViewCell.m in Sources */,
|
||||
9B16A34827E17D9B00E13A98 /* XPRoomTrumpetViewController.m in Sources */,
|
||||
186A534D26FC6ED900D67B2C /* TTActionSheetView.m in Sources */,
|
||||
@@ -11430,6 +11439,7 @@
|
||||
E8A30BEB28534A96003B4873 /* XPSessionFindNewFiltrateView.m in Sources */,
|
||||
E84BF7E0277C869A00EF8877 /* XPRoomOnLineViewController.m in Sources */,
|
||||
186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */,
|
||||
23C9DFC02B83057000B51558 /* MewRoomReceiveGiftPopupWindow.m in Sources */,
|
||||
E8ACEFF827C9034C00F66D1A /* XPHomeListEmptyTableViewCell.m in Sources */,
|
||||
E88749B6282B8FC600C3C7DB /* MonentsInfoModel.m in Sources */,
|
||||
E89D60BA271D643A001F8895 /* Api+Room.m in Sources */,
|
||||
@@ -11685,7 +11695,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 2.1.0;
|
||||
MARKETING_VERSION = 2.1.5;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -11783,8 +11793,6 @@
|
||||
"-framework",
|
||||
"\"Foundation\"",
|
||||
"-framework",
|
||||
"\"HappyDNS\"",
|
||||
"-framework",
|
||||
"\"IAPHelper\"",
|
||||
"-framework",
|
||||
"\"IQKeyboardManager\"",
|
||||
@@ -11837,8 +11845,6 @@
|
||||
"-framework",
|
||||
"\"QYSDK_NIM\"",
|
||||
"-framework",
|
||||
"\"Qiniu\"",
|
||||
"-framework",
|
||||
"\"QuartzCore\"",
|
||||
"-framework",
|
||||
"\"ReactiveObjC\"",
|
||||
@@ -11889,12 +11895,8 @@
|
||||
"-framework",
|
||||
"\"VideoToolbox\"",
|
||||
"-framework",
|
||||
"\"WYEAccountApiSDK\"",
|
||||
"-framework",
|
||||
"\"WYOAuth\"",
|
||||
"-framework",
|
||||
"\"WYTYRZUISDK\"",
|
||||
"-framework",
|
||||
"\"WebKit\"",
|
||||
"-framework",
|
||||
"\"WechatConnector\"",
|
||||
@@ -11948,7 +11950,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 2.1.0;
|
||||
MARKETING_VERSION = 2.1.5;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -12046,8 +12048,6 @@
|
||||
"-framework",
|
||||
"\"Foundation\"",
|
||||
"-framework",
|
||||
"\"HappyDNS\"",
|
||||
"-framework",
|
||||
"\"IAPHelper\"",
|
||||
"-framework",
|
||||
"\"IQKeyboardManager\"",
|
||||
@@ -12098,8 +12098,6 @@
|
||||
"-framework",
|
||||
"\"QYSDK_NIM\"",
|
||||
"-framework",
|
||||
"\"Qiniu\"",
|
||||
"-framework",
|
||||
"\"QuartzCore\"",
|
||||
"-framework",
|
||||
"\"ReactiveObjC\"",
|
||||
@@ -12150,12 +12148,8 @@
|
||||
"-framework",
|
||||
"\"VideoToolbox\"",
|
||||
"-framework",
|
||||
"\"WYEAccountApiSDK\"",
|
||||
"-framework",
|
||||
"\"WYOAuth\"",
|
||||
"-framework",
|
||||
"\"WYTYRZUISDK\"",
|
||||
"-framework",
|
||||
"\"WebKit\"",
|
||||
"-framework",
|
||||
"\"WechatConnector\"",
|
||||
|
@@ -31,7 +31,7 @@
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
|
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.1 KiB |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_send@2x.png",
|
||||
"filename" : "mew_room_receive_high_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_send@3x.png",
|
||||
"filename" : "mew_room_receive_high_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 49 KiB |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_close@2x.png",
|
||||
"filename" : "mew_room_receive_low_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_close@3x.png",
|
||||
"filename" : "mew_room_receive_low_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 19 KiB |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_low_bg@2x.png",
|
||||
"filename" : "mew_room_receive_middle_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_low_bg@3x.png",
|
||||
"filename" : "mew_room_receive_middle_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 37 KiB |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_high_bg@2x.png",
|
||||
"filename" : "mew_room_receive_room_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_high_bg@3x.png",
|
||||
"filename" : "mew_room_receive_room_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 431 B |
After Width: | Height: | Size: 599 B |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_avatar_board@2x.png",
|
||||
"filename" : "mew_room_receive_window_no_select@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_avatar_board@3x.png",
|
||||
"filename" : "mew_room_receive_window_no_select@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 295 B |
After Width: | Height: | Size: 444 B |
@@ -5,12 +5,12 @@
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_middle_bg@2x.png",
|
||||
"filename" : "mew_room_receive_window_select@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_middle_bg@3x.png",
|
||||
"filename" : "mew_room_receive_window_select@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
After Width: | Height: | Size: 409 B |
After Width: | Height: | Size: 590 B |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 65 KiB |
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_higher_nick_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_higher_nick_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 53 KiB |
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_normal_nick_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_gift_broadcast_normal_nick_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 674 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.9 KiB |
@@ -85,6 +85,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
position:(NSString *)position
|
||||
ticket:(NSString *)ticket
|
||||
uid:(NSString *)uid;
|
||||
///得到腾讯存储信息
|
||||
+ (void)getQCloudInfo:(HttpRequestHelperCompletion)completion;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -115,4 +115,8 @@
|
||||
+ (void)microLockCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid {
|
||||
[self makeRequest:@"room/mic/lockpos" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil];
|
||||
}
|
||||
///得到腾讯存储信息
|
||||
+ (void)getQCloudInfo:(HttpRequestHelperCompletion)completion{
|
||||
[self makeRequest:@"tencent/cos/getToken" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil];
|
||||
}
|
||||
@end
|
||||
|
@@ -145,6 +145,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property(nonatomic,strong) NSArray<UserGameInfoVo *> *userGamePartner;
|
||||
///pk时不能禁麦
|
||||
@property(nonatomic,assign) BOOL isNoProhibitMic;
|
||||
///控制是否有补填弹窗入口
|
||||
@property(nonatomic,assign) BOOL canRefillInviteCode;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (NSDate *)dateByAddingDays:(NSInteger)days;
|
||||
|
||||
- (NSString *)stringForFormat:(NSString *)format;
|
||||
+(NSString *)getNowTimeTimestamp;
|
||||
@end
|
||||
|
||||
@interface NSCalendar (Pick)
|
||||
|
@@ -7,6 +7,7 @@
|
||||
|
||||
#import "NSDate+DateUtils.h"
|
||||
|
||||
|
||||
NSString * const kDateFormatYYYYMMDD = @"yyyy-MM-dd";
|
||||
NSString * const kDateFormatYYMMDDTHHmmss = @"yyyy-MM-dd'T'HH:mm:ss";
|
||||
|
||||
@@ -43,7 +44,16 @@ NSString * const kDateFormatYYMMDDTHHmmss = @"yyyy-MM-dd'T'HH:mm:ss";
|
||||
- (NSString *) stringForYearMonthDayDashed {
|
||||
return [self stringForFormat:kDateFormatYYYYMMDD];
|
||||
}
|
||||
+(NSString *)getNowTimeTimestamp{
|
||||
|
||||
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
|
||||
|
||||
NSTimeInterval a=[dat timeIntervalSince1970];
|
||||
|
||||
NSString*timeString = [NSString stringWithFormat:@"%0.f", a];//转为字符型
|
||||
|
||||
return timeString;
|
||||
}
|
||||
- (NSString *)stringForFormat:(NSString *)format {
|
||||
if (!format) {
|
||||
return nil;
|
||||
|
@@ -1,8 +1,8 @@
|
||||
//
|
||||
// UploadFile.h
|
||||
// xplan-ios
|
||||
// YUMI
|
||||
//
|
||||
// Created by GreenLand on 2022/2/23.
|
||||
// Created by YUMI on 2022/2/23.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@@ -10,19 +10,40 @@
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface UploadFile : NSObject
|
||||
+ (instancetype)share;
|
||||
-(void)initQCloud;
|
||||
|
||||
+ (void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl mainFileName:(NSString *)mainFileName completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion;
|
||||
/// 上传一个文件
|
||||
/// @param filePath 文件地址
|
||||
/// @param fileName 文件的名字
|
||||
/// @param token token
|
||||
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadFile:(NSString *)filePath
|
||||
- (void)QCloudUploadFile:(NSString *)filePath
|
||||
named:(NSString *)fileName
|
||||
token:(NSString *)token
|
||||
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
+ (void)mew_downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl mainFileName:(NSString *)mainFileName completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion;
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
/// 上传一个Image
|
||||
/// @param image 图片
|
||||
/// @param imageName 图片的名字
|
||||
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
- (void)QCloudUploadImage:(NSData *)data
|
||||
named:(NSString *)name
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
/// 上传一个文件
|
||||
/// @param data 文件
|
||||
/// @param fileName 文件的名字
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
- (void)QCloudUploadFileWithData:(NSData *)data
|
||||
named:(NSString *)fileName
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -4,36 +4,267 @@
|
||||
//
|
||||
// Created by GreenLand on 2022/2/23.
|
||||
//
|
||||
|
||||
#import <QCloudCOSXML/QCloudCOSXML.h>
|
||||
#import "UploadFile.h"
|
||||
#import <Qiniu/QiniuSDK.h>
|
||||
#import <AFNetworking.h>
|
||||
#import "Api+Mine.h"
|
||||
#import "YinUploadFileModel.h"
|
||||
static UploadFile* manager;
|
||||
|
||||
@interface UploadFile()<QCloudSignatureProvider,QCloudCredentailFenceQueueDelegate>
|
||||
// 一个脚手架实例
|
||||
@property (nonatomic) QCloudCredentailFenceQueue* credentialFenceQueue;
|
||||
@property(nonatomic,strong) YinUploadFileModel *fileModel;
|
||||
@end
|
||||
|
||||
@implementation UploadFile
|
||||
|
||||
+ (instancetype)share {
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
manager = [[UploadFile alloc] init];
|
||||
});
|
||||
return manager;
|
||||
}
|
||||
|
||||
-(void)initQCloud{
|
||||
[Api getQCloudInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200){
|
||||
YinUploadFileModel *fileModel = [YinUploadFileModel modelWithDictionary:data.data];
|
||||
self.fileModel = fileModel;
|
||||
QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new];
|
||||
configuration.appID = fileModel.appId;
|
||||
QCloudCOSXMLEndPoint* endpoint = [[QCloudCOSXMLEndPoint alloc] init];
|
||||
endpoint.regionName = fileModel.region;
|
||||
// 使用 HTTPS
|
||||
endpoint.useHTTPS = YES;
|
||||
configuration.endpoint = endpoint;
|
||||
// 密钥提供者为自己
|
||||
configuration.signatureProvider = self;
|
||||
// 初始化 COS 服务示例
|
||||
[QCloudCOSXMLService registerDefaultCOSXMLWithConfiguration:configuration];
|
||||
[QCloudCOSTransferMangerService registerDefaultCOSTransferMangerWithConfiguration:
|
||||
configuration];
|
||||
|
||||
self.credentialFenceQueue = [QCloudCredentailFenceQueue new];
|
||||
self.credentialFenceQueue.delegate = self;
|
||||
|
||||
}
|
||||
}];
|
||||
}
|
||||
#pragma mark- QCloudSignatureProvider
|
||||
- (void) signatureWithFields:(QCloudSignatureFields*)fileds
|
||||
request:(QCloudBizHTTPRequest*)request
|
||||
urlRequest:(NSMutableURLRequest*)urlRequst
|
||||
compelete:(QCloudHTTPAuthentationContinueBlock)continueBlock
|
||||
{
|
||||
|
||||
[Api getQCloudInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200){
|
||||
YinUploadFileModel *fileModel = [YinUploadFileModel modelWithDictionary:data.data];
|
||||
QCloudCredential* credential = [QCloudCredential new];
|
||||
|
||||
|
||||
// 临时密钥 SecretId
|
||||
|
||||
credential.secretID = fileModel.secretId;
|
||||
// 临时密钥 SecretKey
|
||||
|
||||
credential.secretKey = fileModel.secretKey;
|
||||
// 临时密钥 Token
|
||||
|
||||
credential.token = fileModel.sessionToken;
|
||||
/** 强烈建议返回服务器时间作为签名的开始时间, 用来避免由于用户手机本地时间偏差过大导致的签名不正确(参数startTime和expiredTime单位为秒)
|
||||
*/
|
||||
credential.startDate = [NSDate dateWithTimeIntervalSince1970:fileModel.startTime]; // 单位是秒
|
||||
credential.expirationDate = [NSDate dateWithTimeIntervalSince1970:fileModel.expireTime];// 单位是秒
|
||||
|
||||
|
||||
QCloudAuthentationV5Creator* creator = [[QCloudAuthentationV5Creator alloc]
|
||||
initWithCredential:credential];
|
||||
// 注意 这里不要对urlRequst 进行copy以及mutableCopy操作
|
||||
QCloudSignature *signature = [creator signatureForData:urlRequst];
|
||||
continueBlock(signature, nil);
|
||||
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - QCloudCredentailFenceQueueDelegate
|
||||
- (void) fenceQueue:(QCloudCredentailFenceQueue * )queue requestCreatorWithContinue:(QCloudCredentailFenceQueueContinue)continueBlock
|
||||
{
|
||||
//这里同步从◊后台服务器获取临时密钥,强烈建议将获取临时密钥的逻辑放在这里,最大程度上保证密钥的可用性
|
||||
//...
|
||||
|
||||
[Api getQCloudInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200){
|
||||
YinUploadFileModel *fileModel = [YinUploadFileModel modelWithDictionary:data.data];
|
||||
QCloudCredential* credential = [QCloudCredential new];
|
||||
// 临时密钥 SecretId
|
||||
credential.secretID = fileModel.secretId;
|
||||
// 临时密钥 SecretKey
|
||||
|
||||
credential.secretKey = fileModel.secretKey;
|
||||
// 临时密钥 Token
|
||||
|
||||
credential.token = fileModel.sessionToken;
|
||||
/** 强烈建议返回服务器时间作为签名的开始时间, 用来避免由于用户手机本地时间偏差过大导致的签名不正确(参数startTime和expiredTime单位为秒)
|
||||
*/
|
||||
credential.startDate = [NSDate dateWithTimeIntervalSince1970:fileModel.startTime]; // 单位是秒
|
||||
credential.expirationDate = [NSDate dateWithTimeIntervalSince1970:fileModel.expireTime];// 单位是秒
|
||||
QCloudAuthentationV5Creator* creator = [[QCloudAuthentationV5Creator alloc]
|
||||
initWithCredential:credential];
|
||||
continueBlock(creator, nil);
|
||||
}
|
||||
}];
|
||||
}
|
||||
/// 上传一个文件
|
||||
/// @param filePath 文件地址
|
||||
/// @param fileName 文件的名字
|
||||
/// @param token token
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadFile:(NSString *)filePath
|
||||
- (void)QCloudUploadFile:(NSString *)filePath
|
||||
named:(NSString *)fileName
|
||||
token:(NSString *)token
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure {
|
||||
QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
|
||||
builder.zone = [QNFixedZone zone2];
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure {
|
||||
|
||||
|
||||
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
|
||||
// 本地文件路径
|
||||
NSURL* url = [NSURL fileURLWithPath:filePath];
|
||||
// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
|
||||
put.bucket = self.fileModel.bucket;
|
||||
// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"
|
||||
put.object = fileName;
|
||||
//需要上传的对象内容。可以传入NSData*或者NSURL*类型的变量
|
||||
put.body = url;
|
||||
//监听上传进度
|
||||
[put setSendProcessBlock:^(int64_t bytesSent,
|
||||
int64_t totalBytesSent,
|
||||
int64_t totalBytesExpectedToSend) {
|
||||
// bytesSent 本次要发送的字节数(一个大文件可能要分多次发送)
|
||||
// totalBytesSent 已发送的字节数
|
||||
// totalBytesExpectedToSend 本次上传要发送的总字节数(即一个文件大小)
|
||||
}];
|
||||
QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
|
||||
[upManager putFile:filePath key:fileName token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
|
||||
if (resp) {
|
||||
success(key,resp);
|
||||
}else{
|
||||
failure(@(info.statusCode),info.error.localizedDescription);
|
||||
|
||||
//监听上传结果
|
||||
[put setFinishBlock:^(id outputObject, NSError *error) {
|
||||
//可以从 outputObject 中获取 response 中 etag 或者自定义头部等信息
|
||||
if (error) {
|
||||
failure(@(error.code),error.localizedDescription);
|
||||
return;
|
||||
}
|
||||
} option:nil];
|
||||
QCloudUploadObjectResult * result = (QCloudUploadObjectResult *)outputObject;
|
||||
NSArray *urlList = [result.location componentsSeparatedByString:@".com/"];
|
||||
if (urlList.count == 2){
|
||||
NSString *url = [NSString stringWithFormat:@"%@/%@",self.fileModel.customDomain,urlList[1]];
|
||||
success(url,nil);
|
||||
return;
|
||||
}
|
||||
success(result.location,nil);
|
||||
}];
|
||||
|
||||
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
|
||||
|
||||
}
|
||||
+ (void)mew_downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl mainFileName:(NSString *)mainFileName completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion{
|
||||
/// 上传一个文件
|
||||
/// @param data 文件
|
||||
/// @param fileName 文件的名字
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
- (void)QCloudUploadFileWithData:(NSData *)data
|
||||
named:(NSString *)fileName
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure {
|
||||
|
||||
|
||||
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
|
||||
\
|
||||
// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
|
||||
put.bucket = self.fileModel.bucket;
|
||||
// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"
|
||||
put.object = fileName;
|
||||
//需要上传的对象内容。可以传入NSData*或者NSURL*类型的变量
|
||||
put.body = data;
|
||||
//监听上传进度
|
||||
[put setSendProcessBlock:^(int64_t bytesSent,
|
||||
int64_t totalBytesSent,
|
||||
int64_t totalBytesExpectedToSend) {
|
||||
// bytesSent 本次要发送的字节数(一个大文件可能要分多次发送)
|
||||
// totalBytesSent 已发送的字节数
|
||||
// totalBytesExpectedToSend 本次上传要发送的总字节数(即一个文件大小)
|
||||
}];
|
||||
|
||||
//监听上传结果
|
||||
[put setFinishBlock:^(id outputObject, NSError *error) {
|
||||
//可以从 outputObject 中获取 response 中 etag 或者自定义头部等信息
|
||||
if (error) {
|
||||
failure(@(error.code),error.localizedDescription);
|
||||
return;
|
||||
}
|
||||
QCloudUploadObjectResult * result = (QCloudUploadObjectResult *)outputObject;
|
||||
NSArray *urlList = [result.location componentsSeparatedByString:@".com/"];
|
||||
if (urlList.count == 2){
|
||||
NSString *url = [NSString stringWithFormat:@"%@/%@",self.fileModel.customDomain,urlList[1]];
|
||||
success(url,nil);
|
||||
return;
|
||||
}
|
||||
success(result.location,nil);
|
||||
}];
|
||||
|
||||
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
|
||||
|
||||
}
|
||||
/// 上传一个Image
|
||||
/// @param image 图片
|
||||
/// @param imageName 图片的名字
|
||||
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
- (void)QCloudUploadImage:(NSData *)data
|
||||
named:(NSString *)name
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure{
|
||||
|
||||
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
|
||||
put.bucket = self.fileModel.bucket;
|
||||
// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"
|
||||
put.object = name;
|
||||
//需要上传的对象内容。可以传入NSData*或者NSURL*类型的变量
|
||||
put.body = data;
|
||||
//监听上传进度
|
||||
[put setSendProcessBlock:^(int64_t bytesSent,
|
||||
int64_t totalBytesSent,
|
||||
int64_t totalBytesExpectedToSend) {
|
||||
// bytesSent 本次要发送的字节数(一个大文件可能要分多次发送)
|
||||
// totalBytesSent 已发送的字节数
|
||||
// totalBytesExpectedToSend 本次上传要发送的总字节数(即一个文件大小)
|
||||
}];
|
||||
|
||||
//监听上传结果
|
||||
[put setFinishBlock:^(id outputObject, NSError *error) {
|
||||
|
||||
if (error) {
|
||||
failure(@(error.code),error.localizedDescription);
|
||||
return;
|
||||
}
|
||||
QCloudUploadObjectResult * result = (QCloudUploadObjectResult *)outputObject;
|
||||
NSArray *urlList = [result.location componentsSeparatedByString:@".com/"];
|
||||
if (urlList.count == 2){
|
||||
NSString *url = [NSString stringWithFormat:@"%@/%@",self.fileModel.customDomain,urlList[1]];
|
||||
success(url,nil);
|
||||
return;
|
||||
}
|
||||
success(result.location,nil);
|
||||
}];
|
||||
|
||||
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
|
||||
}
|
||||
|
||||
|
||||
+(void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl mainFileName:(NSString *)mainFileName completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion {
|
||||
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
|
||||
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]];
|
||||
NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
|
||||
|
24
xplan-ios/Base/Tool/File/YinUploadFileModel.h
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// YinUploadFileModel.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface YinUploadFileModel : NSObject
|
||||
@property(nonatomic,copy) NSString *secretId;
|
||||
@property(nonatomic,copy) NSString *secretKey;
|
||||
@property(nonatomic,copy) NSString *sessionToken;
|
||||
@property(nonatomic,copy) NSString *bucket;
|
||||
@property(nonatomic,copy) NSString *region;
|
||||
@property(nonatomic,copy) NSString *customDomain;
|
||||
@property(nonatomic,assign) long startTime;
|
||||
@property(nonatomic,assign) long expireTime;
|
||||
@property(nonatomic,copy) NSString *appId;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
12
xplan-ios/Base/Tool/File/YinUploadFileModel.m
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// YinUploadFileModel.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import "YinUploadFileModel.h"
|
||||
|
||||
@implementation YinUploadFileModel
|
||||
|
||||
@end
|
@@ -32,6 +32,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
+ (NSInteger) getDay:(long) time;
|
||||
+ (NSString *)calculateConstellationWithMonth:(long)time;
|
||||
+ (NSString *)calculateAge:(long)time;
|
||||
+(NSString *)createUUID;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
#import "NSString+Utils.h"
|
||||
#import <CommonCrypto/CommonDigest.h>
|
||||
|
||||
#import "NSDate+DateUtils.h"
|
||||
@implementation NSString (Utils)
|
||||
|
||||
///是否是正确的手机号
|
||||
@@ -246,5 +246,15 @@
|
||||
NSLog(@"用户年龄是%ld",userAge);
|
||||
return [NSString stringWithFormat:@"%ld", userAge];
|
||||
}
|
||||
+(NSString *)createUUID{
|
||||
|
||||
CFUUIDRef uuid;
|
||||
CFStringRef uuidText;
|
||||
uuid = CFUUIDCreate(NULL);
|
||||
uuidText = CFUUIDCreateString(NULL, uuid);
|
||||
NSString *time = [NSDate getNowTimeTimestamp];
|
||||
NSString *result = [NSString stringWithFormat:@"%@%@",uuidText,time];
|
||||
return [result MD5String];
|
||||
|
||||
}
|
||||
@end
|
||||
|
@@ -1,37 +0,0 @@
|
||||
//
|
||||
// UploadImage.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/24.
|
||||
// 上传图片类
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface UploadImage : NSObject
|
||||
/// 上传一个Image
|
||||
/// @param image 图片
|
||||
/// @param imageName 图片的名字
|
||||
/// @param token token
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadImage:(UIImage *)image
|
||||
named:(NSString *)imageName
|
||||
token:(NSString *)token
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
/// 上传一个gif图片
|
||||
/// @param data 图片
|
||||
/// @param imageName 图片的名字
|
||||
/// @param token token
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadGifImageData:(NSData *)data
|
||||
named:(NSString *)imageName
|
||||
token:(NSString *)token
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// UploadImage.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/9/24.
|
||||
//
|
||||
|
||||
#import "UploadImage.h"
|
||||
#import <Qiniu/QiniuSDK.h>
|
||||
|
||||
@implementation UploadImage
|
||||
|
||||
/// 上传一个Image
|
||||
/// @param image 图片
|
||||
/// @param imageName 图片的名字
|
||||
/// @param token token
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadImage:(UIImage *)image
|
||||
named:(NSString *)imageName
|
||||
token:(NSString *)token
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure{
|
||||
QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
|
||||
builder.zone = [QNFixedZone zone2];
|
||||
|
||||
}];
|
||||
QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
|
||||
NSData *data = UIImageJPEGRepresentation(image, 0.5);
|
||||
[upManager putData:data key:imageName token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
|
||||
if (resp) {
|
||||
success(key,resp);
|
||||
}else{
|
||||
failure(@(info.statusCode),info.error.localizedDescription);
|
||||
}
|
||||
} option:nil];
|
||||
}
|
||||
/// 上传一个gif图片
|
||||
/// @param data 图片
|
||||
/// @param imageName 图片的名字
|
||||
/// @param token token
|
||||
/// @param success 成功
|
||||
/// @param failure 失败
|
||||
+ (void)uploadGifImageData:(NSData *)data
|
||||
named:(NSString *)imageName
|
||||
token:(NSString *)token
|
||||
success:(void (^)(NSString *key, NSDictionary *resp))success
|
||||
failure:(void (^)(NSNumber *resCode, NSString *message))failure{
|
||||
QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
|
||||
builder.zone = [QNFixedZone zone2];
|
||||
|
||||
}];
|
||||
QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
|
||||
|
||||
[upManager putData:data key:imageName token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
|
||||
if (resp) {
|
||||
success(key,resp);
|
||||
}else{
|
||||
failure(@(info.statusCode),info.error.localizedDescription);
|
||||
}
|
||||
} option:nil];
|
||||
}
|
||||
@end
|
@@ -52,4 +52,5 @@ typedef NS_ENUM(NSUInteger, GradientType) {
|
||||
+ (BOOL)isGifWithImageData: (NSData *)data;
|
||||
+ (NSTimeInterval)durationForGifData:(NSData *)data;
|
||||
+(UIImage *)mew_setImageGaussBlur:(UIImage *)image value:(CGFloat )value;
|
||||
+ (NSString *)contentTypeWithImageData: (NSData *)data;
|
||||
@end
|
||||
|
@@ -43,7 +43,7 @@ NSString * const KeyWithType(KeyType type) {
|
||||
///正式环境
|
||||
@(YES):@{
|
||||
@(KeyType_PasswordEncode) : @"1ea53d260ecf11e7b56e00163e046a26",
|
||||
@(KeyType_NTESQuickLoginBusinessId) : @"200c83103d4a413591c7969dd8d4d6e2",
|
||||
@(KeyType_NTESQuickLoginBusinessId) : @"57ccd6209f12437496611aec8c315c46",
|
||||
@(KeyType_QQAppid) : @"102044928",
|
||||
@(KeyType_QQSecret) : @"715dd2601777347cd57af77c3e28402f",
|
||||
@(KeyType_WechatAppid) : @"wx4b772d5ebc964a38",
|
||||
@@ -66,7 +66,7 @@ NSString * const KeyWithType(KeyType type) {
|
||||
///测试环境
|
||||
@(NO):@{
|
||||
@(KeyType_PasswordEncode) : @"1ea53d260ecf11e7b56e00163e046a26",
|
||||
@(KeyType_NTESQuickLoginBusinessId) : @"200c83103d4a413591c7969dd8d4d6e2",
|
||||
@(KeyType_NTESQuickLoginBusinessId) : @"57ccd6209f12437496611aec8c315c46",
|
||||
@(KeyType_QQAppid) : @"102044928",
|
||||
@(KeyType_QQSecret) : @"715dd2601777347cd57af77c3e28402f",
|
||||
@(KeyType_WechatAppid) : @"wx4b772d5ebc964a38",
|
||||
|
@@ -422,7 +422,7 @@
|
||||
NSFileManager *fileMgr = [[NSFileManager alloc] init];
|
||||
[fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
}
|
||||
[UploadFile mew_downloadAudioWithFileName:fileName musicUrl:model.playUrl mainFileName:@"kMewMainHomeVoiceCard" completion:^(BOOL isSuccess, NSString *editAudioPath) {
|
||||
[UploadFile downloadAudioWithFileName:fileName musicUrl:model.playUrl mainFileName:@"kMewMainHomeVoiceCard" completion:^(BOOL isSuccess, NSString *editAudioPath) {
|
||||
if(isSuccess){
|
||||
[self mew_setplayAudioWithUrl:editAudioPath];
|
||||
|
||||
|
@@ -360,16 +360,20 @@ typedef NS_ENUM(NSUInteger, XYLoginType) {
|
||||
if (hadAgree.length > 0) {
|
||||
CMModel.privacyState = YES;
|
||||
}
|
||||
|
||||
|
||||
|
||||
CMModel.privacyColor = [ThemeColor secondTextColor];
|
||||
CMModel.appPrivacyText = [NSString stringWithFormat:@"同意《默认》,并授权%@获取本机号码。",AppName];
|
||||
CMModel.privacyFont = [UIFont systemFontOfSize:12];
|
||||
CMModel.protocolColor = [ThemeColor mainTextColor];
|
||||
CMModel.appPrivacyOriginBottomMargin = 30;
|
||||
|
||||
CMModel.backActionBlock = ^{ //点击了返回按钮
|
||||
@kWeakify(self);
|
||||
CMModel.backActionBlock = ^(int backType) {
|
||||
@kStrongify(self);
|
||||
[self hideHUD];
|
||||
};
|
||||
|
||||
|
||||
CMModel.checkActionBlock = ^(BOOL isChecked) {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
@@ -299,6 +299,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// @param completion 完成
|
||||
/// @param uid 用户id
|
||||
+(void)requestGamePartnerInfoList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid;
|
||||
/// 补填邀请码
|
||||
/// @param completion 完成
|
||||
/// @param inviteCode 邀请码
|
||||
+(void)requestInviteCode:(HttpRequestHelperCompletion)completion inviteCode:(NSString *)inviteCode;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -336,4 +336,10 @@
|
||||
+(void)requestGamePartnerInfoList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid{
|
||||
[self makeRequest:@"gamePartnerInfo/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid, nil];
|
||||
}
|
||||
/// 补填邀请码
|
||||
/// @param completion 完成
|
||||
/// @param inviteCode 邀请码
|
||||
+(void)requestInviteCode:(HttpRequestHelperCompletion)completion inviteCode:(NSString *)inviteCode{
|
||||
[self makeRequest:@"inviteCode/refillInviteCode" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,inviteCode, nil];
|
||||
}
|
||||
@end
|
||||
|
@@ -23,6 +23,7 @@ typedef NS_ENUM(NSInteger, XPMineSettingItemType){
|
||||
XPMineSettingItemType_Clear_Memory,///清楚缓存
|
||||
XPMineSettingItemType_About_Us,///关于我们
|
||||
XPMineSettingItemType_CheckUpdate,///检查更新
|
||||
XPMineSettingItemType_InvitationCode,///填写邀请码
|
||||
};
|
||||
|
||||
@interface XPMineSettingItemModel : NSObject
|
||||
|
@@ -17,12 +17,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 获取数据源
|
||||
/// @param userinfo 当前的用户信息
|
||||
- (void)getMineSettingDataSourceWith:(UserInfoModel *)userinfo;
|
||||
|
||||
- (void)getNewMineSettingDataSourceWith:(UserInfoModel *)userinfo;
|
||||
/// 退出当前账号
|
||||
- (void)logoutCurrentAccount;
|
||||
|
||||
///获取版本更新
|
||||
- (void)getVersionUpdate;
|
||||
/// 补填邀请码
|
||||
-(void)fillInviteCode:(NSString *)inviteCode;
|
||||
|
||||
@end
|
||||
|
||||
|
@@ -39,7 +39,89 @@
|
||||
- (id<XPMineSettingProtocol>)getView {
|
||||
return (id<XPMineSettingProtocol>) [super getView];
|
||||
}
|
||||
/// 获取数据源
|
||||
/// @param userinfo 当前的用户信息
|
||||
- (void)getNewMineSettingDataSourceWith:(UserInfoModel *)userinfo {
|
||||
|
||||
XPMineSettingItemModel * phoneItem = [[XPMineSettingItemModel alloc] init];
|
||||
phoneItem.title = @"手机号码";
|
||||
phoneItem.subTitle = userinfo.isBindPhone ? userinfo.phone : @"设置";
|
||||
phoneItem.type = XPMineSettingItemType_Phone;
|
||||
self.phoneItem = phoneItem;
|
||||
|
||||
XPMineSettingItemModel * loginItem = [[XPMineSettingItemModel alloc] init];
|
||||
loginItem.title = userinfo.isBindPasswd ? @"重置密码" : @"设置密码";
|
||||
loginItem.subTitle = @"设置";
|
||||
loginItem.type = XPMineSettingItemType_Login_Password;
|
||||
self.loginItem = loginItem;
|
||||
|
||||
XPMineSettingItemModel * blackListItem = [[XPMineSettingItemModel alloc] init];
|
||||
blackListItem.title = @"黑名单管理";
|
||||
blackListItem.subTitle = @"";
|
||||
blackListItem.type = XPMineSettingItemType_Black_Manager;
|
||||
|
||||
|
||||
|
||||
XPMineSettingItemModel * invitationCodeItem = [[XPMineSettingItemModel alloc] init];
|
||||
invitationCodeItem.title = @"填写邀请码";
|
||||
invitationCodeItem.subTitle = @"";
|
||||
invitationCodeItem.type = XPMineSettingItemType_InvitationCode;
|
||||
|
||||
|
||||
XPMineSettingItemModel * payItem = [[XPMineSettingItemModel alloc] init];
|
||||
payItem.title = @"支付密码";
|
||||
payItem.subTitle = userinfo.isBindPaymentPwd ? @"修改" : @"设置";
|
||||
payItem.type = XPMineSettingItemType_Pay_Password;
|
||||
self.payItem = payItem;
|
||||
|
||||
XPMineSettingItemModel * notificaItem = [[XPMineSettingItemModel alloc] init];
|
||||
notificaItem.title = @"通知提醒设置";
|
||||
notificaItem.subTitle = @"设置";
|
||||
notificaItem.type = XPMineSettingItemType_Notification_Remind;
|
||||
|
||||
XPMineSettingItemModel * privacyItem = [[XPMineSettingItemModel alloc] init];
|
||||
privacyItem.title = @"个人信息与权限";
|
||||
privacyItem.subTitle = @"";
|
||||
privacyItem.type = XPMineSettingItemType_Permission;
|
||||
|
||||
XPMineSettingItemModel * helperItem = [[XPMineSettingItemModel alloc] init];
|
||||
helperItem.title = @"帮助";
|
||||
helperItem.subTitle = @"";
|
||||
helperItem.type = XPMineSettingItemType_Helper;
|
||||
|
||||
XPMineSettingItemModel * feedbackItem = [[XPMineSettingItemModel alloc] init];
|
||||
feedbackItem.title = @"我要反馈";
|
||||
feedbackItem.subTitle = @"";
|
||||
feedbackItem.type = XPMineSettingItemType_Feedback;
|
||||
|
||||
XPMineSettingItemModel * clearMemoryItem = [[XPMineSettingItemModel alloc] init];
|
||||
clearMemoryItem.title = @"清除缓存";
|
||||
clearMemoryItem.subTitle = @"";
|
||||
clearMemoryItem.type = XPMineSettingItemType_Clear_Memory;
|
||||
|
||||
XPMineSettingItemModel *updateItem = [[XPMineSettingItemModel alloc] init];
|
||||
updateItem.title = @"检查更新";
|
||||
updateItem.subTitle = @"";
|
||||
updateItem.type = XPMineSettingItemType_CheckUpdate;
|
||||
|
||||
XPMineSettingItemModel * aboutusItem = [[XPMineSettingItemModel alloc] init];
|
||||
aboutusItem.title = [NSString stringWithFormat:@"关于%@", AppName];
|
||||
aboutusItem.subTitle = @"";
|
||||
aboutusItem.type = XPMineSettingItemType_About_Us;
|
||||
|
||||
NSArray * oneSection = @[phoneItem];
|
||||
NSArray * twoSection = @[loginItem,payItem, notificaItem, blackListItem];
|
||||
if (userinfo.canRefillInviteCode == YES){
|
||||
twoSection = @[loginItem,payItem, notificaItem, blackListItem,invitationCodeItem];
|
||||
}
|
||||
NSArray * threeSection = @[privacyItem];
|
||||
NSArray * fourthSection = @[helperItem, clearMemoryItem, updateItem, aboutusItem];
|
||||
|
||||
self.datasouce = @[oneSection, twoSection, threeSection, fourthSection];
|
||||
|
||||
|
||||
[[self getView] getMineSettingDatasourceSuccess:self.datasouce];
|
||||
}
|
||||
|
||||
/// 获取数据源
|
||||
/// @param userinfo 当前的用户信息
|
||||
@@ -64,6 +146,14 @@
|
||||
blackListItem.title = @"黑名单管理";
|
||||
blackListItem.subTitle = @"";
|
||||
blackListItem.type = XPMineSettingItemType_Black_Manager;
|
||||
|
||||
|
||||
|
||||
XPMineSettingItemModel * invitationCodeItem = [[XPMineSettingItemModel alloc] init];
|
||||
invitationCodeItem.title = @"填写邀请码";
|
||||
invitationCodeItem.subTitle = @"";
|
||||
invitationCodeItem.type = XPMineSettingItemType_InvitationCode;
|
||||
|
||||
|
||||
XPMineSettingItemModel * payItem = [[XPMineSettingItemModel alloc] init];
|
||||
payItem.title = @"支付密码";
|
||||
@@ -108,6 +198,9 @@
|
||||
|
||||
NSArray * oneSection = @[phoneItem];
|
||||
NSArray * twoSection = @[loginItem,payItem, notificaItem, blackListItem];
|
||||
if (userinfo.canRefillInviteCode == YES){
|
||||
twoSection = @[loginItem,payItem, notificaItem, blackListItem,invitationCodeItem];
|
||||
}
|
||||
NSArray * threeSection = @[privacyItem];
|
||||
NSArray * fourthSection = @[helperItem, clearMemoryItem, updateItem, aboutusItem];
|
||||
|
||||
@@ -163,4 +256,12 @@
|
||||
} errorToast:NO] appVersion:appVersion os:os channel:channel];
|
||||
}
|
||||
|
||||
/// 补填邀请码
|
||||
-(void)fillInviteCode:(NSString *)inviteCode{
|
||||
[Api requestInviteCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
[[self getView]fillInviteCodeSuccess];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView]fillInviteCodeFail:code];
|
||||
} showLoading:YES errorToast:YES] inviteCode:inviteCode];
|
||||
}
|
||||
@end
|
||||
|
@@ -11,7 +11,7 @@
|
||||
#import "NSMutableDictionary+Saft.h"
|
||||
///Tool
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "UploadImage.h"
|
||||
#import "UploadFile.h"
|
||||
|
||||
///Model
|
||||
#import "XPMineUserInfoEditModel.h"
|
||||
@@ -112,16 +112,14 @@
|
||||
/// 上传头像
|
||||
/// @param avatar 头像
|
||||
- (void)uploadAvatar:(UIImage *)avatar {
|
||||
[Api qiniuUpLoadImage:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadImage:avatar named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
NSString *url = resp[@"path"];
|
||||
[[self getView] uploadImageSuccess:url];
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
[[self getView] showErrorToast:@"上传失败"];
|
||||
}];
|
||||
}]];
|
||||
NSData *data = UIImageJPEGRepresentation(avatar, 0.5);
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
[[self getView] uploadImageSuccess:key];
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
@@ -12,7 +12,7 @@
|
||||
#import "UserInfoModel.h"
|
||||
///Tool
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "UploadImage.h"
|
||||
#import "UploadFile.h"
|
||||
///P
|
||||
#import "XPMineUserInfoAlbumProtocol.h"
|
||||
|
||||
@@ -40,16 +40,14 @@
|
||||
/// 相册
|
||||
/// @param albumImage 相册的image
|
||||
- (void)uploadAlbumImage:(UIImage *)albumImage {
|
||||
[Api qiniuUpLoadImage:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadImage:albumImage named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
NSString *url = resp[@"path"];
|
||||
[[self getView] uploadAlbumImageToThirdSuccess:url];
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
[[self getView] showErrorToast:@"上传失败"];
|
||||
}];
|
||||
} showLoading:YES]];
|
||||
NSData *data = UIImageJPEGRepresentation(albumImage, 0.5);
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
[[self getView] uploadAlbumImageToThirdSuccess:key];
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
[[self getView] showErrorToast:@"上传失败"];
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
@@ -23,7 +23,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (void)getVersionUpdateFail;
|
||||
///版本更新
|
||||
-(void)getVersionUpdate:(XPVersionUpdateModel *)model;
|
||||
|
||||
|
||||
///补填邀请码成功
|
||||
-(void)fillInviteCodeSuccess;
|
||||
///补填邀请码失败
|
||||
-(void)fillInviteCodeFail:(NSInteger)code;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -26,6 +26,9 @@
|
||||
#import "TTAlertConfig.h"
|
||||
#import "TTPopup.h"
|
||||
#import "XPUpgradeView.h"
|
||||
#import "YinMineSettingFillCodeView.h"
|
||||
#import "YinMineSettingPopUpView.h"
|
||||
|
||||
///P
|
||||
#import "XPMineSettingPresent.h"
|
||||
#import "XPMineSettingProtocol.h"
|
||||
@@ -44,7 +47,7 @@
|
||||
#import "XPLoginBindPhoneResultViewController.h"
|
||||
|
||||
|
||||
@interface XPMineSettingViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineSettingProtocol>
|
||||
@interface XPMineSettingViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineSettingProtocol,YinMineSettingFillCodeViewDelegate,YinMineSettingPopUpViewDelegate>
|
||||
///
|
||||
@property (nonatomic,strong) UITableView *tableView;
|
||||
///数据源
|
||||
@@ -205,6 +208,14 @@
|
||||
[self.presenter getVersionUpdate];
|
||||
}
|
||||
break;
|
||||
case XPMineSettingItemType_InvitationCode:
|
||||
{
|
||||
YinMineSettingFillCodeView *codeView = [[YinMineSettingFillCodeView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
|
||||
codeView.delegate = self;
|
||||
[TTPopup popupView:codeView style:TTPopupStyleAlert];
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -283,7 +294,18 @@
|
||||
self.userInfo = userInfo;
|
||||
[self.presenter getMineSettingDataSourceWith:userInfo];
|
||||
}
|
||||
|
||||
///补填邀请码成功
|
||||
-(void)fillInviteCodeSuccess{
|
||||
self.userInfo.canRefillInviteCode = NO;
|
||||
[self.presenter getNewMineSettingDataSourceWith:self.userInfo];
|
||||
}
|
||||
///补填邀请码失败
|
||||
-(void)fillInviteCodeFail:(NSInteger)code{
|
||||
if (code == 211185 || code == 211186){
|
||||
self.userInfo.canRefillInviteCode = NO;
|
||||
[self.presenter getNewMineSettingDataSourceWith:self.userInfo];
|
||||
}
|
||||
}
|
||||
- (void)logoutCurrentAccountSuccess {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
}
|
||||
@@ -312,7 +334,17 @@
|
||||
service.shouldDismissOnBackgroundTouch = NO;
|
||||
[TTPopup popupWithConfig:service];
|
||||
}
|
||||
|
||||
#pragma mark - YinMineSettingFillCodeViewDelegate
|
||||
- (void)showFillInviteCodeView:(NSString *)code{
|
||||
YinMineSettingPopUpView *popUpView = [[YinMineSettingPopUpView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
|
||||
popUpView.code = code;
|
||||
popUpView.delegate = self;
|
||||
[TTPopup popupView:popUpView style:TTPopupStyleAlert];
|
||||
}
|
||||
#pragma mark - YinMineSettingPopUpViewDelegate
|
||||
-(void)confirmFillInviteCode:(NSString *)code{
|
||||
[self.presenter fillInviteCode:code];
|
||||
}
|
||||
#pragma mark - Event Response
|
||||
- (void)logoutButtonAction:(UIButton *)sender {
|
||||
[self.presenter logoutCurrentAccount];
|
||||
|
@@ -76,18 +76,15 @@
|
||||
/// 上传声音文件
|
||||
/// @param filePath 文件路径
|
||||
- (void)uploadVoice:(NSString *)filePath {
|
||||
[Api qiniuUpLoadImage:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadFile uploadFile:filePath named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
NSString *url = resp[@"path"];
|
||||
[[self getView] uploadVoiceFileToThirdSuccess:url];
|
||||
|
||||
|
||||
NSString *name = [NSString stringWithFormat:@"file/%@",[NSString createUUID]];
|
||||
[[UploadFile share]QCloudUploadFile:filePath named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
[[self getView] uploadVoiceFileToThirdSuccess:key];
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
[[self getView] uploadVoiceFileFail:message];
|
||||
}];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[[self getView] uploadVoiceFileFail:msg];
|
||||
}]];
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -152,7 +152,7 @@
|
||||
[self.idStackView addArrangedSubview:self.copysIdImageView];
|
||||
|
||||
///用户信息中的标签
|
||||
[self.tagStackView addArrangedSubview:self.clanBtn];
|
||||
|
||||
[self.tagStackView addArrangedSubview:self.newUserImageView];
|
||||
[self.tagStackView addArrangedSubview:self.officalImageView];
|
||||
[self.tagStackView addArrangedSubview:self.experImageView];
|
||||
@@ -286,11 +286,11 @@
|
||||
make.height.mas_equalTo(22);
|
||||
}];
|
||||
|
||||
[self.clanBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(22);
|
||||
|
||||
}];
|
||||
|
||||
// [self.clanBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
// make.height.mas_equalTo(22);
|
||||
//
|
||||
// }];
|
||||
//
|
||||
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(36);
|
||||
make.height.mas_equalTo(18);
|
||||
|
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// YinMineSettingFillCodeView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol YinMineSettingFillCodeViewDelegate <NSObject>
|
||||
|
||||
-(void)showFillInviteCodeView:(NSString *)code;
|
||||
|
||||
@end
|
||||
|
||||
@interface YinMineSettingFillCodeView : UIView
|
||||
@property(nonatomic,weak) id<YinMineSettingFillCodeViewDelegate>delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,161 @@
|
||||
//
|
||||
// YinMineSettingFillCodeView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import "YinMineSettingFillCodeView.h"
|
||||
|
||||
@interface YinMineSettingFillCodeView()<UITextFieldDelegate>
|
||||
@property(nonatomic,strong) UIButton *backView;
|
||||
@property(nonatomic,strong) UIView *bgView;
|
||||
@property(nonatomic,strong) UILabel *titleView;
|
||||
@property(nonatomic,strong) UITextField *textField;
|
||||
@property(nonatomic,strong) UILabel *explainView;
|
||||
@property(nonatomic,strong) UIButton *confirmBtn;
|
||||
@end
|
||||
@implementation YinMineSettingFillCodeView
|
||||
-(instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self installUI];
|
||||
[self installConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)installUI{
|
||||
self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4];
|
||||
[self addSubview:self.backView];
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView addSubview:self.titleView];
|
||||
[self.bgView addSubview:self.textField];
|
||||
[self.bgView addSubview:self.explainView];
|
||||
[self.bgView addSubview:self.confirmBtn];
|
||||
|
||||
|
||||
}
|
||||
-(void)installConstraints{
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self);
|
||||
}];
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(307));
|
||||
make.height.mas_equalTo(kGetScaleWidth(274));
|
||||
make.center.equalTo(self);
|
||||
}];
|
||||
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(28));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
}];
|
||||
[self.textField mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
|
||||
make.top.mas_equalTo(kGetScaleWidth(74));
|
||||
make.width.mas_equalTo(kGetScaleWidth(255));
|
||||
make.height.mas_equalTo(kGetScaleWidth(48));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
}];
|
||||
[self.explainView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(kGetScaleWidth(26));
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(26));
|
||||
make.top.mas_equalTo(kGetScaleWidth(134));
|
||||
make.height.mas_equalTo(kGetScaleWidth(60));
|
||||
}];
|
||||
[self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(210));
|
||||
make.width.mas_equalTo(kGetScaleWidth(244));
|
||||
make.height.mas_equalTo(kGetScaleWidth(40));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
}];
|
||||
}
|
||||
-(void)backAction{
|
||||
[TTPopup dismiss];
|
||||
}
|
||||
-(void)textDidChange:(UITextField *)textField{
|
||||
if (textField.text.length > 10){
|
||||
textField.text = [textField.text substringToIndex:10];
|
||||
}
|
||||
}
|
||||
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
|
||||
if (string.length == 0){
|
||||
return YES;
|
||||
}
|
||||
NSString *regex =@"^[a-zA-Z0-9]+$";
|
||||
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
|
||||
if ([pred evaluateWithObject:string]) {
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
-(void)confirmBtnAction{
|
||||
if (self.textField.text.length <= 0){
|
||||
[XCHUDTool showErrorWithMessage:@"请填写邀请码"];
|
||||
return;
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(showFillInviteCodeView:)]){
|
||||
[self.delegate showFillInviteCodeView:self.textField.text];
|
||||
}
|
||||
[TTPopup dismiss];
|
||||
|
||||
}
|
||||
#pragma mark - 懒加载
|
||||
- (UIButton *)backView{
|
||||
if(!_backView){
|
||||
_backView = [UIButton new];
|
||||
[_backView addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _backView;
|
||||
}
|
||||
- (UIView *)bgView{
|
||||
if(!_bgView){
|
||||
_bgView = [UIView new];
|
||||
_bgView.backgroundColor = [UIColor whiteColor];
|
||||
[_bgView setCornerWithLeftTopCorner:kGetScaleWidth(20) rightTopCorner:kGetScaleWidth(20) bottomLeftCorner:kGetScaleWidth(20) bottomRightCorner:kGetScaleWidth(20) size:CGSizeMake(kGetScaleWidth(307), kGetScaleWidth(274))];
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
- (UILabel *)titleView{
|
||||
if(!_titleView){
|
||||
_titleView = [UILabel labelInitWithText:@"填写邀请码" font:kFontSemibold(16) textColor:UIColorFromRGB(0x2B2D33)];
|
||||
}
|
||||
return _titleView;
|
||||
}
|
||||
- (UITextField *)textField{
|
||||
if(!_textField){
|
||||
_textField = [UITextField new];
|
||||
NSAttributedString *att = [[NSAttributedString alloc]initWithString:@"请输入要填写的邀请码" attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x878B9C)}];
|
||||
_textField.attributedPlaceholder = att;
|
||||
_textField.textAlignment = NSTextAlignmentCenter;
|
||||
_textField.backgroundColor = UIColorFromRGB(0xF3F5FA);
|
||||
[_textField setCornerWithLeftTopCorner:kGetScaleWidth(8) rightTopCorner:kGetScaleWidth(8) bottomLeftCorner:kGetScaleWidth(8) bottomRightCorner:kGetScaleWidth(8) size:CGSizeMake(kGetScaleWidth(255), kGetScaleWidth(48))];
|
||||
[_textField addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
|
||||
_textField.delegate = self;
|
||||
}
|
||||
return _textField;
|
||||
}
|
||||
- (UILabel *)explainView{
|
||||
if(!_explainView){
|
||||
_explainView = [UILabel new];
|
||||
_explainView.numberOfLines = 0;
|
||||
NSMutableParagraphStyle *style = [NSMutableParagraphStyle new];
|
||||
style.lineSpacing = 3;
|
||||
NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithString:@"填写说明:\n请填写邀请人的邀请码;\n邀请码只能填写一次,请勿随意填写;" attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0xB3B3C3),NSParagraphStyleAttributeName:style}];
|
||||
[att addAttributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x2B2D33)} range:[att.string rangeOfString:@"填写说明:"]];
|
||||
_explainView.attributedText = att;
|
||||
}
|
||||
return _explainView;
|
||||
}
|
||||
- (UIButton *)confirmBtn{
|
||||
if(!_confirmBtn){
|
||||
_confirmBtn = [UIButton new];
|
||||
_confirmBtn.backgroundColor = UIColorFromRGB(0xFFDA24);
|
||||
_confirmBtn.layer.cornerRadius = kGetScaleWidth(40)/2;
|
||||
_confirmBtn.layer.masksToBounds = true;
|
||||
[_confirmBtn setTitle:@"确认" forState:UIControlStateNormal];
|
||||
[_confirmBtn setTitleColor:UIColorFromRGB(0x2B2D33) forState:UIControlStateNormal];
|
||||
_confirmBtn.titleLabel.font = kFontMedium(14);
|
||||
[_confirmBtn addTarget:self action:@selector(confirmBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _confirmBtn;
|
||||
}
|
||||
@end
|
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// YinMineSettingPopUpView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol YinMineSettingPopUpViewDelegate <NSObject>
|
||||
|
||||
-(void)confirmFillInviteCode:(NSString *)code;
|
||||
|
||||
@end
|
||||
@interface YinMineSettingPopUpView : UIView
|
||||
@property(nonatomic,copy) NSString *code;
|
||||
@property(nonatomic,weak) id<YinMineSettingPopUpViewDelegate>delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,115 @@
|
||||
//
|
||||
// YinMineSettingPopUpView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/3/26.
|
||||
//
|
||||
|
||||
#import "YinMineSettingPopUpView.h"
|
||||
@interface YinMineSettingPopUpView()
|
||||
@property(nonatomic,strong) UIView *bgView;
|
||||
@property(nonatomic,strong) UILabel *contextView;
|
||||
@property(nonatomic,strong) UIButton *cancelBtn;
|
||||
@property(nonatomic,strong) UIButton *confirmBtn;
|
||||
@end
|
||||
@implementation YinMineSettingPopUpView
|
||||
|
||||
-(instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self installUI];
|
||||
[self installConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)installUI{
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView addSubview:self.contextView];
|
||||
[self.bgView addSubview:self.cancelBtn];
|
||||
[self.bgView addSubview:self.confirmBtn];
|
||||
}
|
||||
-(void)installConstraints{
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(307));
|
||||
make.height.mas_equalTo(kGetScaleWidth(176));
|
||||
make.center.equalTo(self);
|
||||
}];
|
||||
[self.contextView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(32));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
}];
|
||||
[self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(112));
|
||||
make.leading.mas_equalTo(kGetScaleWidth(22));
|
||||
make.width.mas_equalTo(kGetScaleWidth(124));
|
||||
make.height.mas_equalTo(kGetScaleWidth(40));
|
||||
}];
|
||||
[self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(112));
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(22));
|
||||
make.width.mas_equalTo(kGetScaleWidth(124));
|
||||
make.height.mas_equalTo(kGetScaleWidth(40));
|
||||
}];
|
||||
}
|
||||
- (void)setCode:(NSString *)code{
|
||||
_code = code;
|
||||
NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"确认填写 邀请码【%@】?\n\n注意邀请码只能填写1次",_code] attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0x2B2D33)}];
|
||||
[att addAttributes:@{NSFontAttributeName:kFontMedium(14),NSForegroundColorAttributeName:UIColorFromRGB(0x2B2D33)} range:[att.string rangeOfString:[NSString stringWithFormat:@"【%@】",_code]]];
|
||||
[att addAttributes:@{NSFontAttributeName:kFontSemibold(16),NSForegroundColorAttributeName:UIColorFromRGB(0xFFDA24)} range:[att.string rangeOfString:@"1次"]];
|
||||
_contextView.attributedText = att;
|
||||
}
|
||||
-(void)cancelBtnAction{
|
||||
[TTPopup dismiss];
|
||||
}
|
||||
-(void)confirmBtnAction{
|
||||
[TTPopup dismiss];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(confirmFillInviteCode:)]){
|
||||
[self.delegate confirmFillInviteCode:self.code];
|
||||
}
|
||||
}
|
||||
#pragma mark - 懒加载
|
||||
- (UIView *)bgView{
|
||||
if(!_bgView){
|
||||
_bgView = [UIView new];
|
||||
_bgView.backgroundColor = [UIColor whiteColor];
|
||||
[_bgView setCornerWithLeftTopCorner:kGetScaleWidth(20) rightTopCorner:kGetScaleWidth(20) bottomLeftCorner:kGetScaleWidth(20) bottomRightCorner:kGetScaleWidth(20) size:CGSizeMake(kGetScaleWidth(307), kGetScaleWidth(176))];
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
- (UILabel *)contextView{
|
||||
if(!_contextView){
|
||||
_contextView = [UILabel new];
|
||||
|
||||
_contextView.textAlignment = NSTextAlignmentCenter;
|
||||
|
||||
_contextView.numberOfLines = 3;
|
||||
}
|
||||
return _contextView;
|
||||
}
|
||||
- (UIButton *)cancelBtn{
|
||||
if(!_cancelBtn){
|
||||
_cancelBtn = [UIButton new];
|
||||
_cancelBtn.backgroundColor = UIColorRGBAlpha(0xFFDA24, 0.2);
|
||||
_cancelBtn.layer.cornerRadius = kGetScaleWidth(40)/2;
|
||||
_cancelBtn.layer.masksToBounds = true;
|
||||
[_cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
|
||||
[_cancelBtn setTitleColor:UIColorFromRGB(0x2B2D33) forState:UIControlStateNormal];
|
||||
_cancelBtn.titleLabel.font = kFontMedium(14);
|
||||
[_cancelBtn addTarget:self action:@selector(cancelBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _cancelBtn;
|
||||
}
|
||||
- (UIButton *)confirmBtn{
|
||||
if(!_confirmBtn){
|
||||
_confirmBtn = [UIButton new];
|
||||
_confirmBtn.backgroundColor = UIColorFromRGB(0xFFDA24);
|
||||
_confirmBtn.layer.cornerRadius = kGetScaleWidth(40)/2;
|
||||
_confirmBtn.layer.masksToBounds = true;
|
||||
[_confirmBtn setTitle:@"确认" forState:UIControlStateNormal];
|
||||
[_confirmBtn setTitleColor:UIColorFromRGB(0x2B2D33) forState:UIControlStateNormal];
|
||||
_confirmBtn.titleLabel.font = kFontMedium(14);
|
||||
[_confirmBtn addTarget:self action:@selector(confirmBtnAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _confirmBtn;
|
||||
}
|
||||
@end
|
@@ -10,6 +10,7 @@
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <IQKeyboardManager.h>
|
||||
#import <QYSDK_NIM/QYSDK.h>
|
||||
#import <NIMSDK/NIMSDK.h>
|
||||
///Tool
|
||||
#import "TTPopup.h"
|
||||
#import "XPMacro.h"
|
||||
@@ -66,6 +67,7 @@
|
||||
#import "XPMineCollectRoomListViewController.h"
|
||||
#import "XPNewUserRechargeViewController.h"
|
||||
#import "XPMineGameOrderVC.h"
|
||||
#import "SessionViewController.h"
|
||||
|
||||
@interface XPMineViewController ()<UITableViewDelegate, UITableViewDataSource, XPMineProtocol, XPMineHeadItemTableViewCellDelegate, XPMineHeadViewDelegate, XPMineMoreTableViewCellDelegate, XPHomeBannerTableViewCellDelegate>
|
||||
|
||||
@@ -662,15 +664,9 @@
|
||||
}
|
||||
break;
|
||||
case XPMineItemType_Customer_Center: {
|
||||
[QYSDK sharedSDK].customUIConfig.customerHeadImageUrl = self.userInfo.avatar;
|
||||
QYSource *source = [[QYSource alloc] init];
|
||||
source.title = @"音萌客服";
|
||||
source.urlString = @"https://gzhfwlkjyxgs.qiyukf.com/";
|
||||
[[IQKeyboardManager sharedManager].disabledDistanceHandlingClasses addObject:[QYSessionViewController class]];
|
||||
QYSessionViewController *sessionViewController = [[QYSDK sharedSDK] sessionViewController];
|
||||
sessionViewController.sessionTitle = @"音萌客服";
|
||||
sessionViewController.source = source;
|
||||
[self.navigationController pushViewController:sessionViewController animated:YES];
|
||||
NIMSession *session = [NIMSession session:@"200014" type:NIMSessionTypeP2P];
|
||||
SessionViewController *sessionVC = [[SessionViewController alloc] initWithSession:session];
|
||||
[self.navigationController pushViewController:sessionVC animated:YES];
|
||||
|
||||
}
|
||||
break;
|
||||
|
@@ -15,7 +15,7 @@
|
||||
#import "ThemeColor.h"
|
||||
#import "UIImage+Utils.h"
|
||||
#import "Api+Mine.h"
|
||||
#import "UploadImage.h"
|
||||
#import "UploadFile.h"
|
||||
#import "TTPopup.h"
|
||||
#import "NSArray+Safe.h"
|
||||
#import "NSMutableDictionary+Saft.h"
|
||||
@@ -170,53 +170,43 @@
|
||||
}
|
||||
|
||||
- (void)uploadAlbumPicList:(NSArray *)array finish:(void(^)(NSArray *list))finish {
|
||||
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
|
||||
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
|
||||
NSMutableArray * dataArray = [NSMutableArray array];
|
||||
dispatch_async(queue, ^{
|
||||
for (UIImage * image in array) {
|
||||
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
|
||||
[Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadImage:image named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
self.imageCount ++;
|
||||
NSMutableDictionary * dict= [NSMutableDictionary dictionary];
|
||||
MonentsPicResInfo * infor = [MonentsPicResInfo modelWithDictionary:resp];
|
||||
if (infor.path) {
|
||||
[dict safeSetObject:infor.path forKey:@"resUrl"];
|
||||
}
|
||||
if (infor.format) {
|
||||
[dict safeSetObject:infor.format forKey:@"format"];
|
||||
}
|
||||
|
||||
if (infor.w) {
|
||||
[dict safeSetObject:@(infor.w) forKey:@"width"];
|
||||
}
|
||||
|
||||
if (infor.h) {
|
||||
[dict safeSetObject:@(infor.h) forKey:@"height"];
|
||||
}
|
||||
[dataArray addObject:dict];
|
||||
if (self.imageCount == array.count) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(dataArray);
|
||||
});
|
||||
}
|
||||
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
self.imageCount ++;
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}];
|
||||
} else {
|
||||
self.imageCount ++;
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}
|
||||
}];
|
||||
}
|
||||
});
|
||||
|
||||
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
|
||||
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
|
||||
NSMutableArray * dataArray = [NSMutableArray array];
|
||||
dispatch_async(queue, ^{
|
||||
for (UIImage * image in array) {
|
||||
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
|
||||
NSData *data = UIImageJPEGRepresentation(image, 0.5);
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
self.imageCount ++;
|
||||
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
|
||||
if (image.size.width > 0){
|
||||
[dict safeSetObject:@(image.size.width) forKey:@"width"];
|
||||
}
|
||||
if (image.size.height){
|
||||
[dict safeSetObject:@(image.size.height) forKey:@"height"];
|
||||
}
|
||||
if (key.length > 0) {
|
||||
[dict safeSetObject:key forKey:@"resUrl"];
|
||||
}
|
||||
[dict safeSetObject:format forKey:@"format"];
|
||||
[dataArray addObject:dict];
|
||||
if (self.imageCount == array.count) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(dataArray);
|
||||
});
|
||||
}
|
||||
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
self.imageCount ++;
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
}];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#pragma mark - UITextViewDelegate
|
||||
|
@@ -35,7 +35,10 @@ typedef NS_ENUM(NSInteger, BackMusicPlayState) {
|
||||
- ❌ 业务逻辑不要侵入 RctImpl 。
|
||||
*/
|
||||
@interface RtcManager : NSObject
|
||||
|
||||
///因为跨房pk结束后会闭麦,用这个限制不要关麦
|
||||
@property(nonatomic,assign) BOOL isAnckorPk;
|
||||
///因为最小化进房闭麦问题,用这个限制不要关麦
|
||||
@property(nonatomic,assign) BOOL isMiniEnterk;
|
||||
/**
|
||||
* 是否静音(静别人)
|
||||
* YES:🔇虽然你们麦位上在说话,但是我就是不听。🙉
|
||||
|
@@ -11,7 +11,7 @@
|
||||
#import <JXCategoryView/JXCategoryIndicatorBackgroundView.h>
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
#import "XPPrivilegeCardItemVC.h"
|
||||
#import "UploadImage.h"
|
||||
#import "UploadFile.h"
|
||||
#import "Api+Mine.h"
|
||||
#import "XPPrivilegeCardTitlView.h"
|
||||
#import "XPPrivilegeCardProduceView.h"
|
||||
@@ -284,59 +284,43 @@
|
||||
|
||||
id obj = array.firstObject;
|
||||
if(self.produceView.cardType == 1){
|
||||
[Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadGifImageData:(NSData *)obj named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
NSString *path = resp[@"path"];
|
||||
if(path != nil){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[path]);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[]);
|
||||
});
|
||||
}];
|
||||
} else {
|
||||
NSData *data = (NSData *)obj;
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
if(key != nil){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[]);
|
||||
finish(@[key]);
|
||||
});
|
||||
}
|
||||
}];
|
||||
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[]);
|
||||
});
|
||||
|
||||
}];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadImage:(UIImage *)obj named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
|
||||
NSString *path = resp[@"path"];
|
||||
if(path != nil){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[path]);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
NSData *data = UIImageJPEGRepresentation((UIImage *)obj, 0.5);
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
if(key != nil){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[key]);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[]);
|
||||
});
|
||||
|
||||
}];
|
||||
} else {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(@[]);
|
||||
});
|
||||
}
|
||||
}];
|
||||
|
||||
}];
|
||||
|
||||
|
||||
}
|
||||
@@ -347,66 +331,43 @@
|
||||
NSMutableDictionary *photoDic = [NSMutableDictionary dictionary];
|
||||
dispatch_async(queue, ^{
|
||||
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
|
||||
[Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadImage:self.videoModel.videoPhoto named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
NSString *path = resp[@"path"];
|
||||
if(path != nil){
|
||||
[photoDic setValue:path forKey:@"photoUrl"];
|
||||
}
|
||||
if(photoDic.allKeys.count == 2){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
[photoDic setValue:@"" forKey:@"photoUrl"];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
|
||||
|
||||
}];
|
||||
} else {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
[photoDic setValue:@"" forKey:@"photoUrl"];
|
||||
|
||||
NSData *data = UIImageJPEGRepresentation(self.videoModel.videoPhoto, 0.5);
|
||||
NSString *format = [UIImage contentTypeWithImageData:data];
|
||||
NSString *name = [NSString stringWithFormat:@"image/%@.%@",[NSString createUUID],format];
|
||||
[[UploadFile share]QCloudUploadImage:data named:name success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
|
||||
if(key != nil){
|
||||
[photoDic setValue:key forKey:@"photoUrl"];
|
||||
}
|
||||
if(photoDic.allKeys.count == 2){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
[photoDic setValue:@"" forKey:@"photoUrl"];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}];
|
||||
|
||||
|
||||
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
|
||||
[Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
if (code == 200) {
|
||||
NSString *key = data.data[@"key"];
|
||||
NSString *token = data.data[@"token"];
|
||||
[UploadImage uploadGifImageData:videoData named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
NSString *path = resp[@"path"];
|
||||
if(path != nil){
|
||||
[photoDic setValue:path forKey:@"videoUrl"];
|
||||
}
|
||||
if(photoDic.allKeys.count == 2){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
[photoDic setValue:@"" forKey:@"videoUrl"];
|
||||
if(photoDic.allKeys.count == 2){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
|
||||
}];
|
||||
} else {
|
||||
NSString *file = [NSString stringWithFormat:@"file/%@",[NSString createUUID]];
|
||||
[[UploadFile share]QCloudUploadFileWithData:videoData named:file success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
if(key != nil){
|
||||
[photoDic setValue:key forKey:@"videoUrl"];
|
||||
}
|
||||
if(photoDic.allKeys.count == 2){
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
} failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) {
|
||||
dispatch_semaphore_signal(semaphore);
|
||||
[photoDic setValue:@"" forKey:@"videoUrl"];
|
||||
if(photoDic.allKeys.count == 2){
|
||||
@@ -414,8 +375,7 @@
|
||||
finish(photoDic);
|
||||
});
|
||||
}
|
||||
}
|
||||
}];
|
||||
}];
|
||||
});
|
||||
|
||||
|
||||
|
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// MewRoomReceiveGiftLandscapeView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/2/19.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "XPRoomGiftBroadCastModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class MewRoomReceiveGiftLandscapeView;
|
||||
|
||||
@protocol MewRoomReceiveGiftLandscapeViewDelegate <NSObject>
|
||||
|
||||
|
||||
- (void)clickEnterRoom:(NSString *)roomUid roomTitle:(NSString *)title;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface MewRoomReceiveGiftLandscapeView : UIView
|
||||
///
|
||||
@property (nonatomic,strong) XPRoomGiftBroadCastModel *model;
|
||||
|
||||
///代理
|
||||
@property (nonatomic,weak) id<MewRoomReceiveGiftLandscapeViewDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,308 @@
|
||||
//
|
||||
// MewRoomReceiveGiftLandscapeView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/2/19.
|
||||
//
|
||||
|
||||
#import "MewRoomReceiveGiftLandscapeView.h"
|
||||
#import <MarqueeLabel.h>
|
||||
@interface MewRoomReceiveGiftLandscapeView ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///赠送者头像
|
||||
@property(nonatomic,strong) NetImageView *senderAvatarView;
|
||||
///赠送内容
|
||||
@property(nonatomic,strong) MarqueeLabel *pi_contentView;
|
||||
|
||||
///礼物
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///数量
|
||||
@property (nonatomic,strong) UILabel *countLabel;
|
||||
|
||||
///房间名
|
||||
@property (nonatomic,strong) UILabel *roomNameLabel;
|
||||
///房间背景
|
||||
@property (nonatomic,strong) UIImageView *pi_roomIconView;
|
||||
///去围观
|
||||
@property(nonatomic,strong) UIButton *circuseeBtn;
|
||||
@end
|
||||
@implementation MewRoomReceiveGiftLandscapeView
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
[self initEvents];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Response
|
||||
|
||||
|
||||
- (void)didClickEnterRoom {
|
||||
if(self.model.roomTitle == nil)return;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(clickEnterRoom:roomTitle:)]) {
|
||||
[self.delegate clickEnterRoom:[NSString stringWithFormat:@"%ld", self.model.roomUid] roomTitle:self.model.roomTitle];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.backImageView];
|
||||
|
||||
|
||||
[self.backImageView addSubview:self.senderAvatarView];
|
||||
[self.backImageView addSubview:self.pi_contentView];
|
||||
[self.backImageView addSubview:self.pi_roomIconView];
|
||||
[self.backImageView addSubview:self.roomNameLabel];
|
||||
[self.backImageView addSubview:self.circuseeBtn];
|
||||
[self.backImageView addSubview:self.giftImageView];
|
||||
[self.backImageView addSubview:self.countLabel];
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self);
|
||||
}];
|
||||
|
||||
[self.senderAvatarView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(kGetScaleWidth(44));
|
||||
make.leading.mas_equalTo(kGetScaleWidth(23));
|
||||
make.centerY.equalTo(self.backImageView);
|
||||
}];
|
||||
[self.pi_contentView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.equalTo(self.senderAvatarView.mas_trailing).mas_offset(kGetScaleWidth(13));
|
||||
make.top.mas_equalTo(kGetScaleWidth(18));
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(133));
|
||||
make.height.mas_equalTo(kGetScaleWidth(14));
|
||||
}];
|
||||
|
||||
[self.pi_roomIconView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(kGetScaleWidth(12));
|
||||
make.leading.equalTo(self.senderAvatarView.mas_trailing).mas_offset(kGetScaleWidth(11));
|
||||
make.top.mas_equalTo(kGetScaleWidth(39));
|
||||
}];
|
||||
[self.roomNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(kGetScaleWidth(92));
|
||||
make.top.mas_equalTo(kGetScaleWidth(40));
|
||||
make.height.mas_equalTo(kGetScaleWidth(12));
|
||||
make.width.mas_equalTo(kGetScaleWidth(105));
|
||||
|
||||
}];
|
||||
[self.circuseeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(44));
|
||||
make.height.mas_equalTo(kGetScaleWidth(20));
|
||||
make.leading.equalTo(self.roomNameLabel.mas_trailing).mas_offset(kGetScaleWidth(5));
|
||||
make.centerY.equalTo(self.roomNameLabel);
|
||||
}];
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(64), kGetScaleWidth(64)));
|
||||
make.centerY.mas_equalTo(self.backImageView);
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(64));
|
||||
}];
|
||||
|
||||
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.mas_equalTo(self.giftImageView.mas_trailing).offset(kGetScaleWidth(2));
|
||||
make.centerY.mas_equalTo(self.backImageView);
|
||||
}];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void)initEvents {
|
||||
[self.circuseeBtn addTarget:self action:@selector(didClickEnterRoom) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
|
||||
- (void)updateSubviews:(BroadCastLevel)level {
|
||||
UIColor * lineColor;
|
||||
UIColor *bgBtnColor;
|
||||
NSString * bgImageName;
|
||||
|
||||
|
||||
|
||||
switch (level) {
|
||||
case BroadCastLevel_Normal:
|
||||
{
|
||||
|
||||
|
||||
lineColor = UIColorFromRGB(0x66B5FF);
|
||||
bgBtnColor = UIColorFromRGB(0x283889);
|
||||
bgImageName = @"mew_room_receive_low_bg";
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
case BroadCastLevel_Middle:
|
||||
{
|
||||
|
||||
|
||||
|
||||
lineColor = UIColorFromRGB(0xFE9FFF);
|
||||
bgBtnColor = UIColorFromRGB(0x49157D);
|
||||
|
||||
bgImageName = @"mew_room_receive_middle_bg";
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
case BroadCastLevel_High:
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
lineColor = UIColorFromRGB(0xFFED77);
|
||||
bgBtnColor = UIColorFromRGB(0x87152D);
|
||||
|
||||
bgImageName = @"mew_room_receive_high_bg";
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
|
||||
|
||||
|
||||
lineColor = UIColorFromRGB(0x66B5FF);
|
||||
bgBtnColor = UIColorFromRGB(0x283889);
|
||||
|
||||
bgImageName = @"mew_room_receive_low_bg";
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
self.backImageView.image = [UIImage imageNamed:bgImageName];
|
||||
self.circuseeBtn.layer.borderColor = lineColor.CGColor;
|
||||
self.circuseeBtn.backgroundColor = bgBtnColor;
|
||||
}
|
||||
|
||||
-(void)showRoomVC{
|
||||
[self didClickEnterRoom];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setModel:(XPRoomGiftBroadCastModel *)model {
|
||||
_model = model;
|
||||
if (_model) {
|
||||
_roomNameLabel.hidden = _model.roomTitle.length == 0;
|
||||
_pi_roomIconView.hidden = _model.roomTitle.length == 0;
|
||||
_circuseeBtn.hidden = _model.roomTitle.length == 0;
|
||||
if(_model.roomTitle.length == 0){
|
||||
[self.pi_contentView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.equalTo(self.senderAvatarView.mas_trailing).mas_offset(kGetScaleWidth(13));
|
||||
make.centerY.equalTo(self.backImageView);
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(133));
|
||||
make.height.mas_equalTo(kGetScaleWidth(14));
|
||||
}];
|
||||
}
|
||||
NSString *sendUserNick = _model.sendUserNick ?: @"";
|
||||
NSString *recvUserNick = _model.recvUserNick ?: @"";
|
||||
self.senderAvatarView.imageUrl = _model.sendUserAvatar;
|
||||
sendUserNick = sendUserNick.length > 6 ? [NSString stringWithFormat:@"%@...",[sendUserNick substringToIndex:6]] : sendUserNick;
|
||||
recvUserNick = recvUserNick.length > 6 ? [NSString stringWithFormat:@"%@...",[recvUserNick substringToIndex:6]] : recvUserNick;
|
||||
NSString *giftName = [NSString stringWithFormat:@"%@ %@ %@ %@",sendUserNick,@"送給",recvUserNick,_model.giftName];
|
||||
NSMutableAttributedString *giftNameAtt = [[NSMutableAttributedString alloc]initWithString:giftName attributes:@{NSFontAttributeName:kFontMedium(14),NSForegroundColorAttributeName:[UIColor whiteColor]}];
|
||||
[giftNameAtt addAttributes:@{NSFontAttributeName:kFontMedium(14),NSForegroundColorAttributeName:UIColorFromRGB(0xFFE468)} range:[giftName rangeOfString:sendUserNick]];
|
||||
[giftNameAtt addAttributes:@{NSFontAttributeName:kFontMedium(14),NSForegroundColorAttributeName:UIColorFromRGB(0xFFE468)} range:[giftName rangeOfString:recvUserNick]];
|
||||
self.pi_contentView.attributedText = giftNameAtt;
|
||||
self.giftImageView.imageUrl = _model.giftUrl;
|
||||
self.roomNameLabel.text = _model.roomTitle;
|
||||
if(_model.giftNum > 1){
|
||||
self.countLabel.text = [NSString stringWithFormat:@"x%ld", _model.giftNum];
|
||||
}
|
||||
[self updateSubviews:_model.levelNum];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
-(NetImageView *)senderAvatarView{
|
||||
if(!_senderAvatarView){
|
||||
NetImageConfig *config = [[NetImageConfig alloc]init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_senderAvatarView = [[NetImageView alloc]initWithConfig:config];
|
||||
_senderAvatarView.layer.cornerRadius = kGetScaleWidth(44)/2;
|
||||
_senderAvatarView.layer.masksToBounds = YES;
|
||||
_senderAvatarView.userInteractionEnabled = YES;
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(showRoomVC)];
|
||||
[_senderAvatarView addGestureRecognizer:tap];
|
||||
}
|
||||
return _senderAvatarView;
|
||||
}
|
||||
|
||||
- (MarqueeLabel *)pi_contentView{
|
||||
if(!_pi_contentView){
|
||||
_pi_contentView = [[MarqueeLabel alloc] init];
|
||||
_pi_contentView.scrollDuration = 6.0;
|
||||
_pi_contentView.fadeLength = 8.0f;
|
||||
_pi_contentView.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _pi_contentView;
|
||||
}
|
||||
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
|
||||
_giftImageView = [[NetImageView alloc] init];
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)countLabel {
|
||||
if (!_countLabel) {
|
||||
_countLabel = [[UILabel alloc] init];
|
||||
_countLabel.textColor = UIColorFromRGB(0xFFE468);
|
||||
_countLabel.font = kFontHeavy(16);
|
||||
|
||||
}
|
||||
return _countLabel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
- (UILabel *)roomNameLabel {
|
||||
if (!_roomNameLabel) {
|
||||
_roomNameLabel = [[UILabel alloc] init];
|
||||
_roomNameLabel.font = kFontRegular(12);
|
||||
_roomNameLabel.textColor = [UIColor whiteColor];
|
||||
}
|
||||
return _roomNameLabel;
|
||||
}
|
||||
- (UIImageView *)pi_roomIconView{
|
||||
if(!_pi_roomIconView){
|
||||
_pi_roomIconView = [UIImageView new];
|
||||
_pi_roomIconView.image = kImage(@"mew_room_receive_room_icon");
|
||||
}
|
||||
return _pi_roomIconView;
|
||||
}
|
||||
- (UIButton *)circuseeBtn{
|
||||
if(!_circuseeBtn){
|
||||
_circuseeBtn = [UIButton new];
|
||||
[_circuseeBtn setTitle:@"去围观" forState:UIControlStateNormal];
|
||||
_circuseeBtn.titleLabel.font = kFontRegular(10);
|
||||
_circuseeBtn.layer.cornerRadius = kGetScaleWidth(20)/2;
|
||||
_circuseeBtn.layer.borderWidth = 1;
|
||||
_circuseeBtn.layer.masksToBounds = YES;
|
||||
}
|
||||
return _circuseeBtn;
|
||||
}
|
||||
|
||||
@end
|
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// MewRoomReceiveGiftPopupWindow.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/2/19.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
||||
@protocol MewRoomReceiveGiftPopupWindowDelegate <NSObject>
|
||||
|
||||
-(void)clickCircuseeRoom:(NSString *)roomUid;
|
||||
|
||||
@end
|
||||
|
||||
@interface MewRoomReceiveGiftPopupWindow : UIView
|
||||
@property(nonatomic,copy) NSString *roomName;
|
||||
@property(nonatomic,copy) NSString *roodUid;
|
||||
@property(nonatomic,weak) id<MewRoomReceiveGiftPopupWindowDelegate>delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,192 @@
|
||||
//
|
||||
// MewRoomReceiveGiftPopupWindow.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by duoban on 2024/2/19.
|
||||
//
|
||||
|
||||
#import "MewRoomReceiveGiftPopupWindow.h"
|
||||
@interface MewRoomReceiveGiftPopupWindow()
|
||||
///背景
|
||||
@property(nonatomic,strong) UIView *bgView;
|
||||
///标题
|
||||
@property(nonatomic,strong) UILabel *titleView;
|
||||
///提示
|
||||
@property(nonatomic,strong) UILabel *mew_tipsView;
|
||||
///房间名
|
||||
@property(nonatomic,strong) UILabel *roomNameView;
|
||||
///选中
|
||||
@property(nonatomic,strong) UIButton *mew_selectView;
|
||||
///选中提示
|
||||
@property(nonatomic,strong) UILabel *mew_selectTipsView;
|
||||
///取消
|
||||
@property(nonatomic,strong) UIButton *mew_cancelBtn;
|
||||
///确认
|
||||
@property(nonatomic,strong) UIButton *mew_confirmBtn;
|
||||
@end
|
||||
@implementation MewRoomReceiveGiftPopupWindow
|
||||
|
||||
-(instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self installUI];
|
||||
[self installConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)installUI{
|
||||
self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4];
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView addSubview:self.titleView];
|
||||
[self.bgView addSubview:self.mew_tipsView];
|
||||
[self.bgView addSubview:self.roomNameView];
|
||||
[self.bgView addSubview:self.mew_selectView];
|
||||
[self.bgView addSubview:self.mew_selectTipsView];
|
||||
[self.bgView addSubview:self.mew_cancelBtn];
|
||||
[self.bgView addSubview:self.mew_confirmBtn];
|
||||
}
|
||||
-(void)installConstraints{
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(319));
|
||||
make.height.mas_equalTo(kGetScaleWidth(230));
|
||||
make.center.equalTo(self);
|
||||
}];
|
||||
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(24));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
make.height.mas_equalTo(kGetScaleWidth(20));
|
||||
}];
|
||||
[self.mew_tipsView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(68));
|
||||
make.centerX.equalTo(self.bgView);
|
||||
make.height.mas_equalTo(kGetScaleWidth(20));
|
||||
}];
|
||||
[self.roomNameView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kGetScaleWidth(90));
|
||||
make.leading.trailing.equalTo(self.bgView).inset(kGetScaleWidth(10));
|
||||
make.height.mas_equalTo(kGetScaleWidth(20));
|
||||
}];
|
||||
[self.mew_selectTipsView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(self.bgView.mas_centerX).mas_equalTo(kGetScaleWidth(9));
|
||||
make.top.mas_equalTo(kGetScaleWidth(124));
|
||||
make.height.mas_equalTo(kGetScaleWidth(20));
|
||||
}];
|
||||
[self.mew_selectView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(kGetScaleWidth(14));
|
||||
make.trailing.equalTo(self.mew_selectTipsView.mas_leading).mas_offset(-kGetScaleWidth(4));
|
||||
make.centerY.equalTo(self.mew_selectTipsView);
|
||||
}];
|
||||
|
||||
[self.mew_cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(124));
|
||||
make.height.mas_equalTo(kGetScaleWidth(42));
|
||||
make.top.mas_equalTo(kGetScaleWidth(164));
|
||||
make.leading.mas_equalTo(kGetScaleWidth(28));
|
||||
}];
|
||||
[self.mew_confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(kGetScaleWidth(124));
|
||||
make.height.mas_equalTo(kGetScaleWidth(42));
|
||||
make.top.mas_equalTo(kGetScaleWidth(164));
|
||||
make.trailing.mas_equalTo(-kGetScaleWidth(28));
|
||||
}];
|
||||
|
||||
}
|
||||
-(void)mew_cancelAction{
|
||||
[self removeFromSuperview];
|
||||
}
|
||||
-(void)selectAction:(UIButton *)sender{
|
||||
sender.selected = !sender.selected;
|
||||
|
||||
|
||||
if(sender.selected == YES){
|
||||
[[NSUserDefaults standardUserDefaults]setValue:@(YES) forKey:@"kSaveShowReceiveGiftPopupWindowSelectState"];
|
||||
[[NSUserDefaults standardUserDefaults]synchronize];
|
||||
}else{
|
||||
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"kSaveShowReceiveGiftPopupWindowSelectState"];
|
||||
}
|
||||
}
|
||||
- (void)setRoomName:(NSString *)roomName{
|
||||
_roomName = roomName;
|
||||
self.roomNameView.text = [NSString stringWithFormat:@"“%@”",_roomName];
|
||||
}
|
||||
-(void)piConfirmAction{
|
||||
[self removeFromSuperview];
|
||||
if(self.delegate && [self.delegate respondsToSelector:@selector(clickCircuseeRoom:)]){
|
||||
[self.delegate clickCircuseeRoom:self.roodUid];
|
||||
}
|
||||
}
|
||||
#pragma mark - 懒加载
|
||||
- (UIView *)bgView{
|
||||
if(!_bgView){
|
||||
_bgView = [UIView new];
|
||||
_bgView.backgroundColor = [UIColor whiteColor];
|
||||
[_bgView setCornerWithLeftTopCorner:kGetScaleWidth(20) rightTopCorner:kGetScaleWidth(20) bottomLeftCorner:kGetScaleWidth(20) bottomRightCorner:kGetScaleWidth(20) size:CGSizeMake(kGetScaleWidth(319), kGetScaleWidth(230))];
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
- (UILabel *)titleView{
|
||||
if(!_titleView){
|
||||
_titleView = [UILabel labelInitWithText:@"前往围观" font:kFontSemibold(18) textColor:UIColorFromRGB(0x1F1B4F)];
|
||||
_titleView.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _titleView;
|
||||
}
|
||||
- (UILabel *)mew_tipsView{
|
||||
if(!_mew_tipsView){
|
||||
_mew_tipsView = [UILabel labelInitWithText:@"是否离开当前房间前往" font:kFontRegular(14) textColor:UIColorFromRGB(0x1F1B4F)];
|
||||
_mew_tipsView.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _mew_tipsView;
|
||||
}
|
||||
- (UILabel *)roomNameView{
|
||||
if(!_roomNameView){
|
||||
_roomNameView = [UILabel labelInitWithText:@"" font:kFontRegular(14) textColor:UIColorFromRGB(0x9168FA)];
|
||||
_roomNameView.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _roomNameView;
|
||||
}
|
||||
- (UIButton *)mew_selectView{
|
||||
if(!_mew_selectView){
|
||||
_mew_selectView = [UIButton new];
|
||||
[_mew_selectView setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];
|
||||
[_mew_selectView setImage:kImage(@"mew_room_receive_window_select") forState:UIControlStateSelected];
|
||||
[_mew_selectView setImage:kImage(@"mew_room_receive_window_no_select") forState:UIControlStateNormal];
|
||||
[_mew_selectView addTarget:self action:@selector(selectAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _mew_selectView;
|
||||
}
|
||||
- (UILabel *)mew_selectTipsView{
|
||||
if(!_mew_selectTipsView){
|
||||
_mew_selectTipsView = [UILabel labelInitWithText:@"下次不再出现此提示" font:kFontRegular(12) textColor:UIColorFromRGB(0xB3B3C3)];
|
||||
}
|
||||
return _mew_selectTipsView;
|
||||
}
|
||||
- (UIButton *)mew_cancelBtn{
|
||||
if(!_mew_cancelBtn){
|
||||
_mew_cancelBtn = [UIButton new];
|
||||
_mew_cancelBtn.backgroundColor = UIColorFromRGB(0xE6E6F0);
|
||||
[_mew_cancelBtn setTitle:@"留在这" forState:UIControlStateNormal];
|
||||
_mew_cancelBtn.titleLabel.font = kFontMedium(16);
|
||||
[_mew_cancelBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
_mew_cancelBtn.layer.cornerRadius = kGetScaleWidth(42)/2;
|
||||
_mew_cancelBtn.layer.masksToBounds = YES;
|
||||
[_mew_cancelBtn addTarget:self action:@selector(mew_cancelAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _mew_cancelBtn;
|
||||
}
|
||||
- (UIButton *)mew_confirmBtn{
|
||||
if(!_mew_confirmBtn){
|
||||
_mew_confirmBtn = [UIButton new];
|
||||
UIImage *image = [UIImage gradientColorImageFromColors:@[[ThemeColor confirmButtonGradientStartColor],[ThemeColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(124), kGetScaleWidth(42))];
|
||||
[_mew_confirmBtn setBackgroundImage:image forState:UIControlStateNormal];
|
||||
[_mew_confirmBtn setTitle:@"立即前往" forState:UIControlStateNormal];
|
||||
_mew_confirmBtn.titleLabel.font = kFontMedium(16);
|
||||
[_mew_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
_mew_confirmBtn.layer.cornerRadius = kGetScaleWidth(42)/2;
|
||||
_mew_confirmBtn.layer.masksToBounds = YES;
|
||||
[_mew_confirmBtn addTarget:self action:@selector(piConfirmAction) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _mew_confirmBtn;
|
||||
}
|
||||
|
||||
@end
|
@@ -43,6 +43,7 @@ typedef NS_ENUM(NSInteger, BroadCastLevel) {
|
||||
@property (nonatomic,copy) NSString *roomErbanNo;
|
||||
///是否年度飘屏
|
||||
@property (nonatomic, assign) BOOL ceremonyGift;
|
||||
@property(nonatomic,copy) NSString *roomTitle;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -44,7 +44,7 @@
|
||||
#import "XPStarredKitchenModel.h"
|
||||
///View
|
||||
#import "XPRoomGiftBannerView.h"
|
||||
#import "XPRoomGiftBroadcastView.h"
|
||||
#import "MewRoomReceiveGiftLandscapeView.h"
|
||||
#import "XPRoomCandyGiftView.h"
|
||||
#import "XPRoomDatingAnimationView.h"
|
||||
#import "XPRoomNobleLevelUpView.h"
|
||||
@@ -61,8 +61,8 @@
|
||||
#import "XPStarredKitchenGiftView.h"
|
||||
#import "XPWebViewController.h"
|
||||
#import "XPRoomAnimationTool.h"
|
||||
|
||||
@interface XPRoomAnimationView ()<SVGAPlayerDelegate,NIMBroadcastManagerDelegate, XPRoomGiftBroadcastViewDelegate, HWDMP4PlayDelegate, XPRoomLuckyBigPrizeViewDelegate,XPRoomLicneseHourRankViewDelegate, XPRoomGraffitiGiftAnimationViewDelegate, XPStarredKitchenGiftViewDelegate>
|
||||
#import "MewRoomReceiveGiftPopupWindow.h"
|
||||
@interface XPRoomAnimationView ()<SVGAPlayerDelegate,NIMBroadcastManagerDelegate, MewRoomReceiveGiftLandscapeViewDelegate, HWDMP4PlayDelegate, XPRoomLuckyBigPrizeViewDelegate,XPRoomLicneseHourRankViewDelegate, XPRoomGraffitiGiftAnimationViewDelegate, XPStarredKitchenGiftViewDelegate,MewRoomReceiveGiftPopupWindowDelegate>
|
||||
///展示的不同层级
|
||||
///最底层的
|
||||
@property (nonatomic,strong) XPRoomAnimationHitView * lowLevelView;
|
||||
@@ -1125,10 +1125,9 @@
|
||||
///播放gif动画
|
||||
- (void)beginGifAnimation:(NSString *)giftUrl startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint {
|
||||
FLAnimatedImageView * giftImageView = [self.giftReuseArray anyObject];
|
||||
|
||||
CGFloat width = (kGetScaleWidth(256)/3) ;
|
||||
CGFloat heigth = (kGetScaleWidth(144)/3) ;
|
||||
if (giftImageView == nil) {
|
||||
CGFloat width = (kGetScaleWidth(256)/3) ;
|
||||
CGFloat heigth = (kGetScaleWidth(144)/3) ;
|
||||
giftImageView = [[FLAnimatedImageView alloc]initWithFrame:CGRectMake(0, 0 , width, heigth)];
|
||||
giftImageView.center = startPoint;
|
||||
giftImageView.alpha = 1;
|
||||
@@ -1138,6 +1137,8 @@
|
||||
}else {
|
||||
[self.giftReuseArray removeObject:giftImageView];
|
||||
}
|
||||
giftImageView.frame = CGRectMake(0, 0 , width, heigth);
|
||||
giftImageView.center = startPoint;
|
||||
giftImageView.hidden = NO;
|
||||
giftImageView.layer.cornerRadius = 6;
|
||||
giftImageView.layer.masksToBounds = YES;
|
||||
@@ -1175,10 +1176,9 @@
|
||||
///播放礼物动画
|
||||
- (void)beginGiftAnimation:(NSString *)giftUrl startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint {
|
||||
FLAnimatedImageView * giftImageView = [self.giftReuseArray anyObject];
|
||||
|
||||
CGFloat width = 55;
|
||||
CGFloat heigth = 55;
|
||||
if (giftImageView == nil) {
|
||||
CGFloat width = 55;
|
||||
CGFloat heigth = 55;
|
||||
giftImageView = [[FLAnimatedImageView alloc]initWithFrame:CGRectMake(0, 0 , width, heigth)];
|
||||
giftImageView.center = startPoint;
|
||||
giftImageView.alpha = 1;
|
||||
@@ -1188,12 +1188,17 @@
|
||||
}else {
|
||||
[self.giftReuseArray removeObject:giftImageView];
|
||||
}
|
||||
giftImageView.frame = CGRectMake(0, 0 , width, heigth);
|
||||
giftImageView.center = startPoint;
|
||||
giftImageView.hidden = NO;
|
||||
[giftImageView sd_setImageWithURL:[NSURL URLWithString:giftUrl]];
|
||||
[self.lowLevelView addSubview:giftImageView];
|
||||
CAAnimationGroup *group = [XPRoomAnimationTool createGiftAnimationStartPoint:startPoint endPoint:endPoint];
|
||||
[giftImageView.layer addAnimation:group forKey:@"giftDisplayViewAnimation"];
|
||||
[self performSelector:@selector(aniationDidFinish:) withObject:giftImageView afterDelay:(3.2+0.25)];
|
||||
[giftImageView sd_setImageWithURL:[NSURL URLWithString:giftUrl]completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
|
||||
|
||||
[self.lowLevelView addSubview:giftImageView];
|
||||
CAAnimationGroup *group = [XPRoomAnimationTool createGiftAnimationStartPoint:startPoint endPoint:endPoint];
|
||||
[giftImageView.layer addAnimation:group forKey:@"giftDisplayViewAnimation"];
|
||||
[self performSelector:@selector(aniationDidFinish:) withObject:giftImageView afterDelay:(3.2+0.25)];
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
- (void)aniationVideoViewDidFinish:(UIView *)videoView{
|
||||
@@ -1244,15 +1249,15 @@
|
||||
}
|
||||
|
||||
- (void)createGiftBroadcastViewAnimation:(XPRoomGiftBroadCastModel *)giftModel {
|
||||
XPRoomGiftBroadcastView * view = [[XPRoomGiftBroadcastView alloc] init];
|
||||
MewRoomReceiveGiftLandscapeView * view = [[MewRoomReceiveGiftLandscapeView alloc] init];
|
||||
view.delegate = self;
|
||||
view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150);
|
||||
view.broadcastModel = giftModel;
|
||||
view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, kGetScaleWidth(69));;
|
||||
view.model = giftModel;
|
||||
[self.highLevleView addSubview:view];
|
||||
[self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond];
|
||||
}
|
||||
|
||||
- (void)beginGiftBraodcastViewAnimation:(XPRoomGiftBroadcastView *)view notifyStaySecond:(int)notifyStaySecond{
|
||||
- (void)beginGiftBraodcastViewAnimation:(MewRoomReceiveGiftLandscapeView *)view notifyStaySecond:(int)notifyStaySecond{
|
||||
CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0;
|
||||
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
springAnimation.springSpeed = 12;
|
||||
@@ -1267,7 +1272,7 @@
|
||||
[view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"];
|
||||
}
|
||||
|
||||
- (void)removeGiftBroadcastOutAnimation:(XPRoomGiftBroadcastView *)view stayTime:(CGFloat)stayTime{
|
||||
- (void)removeGiftBroadcastOutAnimation:(MewRoomReceiveGiftLandscapeView *)view stayTime:(CGFloat)stayTime{
|
||||
POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center];
|
||||
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)];
|
||||
@@ -1294,7 +1299,17 @@
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomGiftBroadcastViewDelegate
|
||||
- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid {
|
||||
- (void)clickEnterRoom:(NSString *)roomUid roomTitle:(NSString *)title{
|
||||
id isShowBroadcastView = [[NSUserDefaults standardUserDefaults]valueForKey:@"kSaveShowReceiveGiftPopupWindowSelectState"];
|
||||
if(isShowBroadcastView == nil){
|
||||
MewRoomReceiveGiftPopupWindow *broadcastView = [[MewRoomReceiveGiftPopupWindow alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
|
||||
broadcastView.roodUid = roomUid;
|
||||
broadcastView.roomName = title;
|
||||
broadcastView.delegate = self;
|
||||
[kWindow addSubview:broadcastView];
|
||||
return;
|
||||
}
|
||||
|
||||
if (roomUid.length > 0 && self.delegate.getRoomInfo.uid != roomUid.integerValue) {
|
||||
[self.delegate exitRoom];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
@@ -1302,15 +1317,13 @@
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view didClickClose:(XPRoomGiftBroadCastModel *)broadcastModel {
|
||||
[view removeFromSuperview];
|
||||
[view pop_removeAllAnimations];
|
||||
if ([self.giftBroadcastQueue containsObject:broadcastModel]) {
|
||||
[self.giftBroadcastQueue removeObject:broadcastModel];
|
||||
}
|
||||
if (self.giftBroadcastQueue.count > 0) {
|
||||
[self createGiftBroadcastViewAnimation:self.giftBroadcastQueue.firstObject];
|
||||
#pragma mark - MewRoomReceiveGiftPopupWindowDelegate
|
||||
-(void)clickCircuseeRoom:(NSString *)roomUid{
|
||||
if (roomUid.length > 0 && self.delegate.getRoomInfo.uid != roomUid.integerValue) {
|
||||
[self.delegate exitRoom];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1397,10 +1410,22 @@
|
||||
if (obj.otherViewType == GiftOtherViewTypeMp4 && obj.viewUrl && obj.viewUrl.length > 0 && roomInfor.hasAnimationEffect) {
|
||||
GiftReceiveInfoModel * model = [[GiftReceiveInfoModel alloc] init];
|
||||
model.viewUrl = obj.viewUrl;
|
||||
model.gift = obj;
|
||||
model.nick = receiveInfo.nick;
|
||||
model.targetUids = receiveInfo.targetUids;
|
||||
model.isBatch = receiveInfo.isBatch;
|
||||
model.targetAvatar = receiveInfo.targetAvatar;
|
||||
model.targetNick = receiveInfo.targetNick;
|
||||
[self.giftEffectQueue addObject:model];
|
||||
} else if (obj.hasVggPic && roomInfor.hasAnimationEffect) {
|
||||
GiftReceiveInfoModel * model = [[GiftReceiveInfoModel alloc] init];
|
||||
model.vggUrl = obj.vggUrl;
|
||||
model.viewUrl = obj.viewUrl;
|
||||
model.gift = obj;
|
||||
model.nick = receiveInfo.nick;
|
||||
model.targetUids = receiveInfo.targetUids;
|
||||
model.isBatch = receiveInfo.isBatch;
|
||||
model.targetAvatar = receiveInfo.targetAvatar;
|
||||
model.targetNick = receiveInfo.targetNick;
|
||||
[self.giftEffectQueue addObject:model];
|
||||
}
|
||||
}];
|
||||
@@ -1471,58 +1496,12 @@
|
||||
if (!giftInfo) {
|
||||
giftInfo = [[XPGiftStorage shareStorage] findGiftInfo: receiveInfo.giftId];
|
||||
}
|
||||
NSInteger giftTotal = 0;
|
||||
if (receiveInfo.targetUids.count > 0) {
|
||||
giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count;
|
||||
} else {
|
||||
giftTotal = receiveInfo.giftNum * giftInfo.goldPrice;
|
||||
}
|
||||
if (giftTotal >= 520) {
|
||||
__block XPRoomGiftBannerView *view = [self.bannerDequePool anyObject];
|
||||
if (view == nil) {
|
||||
view = [[XPRoomGiftBannerView alloc] init];
|
||||
[self.bannerVisiablePool addObject:view];
|
||||
}else{
|
||||
[self.bannerDequePool removeObject:view];
|
||||
}
|
||||
[self removeGiftBannerView:view];
|
||||
[view configGiftBanner:receiveInfo users:[self makeBannerUsers]];
|
||||
view.frame = CGRectMake(KScreenWidth, 100, KScreenWidth, 153);
|
||||
[self.lowLevelView addSubview:view];
|
||||
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
springAnimation.springSpeed = 12;
|
||||
springAnimation.springBounciness = 10.f;
|
||||
springAnimation.fromValue = [NSValue valueWithCGPoint:view.center];
|
||||
springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.frame.size.width / 2, view.center.y)];
|
||||
@kWeakify(self);
|
||||
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
|
||||
@kStrongify(self);
|
||||
if (finished) {
|
||||
[self removeAnimation:view];
|
||||
}
|
||||
}];
|
||||
|
||||
[springAnimation setAnimationDidStartBlock:^(POPAnimation *anim) {
|
||||
@kStrongify(self);
|
||||
|
||||
if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && giftInfo.viewUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) {
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffectWithVapUrl:giftInfo.viewUrl];
|
||||
} else if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) {
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffect:giftInfo.vggUrl];
|
||||
}
|
||||
}];
|
||||
|
||||
[view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"];
|
||||
} else {
|
||||
if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && receiveInfo.viewUrl.length > 0) {//播放vap动效
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffectWithVapUrl:receiveInfo.viewUrl];
|
||||
} else if (receiveInfo.vggUrl.length > 0) {///如果有特效的话就播放特效
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffect:receiveInfo.vggUrl];
|
||||
}
|
||||
if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && giftInfo.viewUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) {
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffectWithVapUrl:giftInfo.viewUrl];
|
||||
} else if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) {
|
||||
[self largeGiftStopCarEffect:giftInfo.goldPrice];
|
||||
[self playGiftEffect:giftInfo.vggUrl];
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// XPRoomGiftBroadcastView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/11/18.
|
||||
// 广播横幅
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class XPRoomGiftBroadCastModel, XPRoomGiftBroadcastView;
|
||||
|
||||
@protocol XPRoomGiftBroadcastViewDelegate <NSObject>
|
||||
/// 点击了关闭
|
||||
- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view didClickClose:(XPRoomGiftBroadCastModel *)broadcastModel;
|
||||
///点击了进入房间
|
||||
- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPRoomGiftBroadcastView : UIView
|
||||
///
|
||||
@property (nonatomic,strong) XPRoomGiftBroadCastModel *broadcastModel;
|
||||
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPRoomGiftBroadcastViewDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -1,418 +0,0 @@
|
||||
//
|
||||
// XPRoomGiftBroadcastView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2021/11/18.
|
||||
//
|
||||
|
||||
#import "XPRoomGiftBroadcastView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor+Room.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "XPRoomGiftBroadCastModel.h"
|
||||
///View
|
||||
#import "NetImageView.h"
|
||||
#import "XPRoomYearActivityView.h"
|
||||
|
||||
#define kScreenScale (CGFloat)KScreenWidth / (CGFloat)375
|
||||
|
||||
@interface XPRoomGiftUserView : UIView
|
||||
|
||||
///
|
||||
@property (nonatomic,strong) NetImageView *avatarImageView;
|
||||
///
|
||||
@property (nonatomic,strong) UIImageView *boraderImageView;
|
||||
///
|
||||
@property (nonatomic,strong) UIButton *nickButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomGiftUserView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.avatarImageView];
|
||||
[self addSubview:self.boraderImageView];
|
||||
[self addSubview:self.nickButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.nickButton.mas_bottom);
|
||||
}];
|
||||
|
||||
|
||||
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.top.mas_equalTo(self);
|
||||
make.height.width.mas_equalTo(44 * kScreenScale);
|
||||
}];
|
||||
|
||||
[self.boraderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(51 * kScreenScale, 51 * kScreenScale));
|
||||
make.center.mas_equalTo(self.avatarImageView);
|
||||
}];
|
||||
|
||||
[self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(-8 * kScreenScale);
|
||||
make.size.mas_equalTo(CGSizeMake(66 * kScreenScale, 16 * kScreenScale));
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_avatarImageView.userInteractionEnabled = YES;
|
||||
_avatarImageView.layer.masksToBounds = YES;
|
||||
_avatarImageView.layer.cornerRadius = 44 * kScreenScale/2;
|
||||
}
|
||||
return _avatarImageView;
|
||||
}
|
||||
|
||||
- (UIImageView *)boraderImageView {
|
||||
if (!_boraderImageView) {
|
||||
_boraderImageView = [[UIImageView alloc] init];
|
||||
_boraderImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _boraderImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)nickButton {
|
||||
if (!_nickButton) {
|
||||
_nickButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_nickButton setTitleColor:[ThemeColor giftBroadcastNickColor] forState:UIControlStateNormal];
|
||||
_nickButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
||||
[_nickButton setBackgroundImage:[UIImage imageNamed:@"room_gift_broadcast_avatar_board"] forState:UIControlStateNormal];
|
||||
}
|
||||
return _nickButton;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface XPRoomGiftBroadcastView ()<XPRoomYearActivityViewDelegate>
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
///赠送者
|
||||
@property (nonatomic,strong) XPRoomGiftUserView *sendView;
|
||||
///赠送
|
||||
@property (nonatomic,strong) UIImageView *sendImageView;
|
||||
///接收者
|
||||
@property (nonatomic,strong) XPRoomGiftUserView *receiveView;
|
||||
///礼物
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///数量
|
||||
@property (nonatomic,strong) UILabel *countLabel;
|
||||
///关闭
|
||||
@property (nonatomic,strong) UIButton *closeButton;
|
||||
///房间iD
|
||||
@property (nonatomic,strong) UILabel *roomIdLabel;
|
||||
///庆典
|
||||
@property (nonatomic, strong) XPRoomYearActivityView *ceremonyView;
|
||||
@end
|
||||
|
||||
@implementation XPRoomGiftBroadcastView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
[self initEvents];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Response
|
||||
- (void)closeButtonAction:(UIButton *)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:didClickClose:)]) {
|
||||
[self.delegate xPRoomGiftBroadcastView:self didClickClose:self.broadcastModel];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)didClickEnterRoom {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:enterRoom:)]) {
|
||||
[self.delegate xPRoomGiftBroadcastView:self enterRoom:[NSString stringWithFormat:@"%ld", self.broadcastModel.roomUid]];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.backImageView];
|
||||
|
||||
[self.backImageView addSubview:self.closeButton];
|
||||
[self.backImageView addSubview:self.sendView];
|
||||
[self.backImageView addSubview:self.sendImageView];
|
||||
[self.backImageView addSubview:self.receiveView];
|
||||
[self.backImageView addSubview:self.giftImageView];
|
||||
[self.backImageView addSubview:self.countLabel];
|
||||
[self.backImageView addSubview:self.roomIdLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
CGFloat kscale = (CGFloat)125/ (CGFloat)345;
|
||||
CGFloat width = KScreenWidth - 30;
|
||||
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self).inset(15);
|
||||
make.top.mas_equalTo(self);
|
||||
make.height.mas_equalTo(width * kscale);
|
||||
}];
|
||||
|
||||
[self.sendView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.backImageView).offset(41 * kScreenScale);
|
||||
make.width.mas_equalTo(66 * kScreenScale);
|
||||
make.left.mas_equalTo(self.backImageView).offset(13 * kScreenScale);
|
||||
}];
|
||||
|
||||
[self.sendImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(30 * kScreenScale, 15 * kScreenScale));
|
||||
make.centerY.mas_equalTo(self.sendView);
|
||||
make.left.mas_equalTo(self.sendView.mas_right).offset(13 * kScreenScale);
|
||||
}];
|
||||
|
||||
[self.receiveView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.width.mas_equalTo(self.sendView);
|
||||
make.left.mas_equalTo(self.sendImageView.mas_right).offset(13 * kScreenScale);
|
||||
}];
|
||||
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(60 * kScreenScale, 60 * kScreenScale));
|
||||
make.centerY.mas_equalTo(self.sendView);
|
||||
make.left.mas_equalTo(self.receiveView.mas_right).offset(13 * kScreenScale);
|
||||
}];
|
||||
|
||||
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.giftImageView.mas_right).offset(13 * kScreenScale);
|
||||
make.centerY.mas_equalTo(self.sendView);
|
||||
}];
|
||||
|
||||
[self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(self.backImageView).offset(-3);
|
||||
make.top.mas_equalTo(13);
|
||||
make.size.mas_equalTo(CGSizeMake(28, 22));
|
||||
}];
|
||||
|
||||
[self.roomIdLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.backImageView);
|
||||
make.top.mas_equalTo(self.backImageView).offset(10);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)initEvents {
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickEnterRoom)];
|
||||
[self.backImageView addGestureRecognizer:tap];
|
||||
}
|
||||
|
||||
- (void)updateSubviews:(BroadCastLevel)level {
|
||||
NSString * nickBackImageName;
|
||||
UIColor * nickColor;
|
||||
NSString * bgImageName;
|
||||
switch (level) {
|
||||
case BroadCastLevel_Normal:
|
||||
{
|
||||
CGFloat kscale = (CGFloat)124/ (CGFloat)345;
|
||||
CGFloat width = KScreenWidth - 30;
|
||||
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(width * kscale);
|
||||
}];
|
||||
|
||||
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(14 * kScreenScale);
|
||||
}];
|
||||
nickBackImageName = @"room_gift_broadcast_normal_nick_bg";
|
||||
nickColor = [ThemeColor mainTextColor];
|
||||
bgImageName = @"room_gift_broadcast_low_bg";
|
||||
self.roomIdLabel.hidden = YES;
|
||||
}
|
||||
break;
|
||||
case BroadCastLevel_Middle:
|
||||
{
|
||||
CGFloat kscale = (CGFloat)120/ (CGFloat)345;
|
||||
CGFloat width = KScreenWidth - 30;
|
||||
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(width * kscale);
|
||||
}];;
|
||||
|
||||
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(11 * kScreenScale);
|
||||
}];
|
||||
|
||||
nickBackImageName = @"room_gift_broadcast_higher_nick_bg";
|
||||
nickColor = [ThemeColor giftBroadcastNickColor];
|
||||
bgImageName = @"room_gift_broadcast_middle_bg";
|
||||
self.roomIdLabel.hidden = YES;
|
||||
}
|
||||
break;
|
||||
case BroadCastLevel_High:
|
||||
{
|
||||
CGFloat kscale = (CGFloat)143/ (CGFloat)345;
|
||||
CGFloat width = KScreenWidth - 30;
|
||||
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(width * kscale);
|
||||
}];
|
||||
|
||||
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(33 * kScreenScale);
|
||||
}];
|
||||
|
||||
nickBackImageName = @"room_gift_broadcast_higher_nick_bg";
|
||||
nickColor = [ThemeColor giftBroadcastNickColor];
|
||||
bgImageName = @"room_gift_broadcast_high_bg";
|
||||
self.roomIdLabel.hidden = NO;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (nickBackImageName.length > 0) {
|
||||
[self.sendView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal];
|
||||
[self.receiveView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
if (nickColor) {
|
||||
[self.sendView.nickButton setTitleColor:nickColor forState:UIControlStateNormal];
|
||||
[self.receiveView.nickButton setTitleColor:nickColor forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
self.backImageView.image = [UIImage imageNamed:bgImageName];
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomYearActivityViewDelegate
|
||||
///点击了进入房间
|
||||
- (void)xPRoomYearActivityViewEnterRoom:(NSString *)roomUid {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:enterRoom:)]) {
|
||||
[self.delegate xPRoomGiftBroadcastView:self enterRoom:roomUid];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setBroadcastModel:(XPRoomGiftBroadCastModel *)broadcastModel {
|
||||
_broadcastModel = broadcastModel;
|
||||
if (_broadcastModel) {
|
||||
if (broadcastModel.sendUserNick.length > 6) {
|
||||
broadcastModel.sendUserNick = [broadcastModel.sendUserNick substringToIndex:6];
|
||||
}
|
||||
if(broadcastModel.ceremonyGift) {
|
||||
for (UIView *subView in self.subviews) {
|
||||
[subView removeFromSuperview];
|
||||
}
|
||||
[self addSubview:self.ceremonyView];
|
||||
CGFloat kscale = (CGFloat)90/ (CGFloat)375;
|
||||
CGFloat width = KScreenWidth;
|
||||
[self.ceremonyView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.top.right.mas_equalTo(self);
|
||||
make.height.mas_equalTo(width * kscale);
|
||||
}];
|
||||
self.ceremonyView.model = broadcastModel;
|
||||
return;
|
||||
}
|
||||
self.sendView.avatarImageView.imageUrl = broadcastModel.sendUserAvatar;
|
||||
[self.sendView.nickButton setTitle:broadcastModel.sendUserNick forState:UIControlStateNormal];
|
||||
|
||||
if (broadcastModel.recvUserNick.length > 6) {
|
||||
broadcastModel.recvUserNick = [broadcastModel.recvUserNick substringToIndex:6];
|
||||
}
|
||||
self.receiveView.avatarImageView.imageUrl = broadcastModel.recvUserAvatar;
|
||||
[self.receiveView.nickButton setTitle:broadcastModel.recvUserNick forState:UIControlStateNormal];
|
||||
|
||||
self.giftImageView.imageUrl = broadcastModel.giftUrl;
|
||||
self.countLabel.text = [NSString stringWithFormat:@"x%ld", broadcastModel.giftNum];
|
||||
self.roomIdLabel.text = [NSString stringWithFormat:@"ID:%@", broadcastModel.roomErbanNo];
|
||||
[self updateSubviews:broadcastModel.levelNum];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
}
|
||||
return _backImageView;
|
||||
}
|
||||
|
||||
- (XPRoomGiftUserView *)sendView {
|
||||
if (!_sendView) {
|
||||
_sendView = [[XPRoomGiftUserView alloc] init];
|
||||
}
|
||||
return _sendView;
|
||||
}
|
||||
|
||||
- (UIImageView *)sendImageView {
|
||||
if (!_sendImageView) {
|
||||
_sendImageView = [[UIImageView alloc] init];
|
||||
_sendImageView.userInteractionEnabled = YES;
|
||||
_sendImageView.image = [UIImage imageNamed:@"room_gift_broadcast_send"];
|
||||
}
|
||||
return _sendImageView;
|
||||
}
|
||||
|
||||
- (XPRoomGiftUserView *)receiveView {
|
||||
if (!_receiveView) {
|
||||
_receiveView = [[XPRoomGiftUserView alloc] init];
|
||||
}
|
||||
return _receiveView;
|
||||
}
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)countLabel {
|
||||
if (!_countLabel) {
|
||||
_countLabel = [[UILabel alloc] init];
|
||||
_countLabel.font = [UIFont fontWithName:@"PingFang-SC-Heavy" size:20];
|
||||
_countLabel.textColor = [ThemeColor giftBroadcastNumberColor];
|
||||
}
|
||||
return _countLabel;
|
||||
}
|
||||
|
||||
- (UIButton *)closeButton {
|
||||
if (!_closeButton) {
|
||||
_closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_closeButton setImage:[UIImage imageNamed:@"room_gift_broadcast_close"] forState:UIControlStateNormal];
|
||||
[_closeButton setImage:[UIImage imageNamed:@"room_gift_broadcast_close"] forState:UIControlStateSelected];
|
||||
[_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _closeButton;
|
||||
}
|
||||
|
||||
|
||||
- (UILabel *)roomIdLabel {
|
||||
if (!_roomIdLabel) {
|
||||
_roomIdLabel = [[UILabel alloc] init];
|
||||
_roomIdLabel.font = [UIFont systemFontOfSize:12];
|
||||
_roomIdLabel.textColor = [ThemeColor giftBroadcastNickColor];
|
||||
}
|
||||
return _roomIdLabel;
|
||||
}
|
||||
|
||||
- (XPRoomYearActivityView *)ceremonyView {
|
||||
if(!_ceremonyView) {
|
||||
_ceremonyView = [[XPRoomYearActivityView alloc] init];
|
||||
_ceremonyView.delegate = self;
|
||||
}
|
||||
return _ceremonyView;
|
||||
}
|
||||
|
||||
@end
|
@@ -25,7 +25,7 @@
|
||||
//公屏限制最大字数
|
||||
#define MAX_STARWORDS_LENGTH 300
|
||||
|
||||
@interface XPRoomSendTextView ()
|
||||
@interface XPRoomSendTextView ()<UITextFieldDelegate>
|
||||
///
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///输入框
|
||||
@@ -195,7 +195,10 @@
|
||||
self.sendButton.enabled = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
|
||||
[self.editTextFiled resignFirstResponder];
|
||||
return YES;
|
||||
}
|
||||
#pragma mark - Public Method
|
||||
+ (instancetype)showTextView:(UIView *)view delegate:(id<RoomHostDelegate>)delegate atUid:(NSString *)uid atNick:(NSString *)nick {
|
||||
__block XPRoomSendTextView * textView;
|
||||
@@ -263,8 +266,10 @@
|
||||
NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:@"请输入消息..." attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [ThemeColor secondTextColor]}];
|
||||
_editTextFiled.attributedPlaceholder = attribute;
|
||||
_editTextFiled.borderStyle = UITextBorderStyleNone;
|
||||
_editTextFiled.returnKeyType = UIReturnKeyDone;
|
||||
_editTextFiled.textColor = [ThemeColor alertTitleColor];
|
||||
_editTextFiled.font = [UIFont systemFontOfSize:15];
|
||||
_editTextFiled.delegate = self;
|
||||
[_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
|
||||
|
||||
}
|
||||
|
@@ -81,7 +81,7 @@
|
||||
|
||||
///是否已发送过收藏房间公屏消息
|
||||
@property (nonatomic, assign) BOOL hadShowCollectInScreen;
|
||||
|
||||
@property(nonatomic,strong) UIButton *clickBnt;
|
||||
@end
|
||||
|
||||
@implementation RoomHeaderView
|
||||
@@ -141,7 +141,7 @@
|
||||
// [self addSubview:self.backButton];
|
||||
[self addSubview:self.nickBgStackView];
|
||||
[self addSubview:self.settingButton];
|
||||
|
||||
|
||||
[self.nickBgStackView addArrangedSubview:self.avatarImageView];
|
||||
[self.nickBgStackView addArrangedSubview:self.nickStackView];
|
||||
[self.nickBgStackView addArrangedSubview:self.collectButton];
|
||||
@@ -157,7 +157,7 @@
|
||||
[self.titleStackView addArrangedSubview:self.titleLabel];
|
||||
[self.titleStackView addArrangedSubview:self.giftEffectImageView];
|
||||
[self.titleStackView addArrangedSubview:self.lockRoomImageView];
|
||||
|
||||
[self addSubview:self.clickBnt];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -210,6 +210,9 @@
|
||||
[self.lockRoomImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(10,10));
|
||||
}];
|
||||
[self.clickBnt mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.equalTo(self.onlineStackView);
|
||||
}];
|
||||
}
|
||||
#pragma mark - RoomGuestDelegate
|
||||
- (void)onRoomEntered {
|
||||
@@ -489,8 +492,7 @@
|
||||
_titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium];
|
||||
_titleLabel.textColor = [ThemeColor roomOwnerNickColor];
|
||||
_titleLabel.userInteractionEnabled = YES;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineTapRecognizer)];
|
||||
[_titleLabel addGestureRecognizer:tap];
|
||||
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
@@ -521,8 +523,7 @@
|
||||
_onlineStackView.distribution = UIStackViewDistributionFill;
|
||||
_onlineStackView.alignment = UIStackViewAlignmentCenter;
|
||||
_onlineStackView.spacing = 2;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineTapRecognizer)];
|
||||
[_onlineStackView addGestureRecognizer:tap];
|
||||
|
||||
}
|
||||
return _onlineStackView;
|
||||
}
|
||||
@@ -599,5 +600,11 @@
|
||||
}
|
||||
return _spaceView;
|
||||
}
|
||||
|
||||
- (UIButton *)clickBnt{
|
||||
if(!_clickBnt){
|
||||
_clickBnt = [UIButton new];
|
||||
[_clickBnt addTarget:self action:@selector(onlineTapRecognizer) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _clickBnt;
|
||||
}
|
||||
@end
|
||||
|
@@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (NSArray *)getRoomPKGroupTeamList;
|
||||
///房间内PK是否正在进行
|
||||
- (BOOL)isRoomPKPlaying;
|
||||
-(BOOL)getIsMiniEnter;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -78,6 +78,7 @@
|
||||
make.right.mas_equalTo(0);
|
||||
make.height.mas_equalTo(12);
|
||||
}];
|
||||
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setModel:(XPRoomRecommendModel *)model {
|
||||
|
@@ -74,6 +74,16 @@
|
||||
if (self) {
|
||||
_hostDelegate = delegate;
|
||||
_isMiniEnter = NO;
|
||||
[RtcManager instance].isMiniEnterk = self.hostDelegate.getIsMiniEnter;
|
||||
RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo;
|
||||
if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode ){
|
||||
if ([RtcManager instance].isAnckorPk == NO){
|
||||
if ([RtcManager instance].isMiniEnterk == NO){
|
||||
[RtcManager instance].localMuted = YES;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
NSInteger microCount = self.countOfMircoView;
|
||||
for (int i = 0; i < microCount; i++) {
|
||||
UIView* microView = [self microViewForIndex:i];
|
||||
@@ -255,7 +265,7 @@
|
||||
owner.uid = roomInfo.uid;
|
||||
owner.gender = roomInfo.gender;
|
||||
UIView<MicroViewProtocol> *ownerView = [self findMicroViewByIndex:0];
|
||||
[ownerView configUser:owner];
|
||||
[ownerView configUser:owner ];
|
||||
}
|
||||
|
||||
if (self.isMiniEnter || !isHandleRTC) {
|
||||
@@ -590,8 +600,19 @@
|
||||
sequence.userInfo = nil;
|
||||
}
|
||||
}
|
||||
|
||||
if (changeType == 1) { // 上麦
|
||||
RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo;
|
||||
if (changeType == 2){
|
||||
if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue && roomInfo.roomModeType == RoomModeType_Open_Blind){
|
||||
if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode){
|
||||
if ([RtcManager instance].isAnckorPk == NO){
|
||||
[RtcManager instance].localMuted = YES;
|
||||
|
||||
}
|
||||
|
||||
[RtcManager instance].isAnckorPk = NO;
|
||||
}
|
||||
}
|
||||
}else if (changeType == 1) { // 上麦
|
||||
MicroQueueModel *sequence = [self.micQueue objectForKey:position];
|
||||
sequence.userInfo = userInfo;
|
||||
if (self.hostDelegate.getRoomInfo.showGiftValue && userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {
|
||||
@@ -617,7 +638,19 @@
|
||||
}
|
||||
//如果是当前用户上麦,关闭自己的麦克风
|
||||
if (sequence && sequence.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue && userInfo.isNoProhibitMic == NO) {
|
||||
[RtcManager instance].localMuted = YES;
|
||||
if (roomInfo.roomModeType != RoomModeType_Open_Blind){
|
||||
if (userInfo.isNoProhibitMic == NO){
|
||||
if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode){
|
||||
if ([RtcManager instance].isMiniEnterk == NO){
|
||||
[RtcManager instance].localMuted = YES;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[RtcManager instance].isMiniEnterk = NO;
|
||||
});
|
||||
}
|
||||
}
|
||||
if(userInfo.isNoProhibitMic == YES){
|
||||
|
@@ -239,8 +239,16 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
|
||||
}
|
||||
|
||||
}
|
||||
- (void)viewDidAppear:(BOOL)animated{
|
||||
[super viewDidAppear:animated];
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
|
||||
}
|
||||
- (void)viewDidDisappear:(BOOL)animated{
|
||||
[super viewDidDisappear:animated];
|
||||
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.view.backgroundColor = [UIColor clearColor];
|
||||
@@ -254,6 +262,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
[self.view addSubview:self.roomHeaderView];
|
||||
[self.view addSubview:self.functionView];
|
||||
[self.view addSubview:self.animationView];
|
||||
// id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
|
||||
// UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:traget action:nil];
|
||||
// [self.view addGestureRecognizer:pan];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -1641,7 +1652,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight);
|
||||
}
|
||||
}
|
||||
|
||||
-(BOOL)getIsMiniEnter{
|
||||
return self.isMiniEnter;
|
||||
}
|
||||
#pragma mark - XPRoomSettingInputViewDelegate
|
||||
///点击了完成
|
||||
- (void)xPRoomSettingInputView:(XPRoomSettingInputView *)view didClickConfirm:(NSString *)text type:(RoomSettingInputType)type {
|
||||
|
@@ -34,6 +34,7 @@
|
||||
#import "XPAdImageTool.h"
|
||||
#import "YYUtility.h"
|
||||
#import "NSMutableDictionary+Saft.h"
|
||||
#import "UploadFile.h"
|
||||
///Model
|
||||
#import "AccountModel.h"
|
||||
#import "RoomInfoModel.h"
|
||||
@@ -200,6 +201,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
- (void)autoLoginSuccess {
|
||||
[self.presenter loginNIM];
|
||||
[self.presenter getUserInfo];
|
||||
[[UploadFile share]initQCloud];
|
||||
///登录成功之后 在验证是否有漏单的行为
|
||||
[self.presenter checkTranscation];
|
||||
///检查更新
|
||||
|