diff --git a/Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/xcschememanagement.plist
index b19d11a..43abbe3 100644
--- a/Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/Pods/Pods.xcodeproj/xcuserdata/qixing.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -8,428 +8,306 @@
isShown
- orderHint
- 2
AgoraComponetLog.xcscheme
isShown
- orderHint
- 3
AgoraInfra_iOS.xcscheme
isShown
- orderHint
- 4
AgoraLyricsScore-AgoraLyricsScoreBundle.xcscheme
isShown
- orderHint
- 6
AgoraLyricsScore.xcscheme
isShown
- orderHint
- 5
AgoraRtcEngine_iOS.xcscheme
isShown
- orderHint
- 7
AlipaySDK-iOS.xcscheme
isShown
- orderHint
- 8
AliyunOSSiOS-AliyunOSSiOS_Privacy.xcscheme
isShown
- orderHint
- 10
AliyunOSSiOS.xcscheme
isShown
- orderHint
- 9
AvoidCrash.xcscheme
isShown
- orderHint
- 11
BRPickerView-BRPickerView.Privacy.xcscheme
isShown
- orderHint
- 13
BRPickerView.xcscheme
isShown
- orderHint
- 12
Bugly.xcscheme
isShown
- orderHint
- 14
FMDB-FMDB_Privacy.xcscheme
isShown
- orderHint
- 16
FMDB.xcscheme
isShown
- orderHint
- 15
JXCategoryView-JXCategoryView.xcscheme
isShown
- orderHint
- 18
JXCategoryView.xcscheme
isShown
- orderHint
- 17
JXPagingView-JXPagerView.xcscheme
isShown
- orderHint
- 20
JXPagingView.xcscheme
isShown
- orderHint
- 19
LLDebugTool.xcscheme
isShown
- orderHint
- 22
MBProgressHUD.xcscheme
isShown
- orderHint
- 24
MJRefresh-MJRefresh.Privacy.xcscheme
isShown
- orderHint
- 26
MJRefresh.xcscheme
isShown
- orderHint
- 25
MQTTClient.xcscheme
isShown
- orderHint
- 27
Masonry.xcscheme
isShown
- orderHint
- 23
Pods-QXLive.xcscheme
isShown
- orderHint
- 28
Pods-QXLiveDev.xcscheme
isShown
- orderHint
- 29
Protobuf-Protobuf_Privacy.xcscheme
isShown
- orderHint
- 31
Protobuf.xcscheme
isShown
- orderHint
- 30
QGVAPlayer.xcscheme
isShown
- orderHint
- 32
ReactiveObjC.xcscheme
isShown
- orderHint
- 33
SDCycleScrollView.xcscheme
isShown
- orderHint
- 34
SDWebImage-SDWebImage.xcscheme
isShown
- orderHint
- 36
SDWebImage.xcscheme
isShown
- orderHint
- 35
SDWebImageWebPCoder.xcscheme
isShown
- orderHint
- 37
SSZipArchive.xcscheme
isShown
- orderHint
- 38
SVGAPlayer.xcscheme
isShown
- orderHint
- 39
TIMCommon-TIMCommon_Privacy.xcscheme
isShown
- orderHint
- 42
TIMCommon.xcscheme
isShown
- orderHint
- 41
TIMPush-TIMPush_Privacy.xcscheme
isShown
- orderHint
- 44
TIMPush.xcscheme
isShown
- orderHint
- 43
TUIChat-TUIChat_Privacy.xcscheme
isShown
- orderHint
- 46
TUIChat.xcscheme
isShown
- orderHint
- 45
TUIConversation-TUIConversation_Privacy.xcscheme
isShown
- orderHint
- 48
TUIConversation.xcscheme
isShown
- orderHint
- 47
TUICore-TUICore_Privacy.xcscheme
isShown
- orderHint
- 50
TUICore.xcscheme
isShown
- orderHint
- 49
TXIMSDK_Plus_iOS_XCFramework-TXIMSDK_Plus_iOS_XCFramework_Privacy.xcscheme
isShown
- orderHint
- 52
TXIMSDK_Plus_iOS_XCFramework.xcscheme
isShown
- orderHint
- 51
TZImagePickerController.xcscheme
isShown
- orderHint
- 53
TencentCloudHuiyanSDKFace_framework.xcscheme
isShown
- orderHint
- 40
WechatOpenSDK-XCFramework.xcscheme
isShown
- orderHint
- 54
YBImageBrowser.xcscheme
isShown
- orderHint
- 55
YYCache.xcscheme
isShown
- orderHint
- 56
YYCategories.xcscheme
isShown
- orderHint
- 57
YYImage.xcscheme
isShown
- orderHint
- 58
YYModel.xcscheme
isShown
- orderHint
- 59
YYText.xcscheme
isShown
- orderHint
- 60
YYWebImage.xcscheme
isShown
- orderHint
- 61
Zip.xcscheme
isShown
- orderHint
- 62
libwebp.xcscheme
isShown
- orderHint
- 21
SuppressBuildableAutocreation
diff --git a/QXLive.xcodeproj/project.pbxproj b/QXLive.xcodeproj/project.pbxproj
index f6b5841..24b83d9 100644
--- a/QXLive.xcodeproj/project.pbxproj
+++ b/QXLive.xcodeproj/project.pbxproj
@@ -7,14 +7,15 @@
objects = {
/* Begin PBXBuildFile section */
- 78070522CA904B290E0D5B8D /* (null) in Frameworks */ = {isa = PBXBuildFile; };
+ 95946C092E56B76F00ECFA94 /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95946C082E56B76F00ECFA94 /* Pods_QXLive.framework */; };
+ 95946C0B2E56B78700ECFA94 /* Pods_QXLiveDev.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95946C0A2E56B78700ECFA94 /* Pods_QXLiveDev.framework */; };
+ 95946C0C2E56B9FA00ECFA94 /* QXLiveScreenDev.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
95C29E9E2E19166700F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
95C29EA62E19166700F2524D /* QXLiveScreen.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C29E9D2E19166700F2524D /* QXLiveScreen.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
95C29EAB2E19173300F2524D /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
95C327442E4C4068004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
95C327452E4C4068004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
- 95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 95C3274A2E4C4068004B2D82 /* QXLiveScreenDev.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C2925B2E18BBF800F2524D /* ReplayKit.framework */; };
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
@@ -23,10 +24,6 @@
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
- 95C3EFF72E49F44A004B2D82 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
- 95C3EFF82E49F44A004B2D82 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
- 95C3EFF92E49F44A004B2D82 /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */; };
- 95C3F2602E49F6E7004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */; };
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FA2DEF0AA10031E710 /* Security.framework */; };
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FC2DEF0AAC0031E710 /* libiconv.tbd */; };
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F204FE2DEF0AB20031E710 /* SystemConfiguration.framework */; };
@@ -34,8 +31,6 @@
95F205032DEF0ABD0031E710 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205022DEF0ABD0031E710 /* libsqlite3.tbd */; };
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205042DEF0AC20031E710 /* CoreTelephony.framework */; };
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F205062DEF0AD20031E710 /* libz.tbd */; };
- A1B3F48CEADC04AE7D5AE48B /* Pods_QXLive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */; };
- C5F9FD21F2F63A6022CAAF48 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -53,6 +48,13 @@
remoteGlobalIDString = 9593D7162DB9C95C0082CA57;
remoteInfo = QXLive;
};
+ 95946C0D2E56BA0000ECFA94 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 95C327412E4C4068004B2D82;
+ remoteInfo = QXLiveScreenDev;
+ };
95C29EA42E19166700F2524D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
@@ -60,13 +62,6 @@
remoteGlobalIDString = 95C29E9C2E19166700F2524D;
remoteInfo = QXLiveScreen;
};
- 95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 9593D70F2DB9C95C0082CA57 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 95C327412E4C4068004B2D82;
- remoteInfo = QXLiveScreenDev;
- };
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -87,7 +82,7 @@
dstPath = "";
dstSubfolderSpec = 13;
files = (
- 95C327502E4C40AB004B2D82 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
+ 95946C0C2E56B9FA00ECFA94 /* QXLiveScreenDev.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
@@ -97,9 +92,16 @@
/* Begin PBXFileReference section */
2D163E917E90CDC07837F1A7 /* Pods_QXLiveDev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLiveDev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7270179B583CF68223E0AC0A /* Pods-QXLiveDev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.debug.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.debug.xcconfig"; sourceTree = ""; };
+ 9537146C2E56B56C00569E1E /* CoreAudioTypes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioTypes.framework; path = System/Library/Frameworks/CoreAudioTypes.framework; sourceTree = SDKROOT; };
+ 9537146F2E56B59100569E1E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+ 953714712E56B59B00569E1E /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
+ 953714732E56B5BA00569E1E /* libswiftCoreAudio.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftCoreAudio.tbd; path = usr/lib/swift/libswiftCoreAudio.tbd; sourceTree = SDKROOT; };
9593D7172DB9C95C0082CA57 /* QXLive.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QXLive.app; sourceTree = BUILT_PRODUCTS_DIR; };
9593D7322DB9C95E0082CA57 /* QXLiveTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
9593D73C2DB9C95E0082CA57 /* QXLiveUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QXLiveUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 959466212E56B6E500ECFA94 /* Pods_QXLiveDev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_QXLiveDev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 95946C082E56B76F00ECFA94 /* Pods_QXLive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_QXLive.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 95946C0A2E56B78700ECFA94 /* Pods_QXLiveDev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_QXLiveDev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
95C2925B2E18BBF800F2524D /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
95C292682E18BBF800F2524D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
95C292A42E18ED0C00F2524D /* AgoraReplayKitExtension.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = AgoraReplayKitExtension.xcframework; path = Pods/AgoraRtcEngine_iOS/AgoraReplayKitExtension.xcframework; sourceTree = ""; };
@@ -118,7 +120,6 @@
95F205022DEF0ABD0031E710 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
95F205042DEF0AC20031E710 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
95F205062DEF0AD20031E710 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
- 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_QXLive.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C9712338C60B86BE40C57C07 /* Pods-QXLiveDev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLiveDev.release.xcconfig"; path = "Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev.release.xcconfig"; sourceTree = ""; };
DB46C80395B0DD337551A591 /* Pods-QXLive.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.release.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.release.xcconfig"; sourceTree = ""; };
F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QXLive.debug.xcconfig"; path = "Target Support Files/Pods-QXLive/Pods-QXLive.debug.xcconfig"; sourceTree = ""; };
@@ -152,14 +153,6 @@
membershipExceptions = (
Info.plist,
Other/Info.plist,
- Other/QXHelper.swift,
- );
- target = 95C3EFE92E49F44A004B2D82 /* QXLiveDev */;
- };
- 95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */ = {
- isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
- membershipExceptions = (
- SampleHandler.m,
);
target = 95C3EFE92E49F44A004B2D82 /* QXLiveDev */;
};
@@ -189,7 +182,6 @@
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
95C29EAA2E19166700F2524D /* Exceptions for "QXLiveScreen" folder in "QXLiveScreen" target */,
- 95C3F25C2E49F646004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveDev" target */,
95C3274B2E4C4068004B2D82 /* Exceptions for "QXLiveScreen" folder in "QXLiveScreenDev" target */,
);
path = QXLiveScreen;
@@ -202,6 +194,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 95946C092E56B76F00ECFA94 /* Pods_QXLive.framework in Frameworks */,
95C29EAD2E191D6800F2524D /* ReplayKit.framework in Frameworks */,
95F205072DEF0AD20031E710 /* libz.tbd in Frameworks */,
95F205052DEF0AC20031E710 /* CoreTelephony.framework in Frameworks */,
@@ -210,9 +203,6 @@
95F204FF2DEF0AB20031E710 /* SystemConfiguration.framework in Frameworks */,
95F204FD2DEF0AAC0031E710 /* libiconv.tbd in Frameworks */,
95F204FB2DEF0AA10031E710 /* Security.framework in Frameworks */,
- 78070522CA904B290E0D5B8D /* (null) in Frameworks */,
- C5F9FD21F2F63A6022CAAF48 /* (null) in Frameworks */,
- A1B3F48CEADC04AE7D5AE48B /* Pods_QXLive.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -252,7 +242,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 95C3F2602E49F6E7004B2D82 /* AgoraReplayKitExtension.xcframework in Frameworks */,
+ 95946C0B2E56B78700ECFA94 /* Pods_QXLiveDev.framework in Frameworks */,
95C3EFEF2E49F44A004B2D82 /* ReplayKit.framework in Frameworks */,
95C3EFF02E49F44A004B2D82 /* libz.tbd in Frameworks */,
95C3EFF12E49F44A004B2D82 /* CoreTelephony.framework in Frameworks */,
@@ -261,9 +251,6 @@
95C3EFF42E49F44A004B2D82 /* SystemConfiguration.framework in Frameworks */,
95C3EFF52E49F44A004B2D82 /* libiconv.tbd in Frameworks */,
95C3EFF62E49F44A004B2D82 /* Security.framework in Frameworks */,
- 95C3EFF72E49F44A004B2D82 /* (null) in Frameworks */,
- 95C3EFF82E49F44A004B2D82 /* (null) in Frameworks */,
- 95C3EFF92E49F44A004B2D82 /* Pods_QXLive.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -284,6 +271,13 @@
4B6F40DB8328A2B2BB1BF79D /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 95946C0A2E56B78700ECFA94 /* Pods_QXLiveDev.framework */,
+ 95946C082E56B76F00ECFA94 /* Pods_QXLive.framework */,
+ 959466212E56B6E500ECFA94 /* Pods_QXLiveDev.framework */,
+ 953714732E56B5BA00569E1E /* libswiftCoreAudio.tbd */,
+ 953714712E56B59B00569E1E /* CoreAudioKit.framework */,
+ 9537146F2E56B59100569E1E /* CoreAudio.framework */,
+ 9537146C2E56B56C00569E1E /* CoreAudioTypes.framework */,
95C292AE2E18ED6300F2524D /* Accelerate.framework */,
95C292AB2E18ED4A00F2524D /* MetalKit.framework */,
95C292A92E18ED3C00F2524D /* libc++.tbd */,
@@ -299,7 +293,6 @@
2D163E917E90CDC07837F1A7 /* Pods_QXLiveDev.framework */,
95C2925B2E18BBF800F2524D /* ReplayKit.framework */,
95C292682E18BBF800F2524D /* UIKit.framework */,
- 98CA0F917710DFFD98725970 /* Pods_QXLive.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -456,7 +449,7 @@
buildRules = (
);
dependencies = (
- 95C3274F2E4C4099004B2D82 /* PBXTargetDependency */,
+ 95946C0E2E56BA0000ECFA94 /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
9593D7192DB9C95C0082CA57 /* QXLive */,
@@ -618,7 +611,7 @@
outputFileListPaths = (
);
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-QXLive-checkManifestLockResult.txt",
+ "$(DERIVED_FILE_DIR)/Pods-QXLiveDev-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -631,15 +624,15 @@
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-frameworks.sh\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
95C3EFFC2E49F44A004B2D82 /* [CP] Copy Pods Resources */ = {
@@ -648,15 +641,15 @@
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources-${CONFIGURATION}-input-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources-${CONFIGURATION}-output-files.xcfilelist",
+ "${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLive/Pods-QXLive-resources.sh\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-QXLiveDev/Pods-QXLiveDev-resources.sh\"\n";
showEnvVarsInLog = 0;
};
E69B725D5CF59CD6582C8AA8 /* [CP] Embed Pods Frameworks */ = {
@@ -734,16 +727,16 @@
target = 9593D7162DB9C95C0082CA57 /* QXLive */;
targetProxy = 9593D73D2DB9C95E0082CA57 /* PBXContainerItemProxy */;
};
+ 95946C0E2E56BA0000ECFA94 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
+ targetProxy = 95946C0D2E56BA0000ECFA94 /* PBXContainerItemProxy */;
+ };
95C29EA52E19166700F2524D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 95C29E9C2E19166700F2524D /* QXLiveScreen */;
targetProxy = 95C29EA42E19166700F2524D /* PBXContainerItemProxy */;
};
- 95C3274F2E4C4099004B2D82 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 95C327412E4C4068004B2D82 /* QXLiveScreenDev */;
- targetProxy = 95C3274E2E4C4099004B2D82 /* PBXContainerItemProxy */;
- };
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
@@ -1158,7 +1151,7 @@
};
95C3F0002E49F44A004B2D82 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = F5E37D2ED830731B446A7058 /* Pods-QXLive.debug.xcconfig */;
+ baseConfigurationReference = 7270179B583CF68223E0AC0A /* Pods-QXLiveDev.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@@ -1200,6 +1193,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SDKROOT)/usr/lib/swift",
+ );
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1218,7 +1215,7 @@
};
95C3F0012E49F44A004B2D82 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = DB46C80395B0DD337551A591 /* Pods-QXLive.release.xcconfig */;
+ baseConfigurationReference = C9712338C60B86BE40C57C07 /* Pods-QXLiveDev.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@@ -1260,6 +1257,10 @@
"$(inherited)",
"@executable_path/Frameworks",
);
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SDKROOT)/usr/lib/swift",
+ );
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive.test;
PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/UserInterfaceState.xcuserstate b/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/UserInterfaceState.xcuserstate
index 97baae5..64f95ff 100644
Binary files a/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/UserInterfaceState.xcuserstate and b/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 70fa8eb..b84a6f9 100644
--- a/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/QXLive.xcworkspace/xcuserdata/qixing.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -26,8 +26,8 @@
filePath = "QXLive/Config/QXRoomMessageManager.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "627"
- endingLineNumber = "627"
+ startingLineNumber = "680"
+ endingLineNumber = "680"
landmarkName = "-sendC2CMessage:messageType:userId:"
landmarkType = "7">
@@ -179,48 +179,32 @@
-
-
-
-
diff --git a/QXLive/Base/QXGlobal.h b/QXLive/Base/QXGlobal.h
index 8c05d2b..2d70eef 100644
--- a/QXLive/Base/QXGlobal.h
+++ b/QXLive/Base/QXGlobal.h
@@ -15,16 +15,6 @@
typedef void (^closeBlock)(void);
typedef void (^showFinishBlock)(void);
-typedef NS_ENUM(NSInteger) {
- /// 房主
- QXRoomRoleTypeOwner = 0,
- /// 主持
- QXRoomRoleTypeCompere,
- /// 管理员
- QXRoomRoleTypeManager,
- /// 观众
- QXRoomRoleTypeAudience,
-}QXRoomRoleType;
@interface QXGlobal : NSObject
diff --git a/QXLive/Base/QXGlobal.m b/QXLive/Base/QXGlobal.m
index 66f9604..f024fe0 100644
--- a/QXLive/Base/QXGlobal.m
+++ b/QXLive/Base/QXGlobal.m
@@ -263,6 +263,9 @@
[[QXAgoraEngine sharedEngine] destroyEngine];
/// 退出直播群
[[QXRoomMessageManager shared] quitGroupWithRoomId:roomId];
+ if (_roomVC) {
+ [_roomVC.seatContentView destroyViews];
+ }
self.roomId = nil;
_roomVC = nil;
/// 业务http退出
diff --git a/QXLive/Config/QXRoomMessageManager.h b/QXLive/Config/QXRoomMessageManager.h
index b50bc01..2bcd6df 100644
--- a/QXLive/Config/QXRoomMessageManager.h
+++ b/QXLive/Config/QXRoomMessageManager.h
@@ -8,6 +8,7 @@
#import
#import "QXRoomChatListView.h"
#import "QXRoomModel.h"
+#import "QXRoomFriendRelationModel.h"
typedef NS_ENUM(NSInteger) {
/// 清空消息
@@ -98,6 +99,21 @@ typedef NS_ENUM(NSInteger) {
QXRoomMessageTypeRoomBlindBox = 1038,
/// 房间已被封禁
QXRoomMessageTypeRoomDidFire = 1039,
+
+ /// 交友房阶段发生变化
+ QXRoomMessageTypeRoomFriendPartDidChanged = 1049,
+ /// 交友房时间发生延时
+ QXRoomMessageTypeRoomFriendDelayTime = 1050,
+ /// 交友房卡关系完成
+ QXRoomMessageTypeRoomFriendCreateRelation = 1051,
+ /// 私密小屋结束时间发生延时
+ QXRoomMessageTypeCabinTimeDelay = 1052,
+ /// 麦位发生变化
+ QXRoomMessageTypeSeatDidChanged = 1053,
+ /// 心动值发生变化
+ QXRoomMessageTypeHeartDidChanged = 1054,
+ /// 交友房私密小屋有人退出房间
+ QXRoomMessageTypeFriendRoomQuit = 1055,
}QXRoomMessageType;
NS_ASSUME_NONNULL_BEGIN
@protocol QXRoomMessageManagerDelegate
@@ -195,7 +211,23 @@ NS_ASSUME_NONNULL_BEGIN
/// 查询用户状态
--(void)getUserStatusWithUsers:(NSArray *)users;
+//-(void)getUserStatusWithUsers:(NSArray *)users;
+
+/// 交友房
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(QXRoomFriendRelationModel*)relationModel;
+/// 交友房时间发生延时 end_time 截止时间
+-(void)friendTimeDelayWithTime:(NSString*)end_time;
+/// 交友房麦位发生变化
+-(void)friendSeatDidChanged:(NSArray*)pitArray;
+/// 心动值发生变化
+-(void)friendHeartNumberDidChanged:(NSArray*)heartArray;
+/// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel;
+/// 有人退出交友房私密小屋
+-(void)friendCabinRoomIsQuit;
+/// 私密小屋时间发生延时
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time;
@end
@interface QXRoomMessageManager : NSObject
diff --git a/QXLive/Config/QXRoomMessageManager.m b/QXLive/Config/QXRoomMessageManager.m
index 604b59c..56a25c7 100644
--- a/QXLive/Config/QXRoomMessageManager.m
+++ b/QXLive/Config/QXRoomMessageManager.m
@@ -486,7 +486,7 @@
case QXRoomMessageTypeRoomBlindBox:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
- model.messageType = QXRoomChatMessageTypeChat;
+ model.messageType = QXRoomChatMessageTypeGift;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
[self.delegate didInsertMessge:model];
}
@@ -498,6 +498,59 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(roomUserInfoDidChanged:)]) {
[self.delegate roomUserInfoDidChanged:model.FromUserInfo];
}
+ }
+ break;
+ /// 交友房
+ case QXRoomMessageTypeRoomFriendPartDidChanged:{
+ QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendPartDidChangedWithType:friend_id:end_time:relationModel:)]) {
+ [self.delegate friendPartDidChangedWithType:model.step friend_id:model.friend_id end_time:model.end_time relationModel:model.friend_user];
+ }
+ if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
+ model.messageType = QXRoomChatMessageTypeSystem;
+ [self.delegate didInsertMessge:model];
+ }
+ }
+ break;
+ case QXRoomMessageTypeRoomFriendDelayTime:{
+ NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"end_time"]];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendTimeDelayWithTime:)]) {
+ [self.delegate friendTimeDelayWithTime:end_time];
+ }
+ }
+ break;
+ case QXRoomMessageTypeSeatDidChanged:{
+ NSArray *pitArray = [NSArray yy_modelArrayWithClass:[QXRoomPitModel class] json:msg.Text[@"list"]];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendSeatDidChanged:)]) {
+ [self.delegate friendSeatDidChanged:pitArray];
+ }
+ }
+ break;
+ case QXRoomMessageTypeHeartDidChanged:{
+ NSArray *heartArray = [NSArray yy_modelArrayWithClass:[QXRoomFriendHeartListModel class] json:msg.Text[@"list"]];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendHeartNumberDidChanged:)]) {
+ [self.delegate friendHeartNumberDidChanged:heartArray];
+ }
+ }
+ break;
+ case QXRoomMessageTypeRoomFriendCreateRelation:{
+ QXRoomFriendRelationModel *relationModel = [QXRoomFriendRelationModel yy_modelWithJSON:msg.Text[@"relation"]];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendRelationIsCreatedWithrelationModel:)]) {
+ [self.delegate friendRelationIsCreatedWithrelationModel:relationModel];
+ }
+ }
+ break;
+ case QXRoomMessageTypeFriendRoomQuit:{
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendCabinRoomIsQuit)]) {
+ [self.delegate friendCabinRoomIsQuit];
+ }
+ }
+ break;
+ case QXRoomMessageTypeCabinTimeDelay:{
+ NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"time_day"]];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendCabinRoomTimeDelayWithTime:)]) {
+ [self.delegate friendCabinRoomTimeDelayWithTime:end_time];
+ }
}
break;
default:
diff --git a/QXLive/Dynamic(语圈)/View/QXSendGiftView.h b/QXLive/Dynamic(语圈)/View/QXSendGiftView.h
index 0fce55d..2e3119e 100644
--- a/QXLive/Dynamic(语圈)/View/QXSendGiftView.h
+++ b/QXLive/Dynamic(语圈)/View/QXSendGiftView.h
@@ -18,6 +18,8 @@ typedef NS_ENUM(NSInteger) {
QXSendGiftViewTypeRoom ,
/// 拍卖
QXSendGiftViewTypeAuction ,
+ /// 交友房
+ QXSendGiftViewTypeFriend ,
}QXSendGiftViewType;
NS_ASSUME_NONNULL_BEGIN
@@ -41,10 +43,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString* dynamicId;
/// 拍卖id
@property (nonatomic,strong)NSString* auctionId;
+/// 交友房助力id
+@property (nonatomic,strong)NSString* heartId;
@property (nonatomic,copy)void(^sendSuccessBlock)(NSString*dynamicId);
-@property (nonatomic,copy)void(^roomSendSuccessBlock)(BOOL isAuction, QXGiftModel*giftModel,NSString*userId, NSString*auctionId);
+@property (nonatomic,copy)void(^roomSendSuccessBlock)(QXSendGiftViewType sendType, QXGiftModel*giftModel,NSString*userId, NSString*optionId);
-(void)reloadData;
-(void)showInView:(UIView *)view;
@@ -107,9 +111,10 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)UIButton *sendBtn;
@property (nonatomic,strong)QXGiftModel *giftModel;
-@property (nonatomic,assign)BOOL isAuction;
+@property (nonatomic,assign)QXSendGiftViewType sendType;
@property (nonatomic,strong)NSString *userId;
@property (nonatomic,strong)NSString *auctionId;
+@property (nonatomic,strong)NSString *heartId;
@property (nonatomic,strong)NSString *roomId;
@property (nonatomic,strong)CABasicAnimation *animation;
diff --git a/QXLive/Dynamic(语圈)/View/QXSendGiftView.m b/QXLive/Dynamic(语圈)/View/QXSendGiftView.m
index 79c3650..671559c 100644
--- a/QXLive/Dynamic(语圈)/View/QXSendGiftView.m
+++ b/QXLive/Dynamic(语圈)/View/QXSendGiftView.m
@@ -100,7 +100,8 @@
}
break;
case QXSendGiftViewTypeRoom:
- case QXSendGiftViewTypeAuction:{
+ case QXSendGiftViewTypeAuction:
+ case QXSendGiftViewTypeFriend:{
if (_userListView) {
[_userListView removeFromSuperview];
_userListView = nil;
@@ -295,28 +296,44 @@
showToast(@"请选择送礼对象");
return;
}
+ self.heartId = @"";
+ self.auctionId = @"";
/// 2为背包
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
- [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
+ [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
[weakSelf hide];
if (weakSelf.roomSendSuccessBlock) {
- weakSelf.roomSendSuccessBlock(NO,weakSelf.giftModel,userId,@"");
+ weakSelf.roomSendSuccessBlock(self.type,weakSelf.giftModel,userId,@"");
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg)
}];
}else if (self.type == QXSendGiftViewTypeAuction) {
+ self.heartId = @"";
/// 2为背包
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
[QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:[QXGlobal shareGlobal].loginModel.user_id gift_id:self.giftModel.gift_id num:self.giftCount type:type successBlock:^(NSDictionary * _Nonnull dict) {
[weakSelf hide];
if (weakSelf.roomSendSuccessBlock) {
- weakSelf.roomSendSuccessBlock(YES,weakSelf.giftModel,[QXGlobal shareGlobal].loginModel.user_id,weakSelf.auctionId);
+ weakSelf.roomSendSuccessBlock(self.type,weakSelf.giftModel,[QXGlobal shareGlobal].loginModel.user_id,weakSelf.auctionId);
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
+ }else if (self.type == QXSendGiftViewTypeFriend) {
+ self.auctionId = @"";
+ /// 2为背包
+ NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
+ NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
+ [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
+ [weakSelf hide];
+ if (weakSelf.roomSendSuccessBlock) {
+ weakSelf.roomSendSuccessBlock(self.type,weakSelf.giftModel,userId,weakSelf.heartId);
+ }
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg)
+ }];
}else{
/// 2为背包
NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
@@ -996,20 +1013,31 @@
_animation = nil;
[self.circleLayer addAnimation:self.animation forKey:@"circleAnimation"];
[[QXGlobal shareGlobal] vibrationFeedback];
- if (self.isAuction) {
- [QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:self.userId gift_id:self.giftModel.gift_id num:@"1" type:@"1" successBlock:^(NSDictionary * _Nonnull dict) {
-
- } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
- showToast(msg)
- }];
- }else{
- [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:@"1" to_uid:self.userId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
-
- } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
- showToast(msg)
- }];
- }
-
+ switch (self.sendType) {
+ case QXSendGiftViewTypeRoom:
+ [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:@"1" to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg)
+ }];
+ break;
+ case QXSendGiftViewTypeAuction:
+ [QXMineNetwork roomAuctionJoinWithAuctionId:self.auctionId user_id:self.userId gift_id:self.giftModel.gift_id num:@"1" type:@"1" successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg)
+ }];
+ break;
+ case QXSendGiftViewTypeFriend:
+ [QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:@"1" to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg)
+ }];
+ break;
+ default:
+ break;
+ }
}
-(CABasicAnimation *)animation{
if (!_animation) {
diff --git a/QXLive/HomePage(声播)/Controlller/QXRankHomeSubVC.m b/QXLive/HomePage(声播)/Controlller/QXRankHomeSubVC.m
index c4e82cd..55c41d1 100644
--- a/QXLive/HomePage(声播)/Controlller/QXRankHomeSubVC.m
+++ b/QXLive/HomePage(声播)/Controlller/QXRankHomeSubVC.m
@@ -15,6 +15,7 @@
#import "QXRankCPListCell.h"
#import "QXRankCPTopThreeView.h"
#import "QXHomePageNetwork.h"
+#import "QXUserHomePageViewController.h"
@interface QXRankHomeSubVC ()
@property (nonatomic,strong)QXRankTypeView *rankTypeView;
@@ -189,6 +190,19 @@
}
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
+ QXMyRankModel *model = self.dataArray[indexPath.row];
+// if (self.rankType == 0) {
+// if ([model.room_id isExist]) {
+// [[QXGlobal shareGlobal] joinRoomWithRoomId:model.room_id isRejoin:NO navagationController:self.navigationController];
+// }
+// return;
+// }
+ if (self.rankType == 1 || self.rankType == 2) {
+ QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
+ vc.user_id = model.user_id;
+ [self.navigationController pushViewController:vc animated:YES];
+ return;
+ }
// if (self.rankType != 4) {//CP
// QXHomeRoomListModel *model = self.dataArray[indexPath.row];
// SRPersonalViewController *pvc = [[SRPersonalViewController alloc] initWithUserId:[model.user_id longLongValue]];
diff --git a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.h b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.h
new file mode 100644
index 0000000..bffa268
--- /dev/null
+++ b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.h
@@ -0,0 +1,22 @@
+//
+// QXRoomViewController+Friend.h
+// QXLive
+//
+// Created by 启星 on 2025/8/20.
+//
+
+#import "QXRoomViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface QXRoomViewController (Friend)
+/// 重置麦位视图
+-(void)resetFriendViews;
+
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+//-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id;
+///// 交友房时间发生延时 end_time 截止时间
+//-(void)friendTimeDelayWithTime:(NSString*)end_time;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.m b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.m
new file mode 100644
index 0000000..e8a9ec5
--- /dev/null
+++ b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController+Friend.m
@@ -0,0 +1,87 @@
+//
+// QXRoomViewController+Friend.m
+// QXLive
+//
+// Created by 启星 on 2025/8/20.
+//
+
+#import "QXRoomViewController+Friend.h"
+#import "QXAgoraEngine.h"
+@implementation QXRoomViewController (Friend)
+
+-(void)resetFriendViews{
+ [self.seatContentView setType:QXRoomSeatViewTypeFriend];
+ [self.seatContentView mas_remakeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.equalTo(self.view);
+ make.top.mas_equalTo(self.titleView.bottom);
+ make.height.mas_equalTo(ScaleWidth(377));
+ }];
+ [self.chatListView mas_remakeConstraints:^(MASConstraintMaker *make) {
+ make.bottom.equalTo(self.bottomView.mas_top);
+ make.left.equalTo(self.view);
+ make.top.equalTo(self.seatContentView.mas_bottom);
+ // make.right.equalTo(self.soundBtn.mas_left).offset(-16);
+ make.width.mas_equalTo(ScaleWidth(280));
+ }];
+}
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(nonnull QXRoomFriendRelationModel *)relationModel{
+ [self.seatContentView friendPartDidChangedWithType:step friend_id:friend_id end_time:end_time relationModel:relationModel];
+}
+
+-(void)friendTimeDelayWithTime:(NSString *)end_time{
+ [self.seatContentView friendTimeDelayWithTime:end_time];
+}
+-(void)friendSeatDidChanged:(NSArray *)pitArray{
+ BOOL haveMe = NO;
+ if (self.seatContentView.myPitNumber == 9 || self.seatContentView.myPitNumber == 10) {
+ haveMe = YES;
+ }
+ for (QXRoomPitModel*md in pitArray) {
+ if ([md.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.seatContentView.myPitNumber = md.pit_number.integerValue;
+ haveMe = YES;
+ break;
+ }
+ }
+ if (haveMe == NO) {
+ self.bottomView.status = 1;
+ [[QXAgoraEngine sharedEngine] setClientRoleBroadcaster:NO];
+ }else{
+ self.bottomView.status = 2;
+ if ([QXAgoraEngine sharedEngine].isOpenMic) {
+ [self.bottomView setMuteAudioStatus:1];
+ }else{
+ [self.bottomView setMuteAudioStatus:0];
+ }
+ }
+ [self.seatContentView friendSeatDidChanged:pitArray];
+}
+-(void)friendPowerSendGiftWithUser:(QXRoomPitModel *)user heartId:(NSString *)heartId{
+ self.sendGiftView.type = QXSendGiftViewTypeFriend;
+ QXRoomPitModel *model = [[QXRoomPitModel alloc] init];
+ model.pit_number = user.pit_number;
+ model.user_id = user.user_id;
+ model.nickname = user.nickname;
+ model.avatar = user.avatar;
+ self.sendGiftView.userModel = model;
+ self.sendGiftView.heartId = heartId;
+ self.sendGiftView.roomId = self.roomId;
+ [self.sendGiftView showInView:self.view];
+}
+-(void)friendHeartNumberDidChanged:(NSArray *)heartArray{
+ [self.seatContentView friendHeartNumberDidChanged:heartArray];
+}
+/// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel{
+ [self.seatContentView friendRelationIsCreatedWithrelationModel:relationModel];
+}
+/// 有人退出交友房私密小屋
+-(void)friendCabinRoomIsQuit{
+ [[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
+ [self.navigationController popViewControllerAnimated:YES];
+}
+/// 私密小屋时间发生延时
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time{
+ [self.seatContentView friendCabinRoomTimeDelayWithTime:end_time];
+}
+@end
diff --git a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.h b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.h
index 57ca694..7b8dd9b 100644
--- a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.h
+++ b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.h
@@ -6,13 +6,33 @@
//
#import "QXBaseViewController.h"
-
+#import "QXGlobal.h"
+#import "QXRoomSeatView.h"
+#import "QXRoomChatListView.h"
+#import "QXRoomTitleView.h"
+#import "QXRoomBottomView.h"
+#import "QXRoomMessageManager.h"
+#import "QXSendGiftView.h"
NS_ASSUME_NONNULL_BEGIN
-@interface QXRoomViewController : QXBaseViewController
+@interface QXRoomViewController : QXBaseViewController
@property (nonatomic,strong)NSString *roomId;
/// 是否为最小化房间进来
@property (nonatomic,assign)BOOL isReJoin;
+
+
+/// 麦位视图
+@property (nonatomic,strong)QXRoomSeatView *seatContentView;
+/// 聊天列表
+@property (nonatomic,strong)QXRoomChatListView *chatListView;
+/// 顶部房间信息
+@property (nonatomic,strong)QXRoomTitleView *titleView;
+/// 底部工具栏
+@property (nonatomic,strong)QXRoomBottomView *bottomView;
+/// 发送礼物
+@property (nonatomic,strong)QXSendGiftView *sendGiftView;
+
+-(void)configBottomTools;
@end
NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.m b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.m
index c500beb..f169825 100644
--- a/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.m
+++ b/QXLive/HomePage(声播)/Controlller/房间/QXRoomViewController.m
@@ -6,16 +6,10 @@
//
#import "QXRoomViewController.h"
-#import "QXRoomTitleView.h"
-#import "QXRoomSeatView.h"
-#import "QXRoomBottomView.h"
-#import "QXRoomChatListView.h"
#import "QXRoomSongListView.h"
-#import "QXSendGiftView.h"
#import "QXSoundListView.h"
#import "QXUpSeatView.h"
#import "QXMineNetwork.h"
-#import "QXRoomMessageManager.h"
#import "QXGiftPlayerManager.h"
#import "QXAgoraEngine.h"
#import "QXRoomSettingView.h"
@@ -34,29 +28,18 @@
#import "QXReportViewController.h"
#import "QXMessageViewController.h"
#import "QXRoomSubsidyViewController.h"
+#import "QXRoomViewController+Friend.h"
@interface QXRoomViewController ()<
QXRoomBottomViewDelegate,
-QXRoomMessageManagerDelegate,
QXRoomSettingViewDelegate,
QXAgoraEngineMediaPlayerDelegate,
-QXRoomSeatDelegate,
QXRoomUserInfoViewDelegate
>
@property (nonatomic,strong)UIImageView *roomBgImageView;
@property (nonatomic,strong)UIView *roomBgCoverView;
-/// 顶部房间信息
-@property (nonatomic,strong)QXRoomTitleView *titleView;
-/// 麦位视图
-@property (nonatomic,strong)QXRoomSeatView *seatContentView;
-/// 底部工具栏
-@property (nonatomic,strong)QXRoomBottomView *bottomView;
-/// 聊天列表
-@property (nonatomic,strong)QXRoomChatListView *chatListView;
/// 点唱view
@property (nonatomic,strong)QXRoomSongListView *songListView;
-/// 发送礼物
-@property (nonatomic,strong)QXSendGiftView *sendGiftView;
/// 声音特效
@property (nonatomic,strong)QXSoundListView *soundListView;
/// 申请上麦
@@ -388,6 +371,9 @@ QXRoomUserInfoViewDelegate
make.width.mas_equalTo(ScaleWidth(280));
}];
[self.view insertSubview:self.movieView atIndex:0];
+ }else if (self.roomModel.room_info.type_id.intValue == 7) {
+ /// 交友房
+ [self resetFriendViews];
}
if (self.roomModel.room_info.last_pk_room_id.isExist) {
@@ -542,9 +528,9 @@ QXRoomUserInfoViewDelegate
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 1) {
hasPK = YES;
}
- BOOL hasSong = YES;
- if (self.roomModel.room_info.type_id.intValue == 2){
- hasSong = NO;
+ BOOL hasSong = NO;
+ if (self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4){
+ hasSong = YES;
}
/// 普通麦位
if (self.seatContentView.myPitNumber <= 0) {
@@ -1597,14 +1583,28 @@ QXRoomUserInfoViewDelegate
_sendGiftView.roomId = self.roomId;
// [_sendGiftView reloadData];
MJWeakSelf
- _sendGiftView.roomSendSuccessBlock = ^(BOOL isAuction, QXGiftModel * _Nonnull giftModel, NSString * _Nonnull userId, NSString * _Nonnull auctionId) {
+ _sendGiftView.roomSendSuccessBlock = ^(QXSendGiftViewType sendType, QXGiftModel * _Nonnull giftModel, NSString * _Nonnull userId, NSString * _Nonnull optionId) {
if (self->_continuousView == nil) {
[weakSelf.view addSubview:weakSelf.continuousView];
}
weakSelf.continuousView.giftModel = giftModel;
- weakSelf.continuousView.isAuction = isAuction;
+ weakSelf.continuousView.sendType = sendType;
weakSelf.continuousView.userId = userId;
- weakSelf.continuousView.auctionId = auctionId;
+ switch (sendType) {
+ case QXSendGiftViewTypeFriend:{
+ weakSelf.continuousView.heartId = optionId;
+ weakSelf.continuousView.auctionId = @"";
+ }
+ break;
+ case QXSendGiftViewTypeAuction:{
+ weakSelf.continuousView.auctionId = optionId;
+ weakSelf.continuousView.heartId = @"";
+ }
+ break;
+ default:
+ break;
+ }
+
};
}
return _sendGiftView;
diff --git a/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.h b/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.h
new file mode 100644
index 0000000..c01fd01
--- /dev/null
+++ b/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.h
@@ -0,0 +1,28 @@
+//
+// QXRoomFriendRelationModel.h
+// QXLive
+//
+// Created by 启星 on 2025/8/21.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface QXRoomFriendRelationModel : NSObject
+@property (nonatomic,strong)NSString *user1_id;
+@property (nonatomic,strong)NSString *user1_avatar;
+@property (nonatomic,strong)NSString *user1_nickname;
+
+@property (nonatomic,strong)NSString *user2_id;
+@property (nonatomic,strong)NSString *user2_avatar;
+@property (nonatomic,strong)NSString *user2_nickname;
+
+@property (nonatomic,strong)NSString *heart_value;
+@property (nonatomic,strong)NSString *heart_id;
+
+@property (nonatomic,strong)NSString *room_id;
+@property (nonatomic,strong)NSString *relation_name;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.m b/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.m
new file mode 100644
index 0000000..9cc4434
--- /dev/null
+++ b/QXLive/HomePage(声播)/Model/QXRoomFriendRelationModel.m
@@ -0,0 +1,12 @@
+//
+// QXRoomFriendRelationModel.m
+// QXLive
+//
+// Created by 启星 on 2025/8/21.
+//
+
+#import "QXRoomFriendRelationModel.h"
+
+@implementation QXRoomFriendRelationModel
+
+@end
diff --git a/QXLive/HomePage(声播)/View/房间/QXRoomBottomView.h b/QXLive/HomePage(声播)/View/房间/QXRoomBottomView.h
index 0f60c2f..0b9acd5 100644
--- a/QXLive/HomePage(声播)/View/房间/QXRoomBottomView.h
+++ b/QXLive/HomePage(声播)/View/房间/QXRoomBottomView.h
@@ -7,6 +7,7 @@
#import
#import "QXRoomModel.h"
+#import "NoitceAndKey.h"
typedef NS_ENUM(NSInteger) {
/// 静音
diff --git a/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.h b/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.h
index 74989dc..2dc2f62 100644
--- a/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.h
+++ b/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.h
@@ -10,6 +10,7 @@
#import "QXGiftModel.h"
#import "QXSongListModel.h"
#import "QXRoomSeatDelegate.h"
+#import "QXRoomFriendRelationModel.h"
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
@@ -80,5 +81,12 @@ typedef NS_ENUM(NSInteger) {
@property (nonatomic,assign)BOOL havBubble;
@property (nonatomic,strong)NSString* total;
+
+/// 交友房新增
+@property (nonatomic,strong)NSString* step;
+@property (nonatomic,strong)NSString* friend_id;
+@property (nonatomic,strong)NSString* end_time;
+
+@property (nonatomic,strong)QXRoomFriendRelationModel* friend_user;
@end
NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m b/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m
index 4c23817..8a2a39c 100644
--- a/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m
+++ b/QXLive/HomePage(声播)/View/房间/QXRoomChatListView.m
@@ -751,7 +751,8 @@ NSInteger maxMessageCount = 20;
return @{@"GiftInfo" : @"QXGiftModel",
@"FromUserInfo":@"QXUserHomeModel",
@"nextInfo":@"QXSongListModel",
- @"songInfo":@"QXSongListModel"
+ @"songInfo":@"QXSongListModel",
+ @"friend_user":@"QXRoomFriendRelationModel"
};
}
diff --git a/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.h b/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.h
index 330d0f8..ad19127 100644
--- a/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.h
+++ b/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.h
@@ -18,7 +18,7 @@ typedef NS_ENUM(NSInteger) {
NS_ASSUME_NONNULL_BEGIN
@interface QXRoomSeatSettingView : UIView
-//@property (nonatomic,assign)BOOL isLockMic;
+@property (nonatomic,assign)BOOL isNoHaveLockMic;
//@property (nonatomic,assign)BOOL isMuteMic;
@property (nonatomic,strong) QXRoomPitModel *pitModel;
@property (nonatomic,strong) NSString *roomId;
diff --git a/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.m b/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.m
index 572ab42..8fa1925 100644
--- a/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.m
+++ b/QXLive/HomePage(声播)/View/房间/QXRoomSeatSettingView.m
@@ -47,6 +47,12 @@
_pitModel = pitModel;
[self.tableView reloadData];
}
+-(void)setIsNoHaveLockMic:(BOOL)isNoHaveLockMic{
+ _isNoHaveLockMic = isNoHaveLockMic;
+ self.bgView.height = ScaleWidth(42);
+ self.tableView.height = ScaleWidth(42);
+ [self.tableView reloadData];
+}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return touch.view == self;
}
@@ -64,24 +70,31 @@
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// return 3;
+ if (self.isNoHaveLockMic) {
+ return 1;
+ }
return 2;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
QXRoomSeatSettingCell *cell = [QXRoomSeatSettingCell cellWithTableView:tableView];
cell.roomId = self.roomId;
cell.pitModel = self.pitModel;
- if (indexPath.row == 0) {
-// cell.isOn = self.pitModel.is_mute.intValue == 1;
-// cell.settingType = QXRoomSeatSettingMuteMic;
- cell.isOn = self.pitModel.is_lock.intValue == 1;
- cell.settingType = QXRoomSeatSettingLockMic;
- }
-// else if(indexPath.row == 1){
-// cell.isOn = self.pitModel.is_lock.intValue == 1;
-// cell.settingType = QXRoomSeatSettingLockMic;
-// }
- else{
+ if (self.isNoHaveLockMic) {
cell.settingType = QXRoomSeatSettingHugMic;
+ }else{
+ if (indexPath.row == 0) {
+ // cell.isOn = self.pitModel.is_mute.intValue == 1;
+ // cell.settingType = QXRoomSeatSettingMuteMic;
+ cell.isOn = self.pitModel.is_lock.intValue == 1;
+ cell.settingType = QXRoomSeatSettingLockMic;
+ }
+ // else if(indexPath.row == 1){
+ // cell.isOn = self.pitModel.is_lock.intValue == 1;
+ // cell.settingType = QXRoomSeatSettingLockMic;
+ // }
+ else{
+ cell.settingType = QXRoomSeatSettingHugMic;
+ }
}
MJWeakSelf
cell.setSuccessBlock = ^(QXRoomPitModel * _Nonnull pitModel) {
@@ -90,6 +103,13 @@
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
+ if (self.isNoHaveLockMic) {
+ [self hide];
+ if (self.clickHugBlock) {
+ self.clickHugBlock(self.pitModel);
+ }
+ return;
+ }
if (indexPath.row == 1) {
[self hide];
if (self.clickHugBlock) {
diff --git a/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.h b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.h
new file mode 100644
index 0000000..0302c62
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.h
@@ -0,0 +1,25 @@
+//
+// QXFriendCPSuccessView.h
+// IsLandVoice
+//
+// Created by 启星 on 2025/3/10.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+@protocol QXFriendCPSuccessViewDelegate
+
+@optional
+-(void)animateIsFinishedWithModel:(QXRoomFriendRelationModel*)model;
+
+@end
+
+@interface QXFriendCPSuccessView : UIView
+@property (nonatomic,weak)iddelegate;
+-(void)setDataWithRelationModel:(QXRoomFriendRelationModel *)model cpName:(NSString*)cpName;
+-(void)showInView:(UIView*)view;
+-(void)hide;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.m b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.m
new file mode 100644
index 0000000..a0c2503
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPSuccessView.m
@@ -0,0 +1,129 @@
+//
+// QXFriendCPSuccessView.m
+// IsLandVoice
+//
+// Created by 启星 on 2025/3/10.
+//
+
+#import "QXFriendCPSuccessView.h"
+@interface QXFriendCPSuccessView()
+@property (nonatomic,strong)UIView *bgView;
+@property (nonatomic,strong)UIImageView *bgImageView;
+@property (nonatomic,strong)UIImageView *headerLeftImageView;
+@property (nonatomic,strong)UIImageView *leftNameBgImageView;
+@property (nonatomic,strong)UILabel *leftNameLabel;
+
+@property (nonatomic,strong)UIImageView *headerRightImageView;
+@property (nonatomic,strong)UIImageView *rightNameBgImageView;
+@property (nonatomic,strong)UILabel *rightNameLabel;
+
+/// 关系
+@property (nonatomic,strong)UILabel *relationLabel;
+
+@property (nonatomic,strong)QXRoomFriendRelationModel *model;
+@end
+
+@implementation QXFriendCPSuccessView
+
+- (instancetype)init
+{
+ self = [super init];
+ if (self) {
+ self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
+ [self createViews];
+ }
+ return self;
+}
+-(void)createViews{
+ self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
+ self.bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(420))];
+ self.bgView.centerY = self.centerY;
+ self.bgView.alpha = 0;
+ [self addSubview:self.bgView];
+
+ self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_success_bg"]];
+ self.bgImageView.frame = CGRectMake(0, 0, self.bgView.width, self.bgView.height);
+ [self.bgView addSubview:self.bgImageView];
+
+ self.headerLeftImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_header_placehoulder"]];
+ self.headerLeftImageView.frame = CGRectMake(self.bgView.width/2-ScaleWidth(75)-15, 60, ScaleWidth(75), ScaleWidth(75));
+ self.headerLeftImageView.layer.masksToBounds = YES;
+ self.headerLeftImageView.layer.cornerRadius = self.headerLeftImageView.height/2.0;
+ self.headerLeftImageView.layer.borderColor = RGB16(0x7781F5).CGColor;
+ self.headerLeftImageView.layer.borderWidth = 3;
+ [self.bgView addSubview:self.headerLeftImageView];
+
+ self.leftNameBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_success_name_bg"]];
+ self.leftNameBgImageView.frame = CGRectMake(0, self.headerLeftImageView.bottom+5, 104, 20);
+ self.leftNameBgImageView.centerX = self.headerLeftImageView.centerX;
+ [self.bgView addSubview:self.leftNameBgImageView];
+
+ self.leftNameLabel = [[UILabel alloc] initWithFrame:self.leftNameBgImageView.frame];
+ self.leftNameLabel.textColor = RGB16(0xffffff);
+ self.leftNameLabel.textAlignment = NSTextAlignmentCenter;
+ self.leftNameLabel.font = [UIFont fontWithName:@"YouSheBiaoTiHei" size:14];
+ [self.bgView addSubview:self.leftNameLabel];
+
+
+ self.headerRightImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_header_placehoulder"]];
+ self.headerRightImageView.frame = CGRectMake(self.bgView.width/2+15, self.headerLeftImageView.top, ScaleWidth(75), ScaleWidth(75));
+ self.headerRightImageView.layer.masksToBounds = YES;
+ self.headerRightImageView.layer.cornerRadius = self.headerRightImageView.height/2.0;
+ self.headerRightImageView.layer.borderColor = RGB16(0x7781F5).CGColor;
+ self.headerRightImageView.layer.borderWidth = 3;
+ [self.bgView addSubview:self.headerRightImageView];
+
+ self.rightNameBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_success_name_bg"]];
+ self.rightNameBgImageView.frame = CGRectMake(0, self.headerLeftImageView.bottom+5, 104, 20);
+ self.rightNameBgImageView.centerX = self.headerRightImageView.centerX;
+ [self.bgView addSubview:self.rightNameBgImageView];
+
+ self.rightNameLabel = [[UILabel alloc] initWithFrame:self.rightNameBgImageView.frame];
+ self.rightNameLabel.textColor = RGB16(0xffffff);
+ self.rightNameLabel.textAlignment = NSTextAlignmentCenter;
+ self.rightNameLabel.font = [UIFont fontWithName:@"YouSheBiaoTiHei" size:14];
+ [self.bgView addSubview:self.rightNameLabel];
+
+ [self.bgView addSubview:self.relationLabel];
+ self.relationLabel.text = @"兄弟牵手成功";
+}
+
+-(void)setDataWithRelationModel:(QXRoomFriendRelationModel *)model cpName:(NSString *)cpName{
+ _model = model;
+ [self.headerLeftImageView sd_setImageWithURL:[NSURL URLWithString:model.user1_avatar] placeholderImage:[UIImage imageNamed:@"room_friend_success_name_bg"]];
+ self.leftNameLabel.text = model.user1_nickname;
+
+ [self.headerRightImageView sd_setImageWithURL:[NSURL URLWithString:model.user2_avatar] placeholderImage:[UIImage imageNamed:@"room_friend_success_name_bg"]];
+ self.rightNameLabel.text = model.user2_nickname;
+ self.relationLabel.text = [NSString stringWithFormat:@"%@牵手成功",cpName];
+}
+-(void)showInView:(UIView *)view{
+ [view addSubview:self];
+ [UIView animateWithDuration:1.5 animations:^{
+ self.bgView.alpha = 1;
+ } completion:^(BOOL finished) {
+ [self performSelector:@selector(hide) withObject:nil afterDelay:3];
+ }];
+}
+
+-(void)hide{
+ [UIView animateWithDuration:1 animations:^{
+ self.bgView.alpha = 0;
+ } completion:^(BOOL finished) {
+ [self removeFromSuperview];
+ if (self.delegate && [self.delegate respondsToSelector:@selector(animateIsFinishedWithModel:)]) {
+ [self.delegate animateIsFinishedWithModel:self.model];
+ }
+ }];
+}
+- (UILabel *)relationLabel{
+ if (!_relationLabel) {
+ _relationLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, self.bgView.height/2, self.bgView.width, 35)];
+ _relationLabel.textAlignment = NSTextAlignmentCenter;
+ _relationLabel.font = [UIFont fontWithName:@"YouSheBiaoTiHei" size:28];
+ _relationLabel.textColor = [UIColor colorWithHexString:@"#FFEBC3"];
+ }
+ return _relationLabel;
+}
+
+@end
diff --git a/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.h b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.h
new file mode 100644
index 0000000..fef4e47
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.h
@@ -0,0 +1,29 @@
+//
+// QXFriendCPView.h
+// IsLandVoice
+//
+// Created by 启星 on 2025/3/10.
+//
+
+#import
+#import "QXRoomFriendRelationModel.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface QXFriendCPView : UIView
+@property (nonatomic,strong)QXRoomFriendRelationModel *model;
+@property (nonatomic,strong)NSMutableArray *dataArray;
+@property (nonatomic,copy)void(^commitBlock)(QXRoomFriendRelationModel*relationModel,NSString*selectedCpId,NSString*selectedCpName);
+-(void)showInView:(UIView*)view;
+-(void)hide;
+-(void)getRelationShipList;
+@end
+
+@interface QXFriendCPTypeCell : UICollectionViewCell
+/// 1 创建房间 2 礼物
+@property (nonatomic,assign)NSInteger type;
+@property (nonatomic,strong)UIButton *titleBtn;
+@property (nonatomic,strong)NSString *title;
+@property (nonatomic,assign)BOOL isSelected;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.m b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.m
new file mode 100644
index 0000000..d252dac
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/交友房/QXFriendCPView.m
@@ -0,0 +1,311 @@
+//
+// QXFriendCPView.m
+// IsLandVoice
+//
+// Created by 启星 on 2025/3/10.
+//
+
+#import "QXFriendCPView.h"
+#import
+#import "QXMineNetwork.h"
+
+@class QXFriendCPTypeCell;
+@interface QXFriendCPView()
+
+@property (nonatomic,strong)UIView *bgView;
+@property (nonatomic,strong)UIImageView *bgImageView;
+
+@property (nonatomic,strong)UIImageView *headerLeftImageView;
+@property (nonatomic,strong)UILabel *headerLeftNameLabel;
+@property (nonatomic,strong)UIImageView *lineImageView;
+/// 心动值
+@property (nonatomic,strong)UILabel *heartValueLabel;
+@property (nonatomic,strong)UIImageView *headerRightImageView;
+@property (nonatomic,strong)UILabel *headerRightNameLabel;
+
+@property (nonatomic,strong)UILabel *titleLabel;
+
+@property (nonatomic,strong)UICollectionView *collectionView;
+
+@property (nonatomic,strong)UIButton *cancelBtn;
+@property (nonatomic,strong)UIButton *commitBtn;
+
+@property (nonatomic,assign)NSInteger selectedIndex;
+
+@property (nonatomic, strong) SVGAPlayer *svgaPlayer;
+@property (nonatomic , strong) SVGAParser *parser;
+
+@end
+@implementation QXFriendCPView
+- (instancetype)initWithFrame:(CGRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
+ [self createViews];
+ }
+ return self;
+}
+-(void)createViews{
+ self.selectedIndex = -1;
+
+ self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];
+ self.bgView = [[UIView alloc] initWithFrame:CGRectMake((self.width-ScaleWidth(275))/2.0,-SCREEN_HEIGHT, ScaleWidth(275), ScaleWidth(466))];
+ [self addSubview:self.bgView];
+ self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_create_relation_bg"]];
+ self.bgImageView.contentMode = UIViewContentModeScaleToFill;
+ self.bgImageView.frame = self.bgView.bounds;
+ [self.bgView addSubview:self.bgImageView];
+ [self.bgView addSubview:self.headerLeftImageView];
+ [self.bgView addSubview:self.headerLeftNameLabel];
+ [self.bgView addSubview:self.headerRightImageView];
+ [self.bgView addSubview:self.headerRightNameLabel];
+ [self.bgView addSubview:self.lineImageView];
+ [self.bgView addSubview:self.heartValueLabel];
+
+ self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, self.headerLeftNameLabel.bottom+15, 200, 24)];
+ self.titleLabel.text = @"关系列表";
+ self.titleLabel.font = [UIFont boldSystemFontOfSize:16];
+ self.titleLabel.textColor = [UIColor colorWithHexString:@"#333333"];
+ [self.bgView addSubview:self.titleLabel];
+
+ self.cancelBtn = [[UIButton alloc] initWithFrame:CGRectMake(16, ScaleWidth(466)-42-40, (self.bgView.width-16*3-18)/2.0, 42)];
+ self.cancelBtn.backgroundColor = [UIColor colorWithHexString:@"#333333"];
+ [self.cancelBtn setTitle:@"取消" forState:(UIControlStateNormal)];
+ self.cancelBtn.titleLabel.font = [UIFont systemFontOfSize:14];
+ [self.cancelBtn setTitleColor:[UIColor colorWithHexString:@"#ffffff"] forState:(UIControlStateNormal)];
+ [self.cancelBtn addTarget:self action:@selector(closeAction) forControlEvents:(UIControlEventTouchUpInside)];
+ self.cancelBtn.layer.masksToBounds = YES;
+ self.cancelBtn.layer.cornerRadius = 21;
+ [self.bgView addSubview:self.cancelBtn];
+
+ self.commitBtn = [[UIButton alloc] initWithFrame:CGRectMake(self.cancelBtn.right+20, self.cancelBtn.top, self.cancelBtn.width, 42)];
+ self.commitBtn.backgroundColor = QXConfig.themeColor;
+ [self.commitBtn setTitle:@"确认" forState:(UIControlStateNormal)];
+ self.commitBtn.titleLabel.font = [UIFont systemFontOfSize:14];
+ [self.commitBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
+ [self.commitBtn addTarget:self action:@selector(commitAction) forControlEvents:(UIControlEventTouchUpInside)];
+ self.commitBtn.layer.masksToBounds = YES;
+ self.commitBtn.layer.cornerRadius = 21;
+ [self.bgView addSubview:self.commitBtn];
+
+ UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
+ CGFloat itemWidth = (self.bgView.width - 48 - 3*12)/3.0;
+ layout.itemSize = CGSizeMake(itemWidth, 34);
+ layout.minimumInteritemSpacing = 12;
+ layout.minimumLineSpacing = 12;
+ layout.sectionInset = UIEdgeInsetsMake(0, 18, 0, 30);
+ self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, self.titleLabel.bottom+10, self.bgView.width, self.commitBtn.top-self.titleLabel.bottom-30) collectionViewLayout:layout];
+ self.collectionView.delegate = self;
+ self.collectionView.backgroundColor = [UIColor clearColor];
+ self.collectionView.dataSource = self;
+ [self.collectionView registerClass:[QXFriendCPTypeCell class] forCellWithReuseIdentifier:@"QXFriendCPTypeCell"];
+ [self.bgView addSubview:self.collectionView];
+ [self getRelationShipList];
+}
+-(void)getRelationShipList{
+ MJWeakSelf
+ [QXMineNetwork roomRelationListWithType:@"2" successBlock:^(NSArray * _Nonnull list) {
+ [weakSelf.dataArray removeAllObjects];
+ [weakSelf.dataArray addObjectsFromArray:list];
+ [weakSelf.collectionView reloadData];
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+
+ }];
+}
+-(void)setModel:(QXRoomFriendRelationModel *)model{
+ _model = model;
+ [self.headerLeftImageView sd_setImageWithURL:[NSURL URLWithString:model.user1_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
+ [self.headerRightImageView sd_setImageWithURL:[NSURL URLWithString:model.user2_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
+
+ self.headerLeftNameLabel.text = model.user1_nickname;
+ self.headerRightNameLabel.text = model.user2_nickname;
+
+ self.heartValueLabel.text = model.heart_value;
+}
+
+-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
+ return 1;
+}
+-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
+ return self.dataArray.count;
+}
+-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
+ QXFriendCPTypeCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXFriendCPTypeCell" forIndexPath:indexPath];
+ QXRoomRelationModel *model = self.dataArray[indexPath.row];
+ cell.title = model.name;
+ if (indexPath.row == self.selectedIndex) {
+ cell.isSelected = YES;
+ }else{
+ cell.isSelected = NO;
+ }
+ return cell;
+}
+-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
+ self.selectedIndex = indexPath.row;
+ [self.collectionView reloadData];
+}
+
+-(void)commitAction{
+// QXFriendCPSuccessView *successView = [[QXFriendCPSuccessView alloc] init];
+// for (UIWindow *w in [UIApplication sharedApplication].windows) {
+// if ([w isKeyWindow]) {
+// [successView showInView:w];
+// break;
+// }
+// }
+ QXRoomRelationModel *md = self.dataArray[self.selectedIndex];
+ if (self.commitBlock) {
+ self.commitBlock(self.model,md.relation_id,md.name);
+ }
+}
+
+-(void)closeAction{
+ [self hide];
+}
+
+-(void)showInView:(UIView *)view{
+ [view addSubview:self];
+ [UIView animateWithDuration:0.3 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
+ self.bgView.centerY = self.centerY;
+ } completion:^(BOOL finished) {
+
+ }];
+}
+
+-(void)hide{
+ [UIView animateWithDuration:0.3 delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
+ self.bgView.y = SCREEN_HEIGHT;
+ } completion:^(BOOL finished) {
+ [self removeFromSuperview];
+ }];
+}
+- (UIImageView *)headerLeftImageView{
+ if (!_headerLeftImageView) {
+ _headerLeftImageView = [[UIImageView alloc] initWithFrame:CGRectMake(18, ScaleWidth(130), ScaleWidth(50), ScaleWidth(50))];
+ _headerLeftImageView.image = [UIImage imageNamed:@"user_header_placehoulder"];
+ _headerLeftImageView.contentMode = UIViewContentModeScaleAspectFill;
+ _headerLeftImageView.layer.masksToBounds = YES;
+ _headerLeftImageView.layer.cornerRadius = ScaleWidth(50)/2.0;
+ }
+ return _headerLeftImageView;
+}
+-(UILabel *)headerLeftNameLabel{
+ if (!_headerLeftNameLabel) {
+ _headerLeftNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.headerLeftImageView.left, self.headerLeftImageView.bottom, 100, 20)];
+ _headerLeftNameLabel.textColor = [UIColor colorWithHexString:@"#333333"];
+ _headerLeftNameLabel.font = [UIFont systemFontOfSize:12];
+ _headerLeftNameLabel.textAlignment = NSTextAlignmentLeft;
+ }
+ return _headerLeftNameLabel;
+}
+- (UIImageView *)headerRightImageView{
+ if (!_headerRightImageView) {
+ _headerRightImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.bgView.width-30-ScaleWidth(50), self.headerLeftImageView.top, ScaleWidth(50), ScaleWidth(50))];
+ _headerRightImageView.image = [UIImage imageNamed:@"user_header_placehoulder"];
+ _headerRightImageView.contentMode = UIViewContentModeScaleAspectFill;
+ _headerRightImageView.layer.masksToBounds = YES;
+ _headerRightImageView.layer.cornerRadius = ScaleWidth(50)/2.0;
+ }
+ return _headerRightImageView;
+}
+-(UILabel *)headerRightNameLabel{
+ if (!_headerRightNameLabel) {
+ _headerRightNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.headerRightImageView.right-100, self.headerLeftImageView.bottom, 100, 20)];
+ _headerRightNameLabel.textColor = [UIColor colorWithHexString:@"#333333"];
+ _headerRightNameLabel.font = [UIFont systemFontOfSize:12];
+ _headerRightNameLabel.textAlignment = NSTextAlignmentRight;
+ }
+ return _headerRightNameLabel;
+}
+-(UIImageView *)lineImageView{
+ if (!_lineImageView) {
+ _lineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_relation_heart"]];
+ _lineImageView.frame = CGRectMake(self.headerLeftImageView.right, 0, self.headerRightImageView.left-self.headerLeftImageView.right, ScaleWidth(50));
+ _lineImageView.centerY = self.headerLeftImageView.centerY;
+ }
+ return _lineImageView;
+}
+- (UILabel *)heartValueLabel{
+ if (!_heartValueLabel) {
+ _heartValueLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 80, 18)];
+ _heartValueLabel.centerY = self.lineImageView.centerY;
+ _heartValueLabel.centerX = self.lineImageView.centerX;
+ _heartValueLabel.backgroundColor = [UIColor colorWithHexString:@"#FE8EC8"];
+ _heartValueLabel.layer.masksToBounds = YES;
+ _heartValueLabel.layer.cornerRadius = 9;
+ _heartValueLabel.layer.borderColor = [UIColor whiteColor].CGColor;
+ _heartValueLabel.layer.borderWidth = 1;
+ _heartValueLabel.textColor = [UIColor whiteColor];
+ _heartValueLabel.textAlignment = NSTextAlignmentCenter;
+ _heartValueLabel.font = [UIFont boldSystemFontOfSize:12];
+ }
+ return _heartValueLabel;
+}
+-(NSMutableArray *)dataArray{
+ if (!_dataArray) {
+ _dataArray = [NSMutableArray array];
+ }
+ return _dataArray;
+}
+@end
+
+
+@implementation QXFriendCPTypeCell
+
+- (instancetype)initWithFrame:(CGRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ [self createViews];
+ }
+ return self;
+}
+-(void)setIsSelected:(BOOL)isSelected{
+ _isSelected = isSelected;
+ self.titleBtn.selected = isSelected;
+ if (self.isSelected) {
+ self.titleBtn.titleLabel.font = [UIFont systemFontOfSize:16];
+ }else{
+ self.titleBtn.titleLabel.font = [UIFont systemFontOfSize:14];
+ }
+}
+-(void)setType:(NSInteger)type{
+ _type = type;
+ if (type == 1) {
+ self.titleBtn.layer.cornerRadius = 17;
+ UIImage *normalImage = [UIImage imageWithColor:[UIColor colorWithHexString:@"#F6F6F6"]];
+ [self.titleBtn setBackgroundImage:normalImage forState:(UIControlStateNormal)];
+ }if (type == 2){
+ self.titleBtn.layer.cornerRadius = 0;
+ [self.titleBtn setBackgroundImage:nil forState:(UIControlStateNormal)];
+ [self.titleBtn setTitleColor:[UIColor colorWithHexString:@"#999999"] forState:(UIControlStateNormal)];
+ [self.titleBtn setTitleColor:[UIColor colorWithHexString:@"#ffffff"] forState:(UIControlStateSelected)];
+ [self.titleBtn setBackgroundImage:nil forState:(UIControlStateNormal)];
+ [self.titleBtn setBackgroundImage:nil forState:(UIControlStateSelected)];
+ self.titleBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
+ }
+}
+-(void)setTitle:(NSString *)title{
+ _title = title;
+ [self.titleBtn setTitle:title forState:(UIControlStateNormal)];
+}
+-(void)createViews{
+ self.titleBtn = [[UIButton alloc] init];
+ UIImage *selectedImage = [UIImage imageWithColor:QXConfig.themeColor];
+ UIImage *normalImage = [UIImage imageWithColor:[UIColor colorWithHexString:@"#FFFFFF"]];
+ [self.titleBtn setBackgroundImage:selectedImage forState:(UIControlStateSelected)];
+ [self.titleBtn setBackgroundImage:normalImage forState:(UIControlStateNormal)];
+ [self.titleBtn setTitleColor:[UIColor colorWithHexString:@"#333333"] forState:(UIControlStateNormal)];
+ [self.titleBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateSelected)];
+ self.titleBtn.titleLabel.font = [UIFont systemFontOfSize:14];
+ self.titleBtn.layer.masksToBounds = YES;
+ self.titleBtn.layer.cornerRadius = 4;
+ [self.contentView addSubview:self.titleBtn];
+ self.titleBtn.userInteractionEnabled = NO;
+ [self.titleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self.contentView);
+ }];
+}
+
+@end
diff --git a/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.h b/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.h
index 3f20573..a6a4eb1 100644
--- a/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.h
+++ b/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.h
@@ -18,6 +18,8 @@ typedef NS_ENUM(NSInteger) {
QXRoomSettingTypeRoomTypeBoy = 12,
/// 女神房
QXRoomSettingTypeRoomTypeGirl = 13,
+ /// 交友房
+ QXRoomSettingTypeRoomTypeFriend = 14,
/// 常用工具
/// 房间补贴
diff --git a/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.m b/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.m
index 524ccb4..d7f3528 100644
--- a/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.m
+++ b/QXLive/HomePage(声播)/View/房间/设置/QXRoomSettingView.m
@@ -34,6 +34,8 @@
@property (nonatomic,strong)QXRoomSettingModel *roomTypeBoy;
/// 女神房
@property (nonatomic,strong)QXRoomSettingModel *roomTypeGirl;
+/// 交友房
+@property (nonatomic,strong)QXRoomSettingModel *roomTypeFriend;
/// 常用工具
/// 房间补贴
@@ -178,12 +180,12 @@
// }
if ((self.roomModel.room_info.type_id.intValue == 1 || self.roomModel.room_info.type_id.intValue == 3 || self.roomModel.room_info.type_id.intValue == 4) && self.roomModel.room_info.label_id.intValue == 2) {
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgImage];
- roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl];
+ roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
}else{
toolsArr = @[self.roomSubsidy,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
- roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl];
+ roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
}
@@ -212,7 +214,7 @@
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
}
- roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl];
+ roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
@@ -230,7 +232,7 @@
}else{
toolsArr = @[self.roomSubsidy,self.roomCompere,self.roomMessage,self.roomOrderMic,self.roomBgMusic,self.roomBgImage];
}
- roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl];
+ roomTypeArr = @[self.roomTypeSing,self.roomTypeAuction,self.roomTypeBoy,self.roomTypeGirl,self.roomTypeFriend];
// moreArr = @[self.roomLeave,self.roomShare,self.roomVoiceSet,self.roomSetting,self.roomWelcome,self.roomEffects,self.roomReport];
moreArr = @[self.roomLeave,self.roomVoiceSet,self.roomSetting,self.roomEffects,self.roomReport];
self.titles = @[QXText(@"房间类型"),QXText(@"常用工具"),QXText(@"更多操作")];
@@ -313,7 +315,7 @@
// [self.welcomeView showInView:self.viewController.view];
return;
}
- if (model.type == QXRoomSettingTypeRoomTypeAuction || model.type == QXRoomSettingTypeRoomTypeSing || model.type == QXRoomSettingTypeRoomTypeBoy || model.type == QXRoomSettingTypeRoomTypeGirl) {
+ if (model.type == QXRoomSettingTypeRoomTypeAuction || model.type == QXRoomSettingTypeRoomTypeSing || model.type == QXRoomSettingTypeRoomTypeBoy || model.type == QXRoomSettingTypeRoomTypeGirl || model.type == QXRoomSettingTypeRoomTypeFriend) {
self.alertView.message = [NSString stringWithFormat:@"您确定要修改为%@房吗?",model.name];
[[QXGlobal shareGlobal] showView:self.alertView controller:self.viewController popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:^{
@@ -339,6 +341,8 @@
type = @"3";
}else if (roomType == QXRoomSettingTypeRoomTypeGirl) {
type = @"4";
+ }else if (roomType == QXRoomSettingTypeRoomTypeFriend) {
+ type = @"7";
}
[QXMineNetwork changeRoomTypeWithRoomId:self.roomModel.room_info.room_id type:type successBlock:^(NSDictionary * _Nonnull dict) {
@@ -400,6 +404,16 @@
return _roomTypeGirl;
}
+-(QXRoomSettingModel *)roomTypeFriend{
+ if (!_roomTypeFriend) {
+ _roomTypeFriend = [[QXRoomSettingModel alloc] init];
+ _roomTypeFriend.name = QXText(@"交友");
+ _roomTypeFriend.type = QXRoomSettingTypeRoomTypeFriend;
+ _roomTypeFriend.icon = @"room_set_room_type_friend";
+ }
+ return _roomTypeFriend;
+}
+
-(QXRoomSettingModel *)roomSubsidy{
if (!_roomSubsidy) {
_roomSubsidy = [[QXRoomSettingModel alloc] init];
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.h b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.h
index 0740935..ec3c88a 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.h
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.h
@@ -12,7 +12,9 @@ typedef NS_ENUM(NSInteger) {
/// 名称名称在下显示魅力
QXRoomSeatContentViewTypeNormal = 0,
/// 名称在右
- QXRoomSeatContentViewTypeAuction
+ QXRoomSeatContentViewTypeAuction = 1,
+ /// 交友房
+ QXRoomSeatContentViewTypeFriend
}QXRoomSeatContentViewType;
NS_ASSUME_NONNULL_BEGIN
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.m b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.m
index 234edd2..695fc14 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.m
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatContentView.m
@@ -285,6 +285,29 @@
}];
}
break;
+ case QXRoomSeatContentViewTypeFriend:{
+ self.charmBgView.backgroundColor = RGB16A(0x000000,0.65);
+// self.charmBgView.hidden = NO;
+ [self.charmBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.equalTo(self);
+ make.top.equalTo(self.noUserImageView.mas_bottom).offset(-8);
+ make.height.mas_equalTo(ScaleWidth(15));
+ }];
+ [self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.charmBgView.mas_bottom).offset(0);
+ // make.centerX.equalTo(self.noUserImageView);
+ make.height.mas_equalTo(18);
+ make.left.right.equalTo(self);
+ }];
+ self.nameLabel.textColor = RGB16(0xEFEAFF);
+// self.numberLabel.backgroundColor = RGB16(0xdb7fff);
+ [self.numberLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.charmBgView.mas_bottom).offset(0);
+ make.centerX.equalTo(self.noUserImageView);
+ make.height.mas_equalTo(18);
+ }];
+ }
+ break;
default:
break;
}
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatDelegate.h b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatDelegate.h
index 85ea23b..7ddc4ad 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatDelegate.h
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatDelegate.h
@@ -27,4 +27,7 @@
/// 查看个人信息
-(void)previewUserInfoWithUserId:(NSString*)userId;
+/// 助力
+-(void)friendPowerSendGiftWithUser:(QXRoomPitModel *)user heartId:(NSString*)heartId;
+
@end
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.h b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.h
index 9c4bef4..8079f66 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.h
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.h
@@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)QXRoomModel *roomModel;
-(void)cabinRoomHotValueDidChanged:(NSString*)hot_value;
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time;
+-(void)destroyViews;
@end
NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.m b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.m
index 0be75d1..7892177 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.m
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeCabinView.m
@@ -17,6 +17,7 @@
@property (nonatomic,strong)QXRoomSeatContentView *leftSeatView;
+@property (nonatomic,strong)UIImageView *bgImageView;
@property (nonatomic,strong)UIImageView *heartCenterImageView;
@property (nonatomic,strong)UILabel *numberLabel;
@@ -71,16 +72,52 @@
make.centerY.equalTo(self.titleLabel);
}];
-
- self.timeDownBgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_cabin_timedown_bg"]];
- self.timeDownBgView.contentMode = UIViewContentModeScaleToFill;
- [self addSubview:self.timeDownBgView];
- [self.timeDownBgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(96);
- make.top.mas_equalTo(ScaleWidth(102));
- make.width.mas_equalTo(SCREEN_WIDTH-96*2);
- make.height.mas_equalTo(24);
+ self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_cabin_bg"]];
+ self.bgImageView.contentMode = UIViewContentModeScaleToFill;
+ [self addSubview:self.bgImageView];
+ [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.equalTo(self);
+ make.height.mas_equalTo(ScaleWidth(330));
}];
+
+ self.heartCenterImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_cabin_heart"]];
+ [self addSubview:self.heartCenterImageView];
+ [self.heartCenterImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self.bgImageView);
+ make.centerY.equalTo(self.bgImageView);
+ make.height.mas_equalTo(ScaleWidth(80));
+ make.width.mas_equalTo(ScaleWidth(160));
+ }];
+
+ self.numberLabel = [[UILabel alloc] init];
+ self.numberLabel.text = @"0";
+ self.numberLabel.textAlignment = NSTextAlignmentCenter;
+ self.numberLabel.textColor = [UIColor colorWithHexString:@"#ffffff"];
+ self.numberLabel.font = [UIFont fontWithName:@"DIN Alternate" size:18];
+ [self addSubview:self.numberLabel];
+ [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerY.equalTo(self.heartCenterImageView).offset(-18);
+ make.centerX.equalTo(self.heartCenterImageView);
+ }];
+
+ self.leftSeatView = [[QXRoomSeatContentView alloc] init];
+ [self addSubview:self.leftSeatView];
+ [self.leftSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.right.equalTo(self.heartCenterImageView.mas_left);
+ make.width.mas_equalTo(ScaleWidth(75));
+ make.height.mas_equalTo(ScaleWidth(75)+25);
+ make.top.equalTo(self.heartCenterImageView).offset(-5);
+ }];
+
+ self.rightSeatView = [[QXRoomSeatContentView alloc] init];
+ [self addSubview:self.rightSeatView];
+ [self.rightSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.heartCenterImageView.mas_right);
+ make.width.mas_equalTo(ScaleWidth(75));
+ make.height.mas_equalTo(ScaleWidth(75)+25);
+ make.top.equalTo(self.leftSeatView);
+ }];
+
self.timeDownLabel = [[UILabel alloc] initWithFrame:self.timeDownBgView.frame];
self.timeDownLabel.textColor = [UIColor colorWithHexString:@"#ffffff"];
self.timeDownLabel.font = [UIFont systemFontOfSize:12];
@@ -88,50 +125,20 @@
self.timeDownLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:self.timeDownLabel];
[self.timeDownLabel mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.top.bottom.right.equalTo(self.timeDownBgView);
+ make.centerX.equalTo(self);
+ make.top.equalTo(self.heartCenterImageView.mas_bottom).offset(21);
+ make.height.mas_equalTo(24);
}];
+ self.timeDownBgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_cabin_timedown_bg"]];
+ self.timeDownBgView.contentMode = UIViewContentModeScaleToFill;
+ [self addSubview:self.timeDownBgView];
+ [self.timeDownBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.timeDownLabel);
+ }];
+
- self.leftSeatView = [[QXRoomSeatContentView alloc] init];
- [self addSubview:self.leftSeatView];
- [self.leftSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(36);
- make.width.mas_equalTo(ScaleWidth(65));
- make.height.mas_equalTo(ScaleWidth(65)+25);
- make.top.equalTo(self.timeDownBgView.mas_bottom).offset(24);
- }];
-
- self.rightSeatView = [[QXRoomSeatContentView alloc] init];
- [self addSubview:self.rightSeatView];
- [self.rightSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.leftSeatView);
- make.left.mas_equalTo(SCREEN_WIDTH-ScaleWidth(65)-36);
- make.width.mas_equalTo(ScaleWidth(65));
- make.height.mas_equalTo(ScaleWidth(65)+25);
-
- }];
-//
-//
-//
- self.heartCenterImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_cabin_heart"]];
- [self addSubview:self.heartCenterImageView];
- [self.heartCenterImageView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.leftSeatView.mas_right);
- make.right.equalTo(self.rightSeatView.mas_left);
- make.height.mas_equalTo(ScaleWidth(76));
- make.centerY.equalTo(self.leftSeatView).offset(-15);
- }];
- self.numberLabel = [[UILabel alloc] init];
- self.numberLabel.text = @"0";
- self.numberLabel.textAlignment = NSTextAlignmentCenter;
- self.numberLabel.textColor = [UIColor colorWithHexString:@"#ffffff"];
- self.numberLabel.font = [UIFont systemFontOfSize:12];
- [self addSubview:self.numberLabel];
- [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.heartCenterImageView).offset(15);
- make.centerX.equalTo(self.heartCenterImageView);
- }];
CGFloat margin = (SCREEN_WIDTH-77*3)/4;
self.micBtn = [[UIButton alloc] init];
@@ -205,11 +212,16 @@
self.titleLabel.text = self.roomModel.room_info.room_name;
self.numberLabel.text = self.roomModel.room_info.hot_value;
-
- NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
- long long milliseconds = (long long)(timeInterval);
- long long time = roomModel.cp_user.time_day.longLongValue - milliseconds;
- self.timeDownLabel.text = [NSString stringWithFormat:@"到期时间:%@",[NSString getTimeWithSecond:time]];
+
+ if ([self.roomModel.room_info.label_id isEqualToString:@"5"]) {
+ /// 交友房私密小屋
+ [self startTimer];
+ }else{
+ NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
+ long long milliseconds = (long long)(timeInterval);
+ long long time = roomModel.cp_user.time_day.longLongValue - milliseconds;
+ self.timeDownLabel.text = [NSString stringWithFormat:@"到期时间:%@",[NSString getTimeWithSecond:time]];
+ }
if (![roomModel.room_owner.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
self.movieBtn.hidden = YES;
CGFloat margin = (SCREEN_WIDTH-77*2)/3;
@@ -252,12 +264,46 @@
// 开启屏幕采集
[[QXAgoraEngine sharedEngine] startScreenCapture];
}
-
-
+-(void)startTimer{
+ MJWeakSelf
+ NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
+ // 将秒转换为毫秒
+ long long milliseconds = (long long)(timeInterval);
+ self.startTime = self.roomModel.cp_user.time_day.longLongValue - milliseconds;
+ if (self.startTime <= 0) {
+ //时间错误不进行倒计时
+ self.timeDownLabel.text = @"倒计时:00:00:00";
+ return;
+ }
+ [self stopTimer];
+ _timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ weakSelf.startTime--;
+ NSInteger hour = self.startTime/60/60;
+ NSInteger min = (self.startTime % 3600) / 60;
+ NSInteger second = self.startTime % 60;
+ weakSelf.timeDownLabel.text = [NSString stringWithFormat:@"倒计时:%02ld:%02ld:%02ld",hour,min,(long)second];
+ if (weakSelf.startTime<=0) {
+ [weakSelf stopTimer];
+ weakSelf.timeDownLabel.text = @"00:00:00";
+ }
+ });
+ }];
+}
+-(void)stopTimer{
+ if (_timer) {
+ [self->_timer invalidate];
+ self->_timer= nil;
+ }
+}
-(void)cabinRoomHotValueDidChanged:(NSString *)hot_value{
self.roomModel.room_info.hot_value = hot_value;
self.numberLabel.text = self.roomModel.room_info.hot_value;
}
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time{
+ self.roomModel.cp_user.time_day = end_time;
+ [self startTimer];
+}
-(void)closeAction{
MJWeakSelf
UIAlertController *al = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:(UIAlertControllerStyleActionSheet)];
@@ -283,4 +329,15 @@
// self.navigationController.interactivePopGestureRecognizer.enabled = YES;
[self.navigationController popViewControllerAnimated:YES];
}
+-(void)destroyViews{
+ if (_leftSeatView) {
+ [_leftSeatView destroyViews];
+ _leftSeatView = nil;
+ }
+ if (_rightSeatView) {
+ [_rightSeatView destroyViews];
+ _rightSeatView = nil;
+ }
+ [self stopTimer];
+}
@end
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.h b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.h
new file mode 100644
index 0000000..0b42b49
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.h
@@ -0,0 +1,65 @@
+//
+// QXRoomSeatTypeFrientView.h
+// QXLive
+//
+// Created by 启星 on 2025/8/18.
+//
+
+#import
+#import "QXUserModel.h"
+#import "QXRoomModel.h"
+#import "QXRoomSeatDelegate.h"
+#import "QXRoomSeatContentView.h"
+
+typedef NS_ENUM(NSInteger) {
+ /// 等待
+ QXSeatTypeFrientPartTypeWait = 1,
+ /// 心动
+ QXSeatTypeFrientPartTypeHeart = 2,
+ /// 牵手
+ QXSeatTypeFrientPartTypeHand = 3,
+}QXSeatTypeFrientPartType;
+
+
+@interface QXRoomSeatTypeFrientView : UIView
+/// 房间数据
+@property (nonatomic,strong)QXRoomModel *roomModel;
+/// 我自己的麦位
+@property (nonatomic,assign)NSInteger myPitNumber;
+@property (nonatomic,weak)iddelegate;
+
+/// 上下麦
+-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number;
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(QXRoomFriendRelationModel*)relationModel;
+/// 交友房时间发生延时 end_time 截止时间
+-(void)friendTimeDelayWithTime:(NSString*)end_time;
+/// 交友房麦位发生变化
+-(void)friendSeatDidChanged:(NSArray*)pitArray;
+/// 交友心动发生变化 [1000,100,50] 三组数据
+-(void)friendHeartNumberDidChanged:(NSArray *)heartArray;
+/// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel;
+
+
+/// 清除魅力
+-(void)clearCharm;
+/// 设置魅力
+-(void)setSeatCharmWithUser:(QXUserHomeModel*)model;
+/// 用户信息发生改变
+-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user;
+
+/// 销毁视图
+-(void)destroyViews;
+@end
+
+
+@interface QXFrientSeatView : UIView
+
+@property (nonatomic,strong)QXRoomSeatContentView *contentView;
+@property (nonatomic,strong)UIButton *powerBtn;
+@property (nonatomic,assign)BOOL isLeft;
+@property (nonatomic,weak)iddelegate;
+@property (nonatomic,strong)QXRoomFriendHeartListModel *heartModel;
+@end
+
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.m b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.m
new file mode 100644
index 0000000..07911ef
--- /dev/null
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatTypeFrientView.m
@@ -0,0 +1,1349 @@
+//
+// QXRoomSeatTypeFrientView.m
+// QXLive
+//
+// Created by 启星 on 2025/8/18.
+//
+
+#import "QXRoomSeatTypeFrientView.h"
+#import "QXMineNetwork.h"
+#import
+#import "QXRoomSeatSettingView.h"
+#import "QXMineNetwork.h"
+#import "QXTimer.h"
+#import "QXFriendCPView.h"
+#import "QXFriendCPSuccessView.h"
+
+@interface QXRoomSeatTypeFrientView()
+@property (nonatomic,strong)UIImageView *bigBgImageView;
+/// 主持
+@property (nonatomic,strong)QXRoomSeatContentView *compereView;
+/// 嘉宾
+@property (nonatomic,strong)QXRoomSeatContentView *guestView;
+
+@property (nonatomic,strong)QXFrientSeatView *leftSeatView1;
+@property (nonatomic,strong)QXFrientSeatView *leftSeatView2;
+@property (nonatomic,strong)QXFrientSeatView *leftSeatView3;
+@property (nonatomic,strong)QXFrientSeatView *rightSeatView1;
+@property (nonatomic,strong)QXFrientSeatView *rightSeatView2;
+@property (nonatomic,strong)QXFrientSeatView *rightSeatView3;
+
+@property (nonatomic,strong)UIImageView *bgImageView;
+@property (nonatomic,strong)UIImageView *bgTopImageView;
+
+/// 三个阶段
+@property (nonatomic,strong)UIButton *waitBtn;
+@property (nonatomic,strong)UIButton *heartBtn;
+@property (nonatomic,strong)UIButton *handBtn;
+
+/// 开始 延时 结束
+@property (nonatomic,strong)UIButton *startBtn;
+@property (nonatomic, strong)UIImageView *heartDotImageView1;
+@property (nonatomic,strong)UIButton *endBtn;
+@property (nonatomic, strong)UIImageView *heartDotImageView2;
+@property (nonatomic,strong)UIButton *delayBtn;
+
+/// 倒计时
+@property (nonatomic,strong)UIView *timeBgView;
+@property (nonatomic,strong)UIImageView *timeBgImageView;
+@property (nonatomic,strong)UILabel *timeLabel;
+@property (nonatomic,strong)UILabel *tenSecondLabel;
+
+/// 心动连线
+@property (nonatomic, strong) UIImageView *heartTopImageView;
+@property (nonatomic, strong) UIImageView *heartTopLineImageView;
+@property (nonatomic, strong) UIImageView *heartCenterImageView;
+@property (nonatomic, strong) UIImageView *heartCenterLineImageView;
+@property (nonatomic, strong) UIImageView *heartBottomImageView;
+@property (nonatomic, strong) UIImageView *heartBottomLineImageView;
+@property (nonatomic, strong) UILabel *heartTopLabel;
+@property (nonatomic, strong) UIImageView *heartCenterValueBgImageView;
+@property (nonatomic, strong) UILabel *heartCenterLabel;
+@property (nonatomic, strong) UILabel *heartBottomLabel;
+@property (nonatomic, strong) SVGAPlayer *heartTopLinePlayer;
+@property (nonatomic , strong) SVGAParser *heartTopLineParser;
+@property (nonatomic, strong) SVGAPlayer *heartCenterLinePlayer;
+@property (nonatomic , strong) SVGAParser *heartCenterLineParser;
+@property (nonatomic, strong) SVGAPlayer *heartBottomLinePlayer;
+@property (nonatomic , strong) SVGAParser *heartBottomLineParser;
+
+@property (nonatomic,strong)NSMutableArray *allSeatViewArray;
+@property (nonatomic,strong)QXRoomSeatSettingView *settingView;
+@property (nonatomic,strong)QXTimer *timer;
+@property (nonatomic,assign)long startTime;
+
+@property (nonatomic,assign)BOOL topIsAnimate;
+@property (nonatomic,assign)BOOL centerIsAnimate;
+@property (nonatomic,assign)BOOL bottomIsAnimate;
+
+@property (nonatomic,strong)QXFriendCPView *cpView;
+@property (nonatomic , strong)QXFriendCPSuccessView *successView;
+@end
+
+@implementation QXRoomSeatTypeFrientView
+
+- (instancetype)init
+{
+ self = [super init];
+ if (self) {
+ [self initSubviews];
+ }
+ return self;
+}
+-(void)initSubviews{
+ MJWeakSelf
+ self.bigBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_below_bg"]];
+ self.bigBgImageView.contentMode = UIViewContentModeScaleToFill;
+ [self addSubview:self.bigBgImageView];
+ [self.bigBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self);
+ }];
+
+
+ self.compereView = [[QXRoomSeatContentView alloc] init];
+ [self.compereView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ self.compereView.tagString = QXText(@"主持");
+ self.compereView.number = 9;
+ [self addSubview:self.compereView];
+ CGFloat margin = 25;
+ [self.compereView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ make.left.mas_equalTo(margin);
+ }];
+
+
+ self.guestView = [[QXRoomSeatContentView alloc] init];
+ self.guestView.tagString = QXText(@"嘉宾");
+ self.guestView.number = 10;
+ [self.guestView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self addSubview:self.guestView];
+ [self.guestView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ make.right.mas_equalTo(-margin);
+ }];
+
+ self.heartBtn = [[UIButton alloc] init];
+ [self.heartBtn setTitle:@"心动连线" forState:(UIControlStateNormal)];
+ [self.heartBtn setTitleColor:RGB16A(0xffffff, 0.4) forState:(UIControlStateNormal)];
+ [self.heartBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateSelected)];
+ self.heartBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.heartBtn setBackgroundImage:[UIImage imageWithColor:RGB16(0xA33CBB)] forState:(UIControlStateSelected)];
+ [self.heartBtn setBackgroundImage:[UIImage imageWithColor:RGB16A(0x000000,0.3)] forState:(UIControlStateNormal)];
+ [self.heartBtn addRoundedCornersWithRadius:10];
+ self.heartBtn.userInteractionEnabled = NO;
+ [self addSubview:self.heartBtn];
+ [self.heartBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self);
+ make.width.mas_offset(60);
+ make.height.mas_offset(20);
+ make.top.equalTo(self.compereView).offset(13);
+ }];
+
+
+
+ self.waitBtn = [[UIButton alloc] init];
+ [self.waitBtn setTitle:@"等待邂逅" forState:(UIControlStateNormal)];
+ [self.waitBtn setTitleColor:RGB16A(0xffffff, 0.4) forState:(UIControlStateNormal)];
+ [self.waitBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateSelected)];
+ self.waitBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.waitBtn setBackgroundImage:[UIImage imageWithColor:RGB16(0xA33CBB)] forState:(UIControlStateSelected)];
+ [self.waitBtn setBackgroundImage:[UIImage imageWithColor:RGB16A(0x000000,0.3)] forState:(UIControlStateNormal)];
+ [self.waitBtn addRoundedCornersWithRadius:ScaleWidth(10)];
+ self.waitBtn.userInteractionEnabled = NO;
+ self.waitBtn.selected = YES;
+ [self addSubview:self.waitBtn];
+ [self.waitBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.right.equalTo(self.heartBtn.mas_left).offset(-23);
+ make.width.mas_offset(60);
+ make.height.mas_offset(20);
+ make.centerY.equalTo(self.heartBtn);
+ }];
+
+
+ self.handBtn = [[UIButton alloc] init];
+ self.handBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.handBtn setTitle:@"牵手良缘" forState:(UIControlStateNormal)];
+ [self.handBtn setTitleColor:RGB16A(0xffffff, 0.4) forState:(UIControlStateNormal)];
+ [self.handBtn setTitleColor:RGB16(0xffffff) forState:(UIControlStateSelected)];
+ [self.handBtn setBackgroundImage:[UIImage imageWithColor:RGB16(0xA33CBB)] forState:(UIControlStateSelected)];
+ [self.handBtn setBackgroundImage:[UIImage imageWithColor:RGB16A(0x000000,0.3)] forState:(UIControlStateNormal)];
+ [self.handBtn addRoundedCornersWithRadius:ScaleWidth(10)];
+ self.handBtn.userInteractionEnabled = NO;
+ [self addSubview:self.handBtn];
+ [self.handBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.heartBtn.mas_right).offset(23);
+ make.width.mas_offset(60);
+ make.height.mas_offset(20);
+ make.centerY.equalTo(self.heartBtn);
+ }];
+
+ self.heartDotImageView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_part_dot"]];
+ self.heartDotImageView1.contentMode = UIViewContentModeScaleAspectFit;
+ [self addSubview:self.heartDotImageView1];
+ [self.heartDotImageView1 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.waitBtn.mas_right);
+ make.right.equalTo(self.heartBtn.mas_left);
+ make.centerY.equalTo(self.heartBtn);
+ }];
+
+ self.heartDotImageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_part_dot"]];
+ self.heartDotImageView2.contentMode = UIViewContentModeScaleAspectFit;
+ [self addSubview:self.heartDotImageView2];
+ [self.heartDotImageView2 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.heartBtn.mas_right);
+ make.right.equalTo(self.handBtn.mas_left);
+ make.centerY.equalTo(self.heartBtn);
+ }];
+
+
+
+ self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_heart_bg"]];
+ self.bgImageView.contentMode = UIViewContentModeScaleToFill;
+ [self addSubview:self.bgImageView];
+ [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.width.mas_equalTo(ScaleWidth(375));
+ make.height.mas_equalTo(ScaleWidth(230));
+ make.centerX.equalTo(self);
+ make.top.equalTo(self.compereView.mas_bottom).offset(18);
+ }];
+// self.bgTopImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_top_heart_bg"]];
+// self.bgTopImageView.contentMode = UIViewContentModeScaleToFill;
+// [self addSubview:self.bgTopImageView];
+// [self.bgTopImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+// make.edges.equalTo(self.bgImageView);
+// }];
+
+ self.leftSeatView1 = [[QXFrientSeatView alloc] init];
+ self.leftSeatView1.isLeft = YES;
+ self.leftSeatView1.contentView.number = 1;
+ [self addSubview:self.leftSeatView1];
+ [self.leftSeatView1 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.compereView.mas_bottom);
+// make.left.equalTo(self.compereView.mas_right);
+ make.left.mas_equalTo(self.compereView.mas_right);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+
+ self.rightSeatView1 = [[QXFrientSeatView alloc] init];
+ self.rightSeatView1.isLeft = NO;
+ self.rightSeatView1.contentView.number = 6;
+ [self addSubview:self.rightSeatView1];
+ [self.rightSeatView1 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.compereView.mas_bottom);
+ make.right.equalTo(self.guestView.mas_left);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+
+ self.leftSeatView2 = [[QXFrientSeatView alloc] init];
+ self.leftSeatView2.isLeft = YES;
+ self.leftSeatView2.contentView.number = 2;
+ [self addSubview:self.leftSeatView2];
+ [self.leftSeatView2 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.leftSeatView1.mas_bottom);
+ make.left.equalTo(self.compereView);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+
+ self.rightSeatView2 = [[QXFrientSeatView alloc] init];
+ self.rightSeatView2.isLeft = NO;
+ self.rightSeatView2.contentView.number = 5;
+ [self addSubview:self.rightSeatView2];
+ [self.rightSeatView2 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.rightSeatView1.mas_bottom);
+ make.right.equalTo(self.guestView);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+
+ self.leftSeatView3 = [[QXFrientSeatView alloc] init];
+ self.leftSeatView3.isLeft = YES;
+ self.leftSeatView3.contentView.number = 3;
+ [self addSubview:self.leftSeatView3];
+ [self.leftSeatView3 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.leftSeatView2.mas_bottom);
+ make.left.equalTo(self.leftSeatView1);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+
+ self.rightSeatView3 = [[QXFrientSeatView alloc] init];
+ self.rightSeatView3.isLeft = NO;
+ self.rightSeatView3.contentView.number = 4;
+ [self addSubview:self.rightSeatView3];
+ [self.rightSeatView3 mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.top.equalTo(self.rightSeatView2.mas_bottom);
+ make.right.equalTo(self.rightSeatView1);
+ make.width.mas_equalTo(ScaleWidth(55));
+ make.height.mas_equalTo(ScaleWidth(55-10)+51);
+ }];
+ self.leftSeatView1.delegate = self;
+ self.leftSeatView2.delegate = self;
+ self.leftSeatView3.delegate = self;
+ self.rightSeatView1.delegate = self;
+ self.rightSeatView2.delegate = self;
+ self.rightSeatView3.delegate = self;
+
+
+ self.startBtn = [[UIButton alloc] init];
+ [self.startBtn setTitle:@"开始" forState:(UIControlStateNormal)];
+ self.startBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.startBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
+ [self.startBtn setBackgroundImage:[UIImage imageNamed:@"room_friend_start_btn_bg"] forState:(UIControlStateNormal)];
+ [self.startBtn addTarget:self action:@selector(startAction) forControlEvents:(UIControlEventTouchUpInside)];
+ [self addSubview:self.startBtn];
+ [self.startBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self.heartBtn);
+ make.width.mas_offset(70);
+ make.height.mas_offset(22);
+ make.top.equalTo(self.heartBtn.mas_bottom).offset(9);
+ }];
+
+ self.timeBgView = [[UIView alloc] init];
+ self.timeBgView.hidden = YES;
+ [self addSubview:self.timeBgView];
+ [self.timeBgView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.width.mas_equalTo(156);
+ make.height.mas_equalTo(22);
+ make.top.equalTo(self.startBtn);
+ make.centerX.equalTo(self.heartBtn);
+ }];
+
+ self.timeBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_time_bg"]];
+ [self.timeBgView addSubview:self.timeBgImageView];
+ [self.timeBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.timeBgView);
+ }];
+
+ self.timeLabel = [[UILabel alloc] init];
+ self.timeLabel.text = @"倒计时:00:00:00";
+ self.timeLabel.font = [UIFont systemFontOfSize:12];
+ self.timeLabel.textColor = RGB16(0xD7CBFF);
+ self.timeLabel.textAlignment = NSTextAlignmentCenter;
+ [self.timeBgView addSubview:self.timeLabel];
+ [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.timeBgView);
+ }];
+
+ [self addSubview:self.tenSecondLabel];
+ [self.tenSecondLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.centerY.equalTo(self);
+ }];
+
+
+ self.endBtn = [[UIButton alloc] init];
+ self.endBtn.hidden = YES;
+ [self.endBtn setTitle:@"结束" forState:(UIControlStateNormal)];
+ self.endBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.endBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
+ [self.endBtn setBackgroundImage:[UIImage imageNamed:@"room_friend_end_btn_bg"] forState:(UIControlStateNormal)];
+ [self.endBtn addTarget:self action:@selector(endAction) forControlEvents:(UIControlEventTouchUpInside)];
+ [self addSubview:self.endBtn];
+ [self.endBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.mas_equalTo(SCREEN_WIDTH/2);
+ make.width.mas_offset(90);
+ make.height.mas_offset(24);
+ make.bottom.equalTo(self.rightSeatView3.mas_top);
+ }];
+
+ self.delayBtn = [[UIButton alloc] init];
+ self.delayBtn.hidden = YES;
+ [self.delayBtn setTitle:@"延时" forState:(UIControlStateNormal)];
+ self.delayBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self.delayBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
+ [self.delayBtn setBackgroundImage:[UIImage imageNamed:@"room_friend_delay_btn_bg"] forState:(UIControlStateNormal)];
+ [self.delayBtn addTarget:self action:@selector(delayAction) forControlEvents:(UIControlEventTouchUpInside)];
+ [self addSubview:self.delayBtn];
+ [self.delayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.right.equalTo(self.endBtn.mas_left);
+ make.width.mas_offset(90);
+ make.height.mas_offset(24);
+ make.centerY.equalTo(self.endBtn);
+ }];
+
+
+ self.heartTopLineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"heart_line_31"]];
+ [self addSubview:self.heartTopLineImageView];
+ [self.heartTopLineImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.leftSeatView1.mas_right).offset(-5);
+ make.right.equalTo(self.rightSeatView1.mas_left).offset(5);
+ make.height.mas_equalTo(33);
+ make.top.equalTo(self.leftSeatView1).offset(22);
+ }];
+ self.heartTopImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_nor_heart"]];
+ [self addSubview:self.heartTopImageView];
+ [self.heartTopImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self);
+ make.width.mas_equalTo(43);
+ make.height.mas_equalTo(36);
+ make.centerY.equalTo(self.heartTopLineImageView);
+ }];
+ self.heartTopLabel = [[UILabel alloc] init];
+// DIN Alternate
+// DIN Condensed
+ self.heartTopLabel.font = [UIFont fontWithName:@"DIN Alternate" size:16];
+ self.heartTopLabel.text = @"0";
+ self.heartTopLabel.textColor = [UIColor whiteColor];
+ self.heartTopLabel.textAlignment = NSTextAlignmentCenter;
+ [self addSubview:self.heartTopLabel];
+ [self.heartTopLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.centerY.equalTo(self.heartTopImageView);
+ }];
+
+ self.heartTopLinePlayer.hidden = YES;
+ [self insertSubview:self.heartTopLinePlayer belowSubview:self.heartTopImageView];
+ [self.heartTopLinePlayer mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.heartTopLineImageView);
+ }];
+
+ self.heartCenterLineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"heart_line_31"]];
+ [self addSubview:self.heartCenterLineImageView];
+ [self.heartCenterLineImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.leftSeatView2.mas_right).offset(-5);
+ make.right.equalTo(self.rightSeatView2.mas_left).offset(5);
+ make.height.mas_equalTo(33);
+ make.top.equalTo(self.leftSeatView2).offset(22);
+ }];
+ self.heartCenterImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_top_heart_bg"]];
+ [self addSubview:self.heartCenterImageView];
+ [self.heartCenterImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self);
+ make.width.mas_equalTo(118);
+ make.height.mas_equalTo(72);
+ make.centerY.equalTo(self.heartCenterLineImageView).offset(-20);
+ }];
+
+
+ self.heartCenterValueBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_center_value_bg"]];
+ self.heartCenterValueBgImageView.contentMode = UIViewContentModeScaleToFill;
+ [self addSubview:self.heartCenterValueBgImageView];
+
+ self.heartCenterLabel = [[UILabel alloc] init];
+// DIN Alternate
+// DIN Condensed
+ self.heartCenterLabel.font = [UIFont fontWithName:@"DIN Condensed" size:32];
+ self.heartCenterLabel.text = @"0";
+ self.heartCenterLabel.textAlignment = NSTextAlignmentCenter;
+ self.heartCenterLabel.textColor = RGB16(0x853CFF);
+ [self addSubview:self.heartCenterLabel];
+
+
+
+
+
+
+ self.heartCenterLinePlayer.hidden = YES;
+ [self insertSubview:self.heartCenterLinePlayer belowSubview:self.heartCenterImageView];
+ [self.heartCenterLinePlayer mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.heartCenterLineImageView);
+ }];
+ [self.heartCenterLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self.heartCenterImageView);
+ make.centerY.equalTo(self.heartCenterLinePlayer);
+ }];
+ [self.heartCenterValueBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.heartCenterLabel).offset(-5);
+ make.right.equalTo(self.heartCenterLabel).offset(5);
+ make.height.mas_equalTo(35);
+ make.centerY.equalTo(self.heartCenterLabel).offset(-2);
+ }];
+
+ self.heartBottomLineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"heart_line_31"]];
+ [self addSubview:self.heartBottomLineImageView];
+ [self.heartBottomLineImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.equalTo(self.leftSeatView3.mas_right).offset(-5);
+ make.right.equalTo(self.rightSeatView3.mas_left).offset(5);
+ make.height.mas_equalTo(33);
+ make.top.equalTo(self.leftSeatView3).offset(22);
+ }];
+ self.heartBottomImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_friend_nor_heart"]];
+ [self addSubview:self.heartBottomImageView];
+ [self.heartBottomImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self);
+ make.width.mas_equalTo(43);
+ make.height.mas_equalTo(36);
+ make.centerY.equalTo(self.heartBottomLineImageView);
+ }];
+ self.heartBottomLabel = [[UILabel alloc] init];
+// DIN Alternate
+// DIN Condensed
+ self.heartBottomLabel.font = [UIFont fontWithName:@"DIN Alternate" size:16];
+ self.heartBottomLabel.text = @"0";
+ self.heartBottomLabel.textColor = [UIColor whiteColor];
+ [self addSubview:self.heartBottomLabel];
+ [self.heartBottomLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.centerY.equalTo(self.heartBottomImageView);
+ }];
+
+ self.heartBottomLinePlayer.hidden = YES;
+ [self insertSubview:self.heartBottomLinePlayer belowSubview:self.heartBottomImageView];
+ [self.heartBottomLinePlayer mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.edges.equalTo(self.heartBottomLineImageView);
+ }];
+
+ [self.leftSeatView1.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self.leftSeatView2.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self.leftSeatView3.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self.rightSeatView1.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self.rightSeatView2.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+ [self.rightSeatView3.contentView addTapBlock:^(id _Nonnull obj) {
+ [weakSelf didClickSeatView:obj];
+ }];
+
+
+ [self.allSeatViewArray replaceObjectAtIndex:8 withObject:self.compereView];
+ [self.allSeatViewArray replaceObjectAtIndex:9 withObject:self.guestView];
+ [self.allSeatViewArray replaceObjectAtIndex:0 withObject:self.leftSeatView1.contentView];
+ [self.allSeatViewArray replaceObjectAtIndex:1 withObject:self.leftSeatView2.contentView];
+ [self.allSeatViewArray replaceObjectAtIndex:2 withObject:self.leftSeatView3.contentView];
+ [self.allSeatViewArray replaceObjectAtIndex:3 withObject:self.rightSeatView3.contentView];
+ [self.allSeatViewArray replaceObjectAtIndex:4 withObject:self.rightSeatView2.contentView];
+ [self.allSeatViewArray replaceObjectAtIndex:5 withObject:self.rightSeatView1.contentView];
+ self.heartTopLineImageView.hidden = YES;
+ self.heartCenterLineImageView.hidden = YES;
+ self.heartBottomLineImageView.hidden = YES;
+
+
+ self.heartTopImageView.hidden = YES;
+ self.heartCenterImageView.hidden = YES;
+ self.heartBottomImageView.hidden = YES;
+}
+#pragma mark - QXRoomSeatDelegate
+-(void)friendPowerSendGiftWithUser:(QXRoomPitModel *)user heartId:(NSString *)heartId{
+ if ([self.delegate respondsToSelector:@selector(friendPowerSendGiftWithUser:heartId:)]) {
+ [self.delegate friendPowerSendGiftWithUser:user heartId:heartId];
+ }
+}
+
+-(void)setRoomModel:(QXRoomModel *)roomModel{
+ _roomModel = roomModel;
+ for (int i = 0; i < roomModel.room_info.pit_list.count; i++) {
+ QXRoomPitModel*model = roomModel.room_info.pit_list[i];
+ if (model.pit_number.integerValue == 7 || model.pit_number.integerValue == 8) {
+ continue;
+ }
+ if (model.pit_number.integerValue > 10) {
+ continue;
+ }
+ id object = self.allSeatViewArray[model.pit_number.integerValue-1];
+ if ([object isKindOfClass:[QXRoomSeatContentView class]]) {
+ QXRoomSeatContentView *contentView = (QXRoomSeatContentView *)object;
+ contentView.pitModel = model;
+ }else{
+ continue;
+ }
+ }
+ if (self.roomModel.user_info.pit_number.intValue > 0) {
+ self.myPitNumber = roomModel.user_info.pit_number.integerValue;
+ }else{
+ self.myPitNumber = -1;
+ }
+ [self configStep];
+ [self configGameOptionBtn];
+ [self configTime];
+ [self configHeart];
+ [self configPowerBtn];
+}
+// 配置操作按钮
+-(void)configGameOptionBtn{
+ /// 开始 、 结束、延时按钮
+ if (self.myPitNumber == 9){
+// || (self.roomModel.user_info.is_host.intValue == 1) || (self.roomModel.user_info.is_management.intValue == 1) || (self.roomModel.user_info.is_room_owner.intValue == 1)) {
+ /// 我在9号麦 或者 我有主持、管理、房主权限
+ if (self.roomModel.friend_info.step.integerValue == 1) {
+ // 当前为等待邂逅环节 显示开始按钮 隐藏延时、结束按钮
+ self.startBtn.hidden = NO;
+ self.endBtn.hidden = YES;
+ self.delayBtn.hidden = YES;
+ }else if (self.roomModel.friend_info.step.integerValue == 2) {
+ // 当前为心动连线环节 隐藏开始按钮 显示延时、结束按钮
+ self.startBtn.hidden = YES;
+ self.endBtn.hidden = NO;
+ self.delayBtn.hidden = NO;
+ }else{
+ // 其他环节按钮均不显示
+ self.startBtn.hidden = YES;
+ self.delayBtn.hidden = YES;
+ self.endBtn.hidden = YES;
+ }
+ }else{
+ // 所有观众均无按钮操作权限
+ self.startBtn.hidden = YES;
+ self.delayBtn.hidden = YES;
+ self.endBtn.hidden = YES;
+ }
+}
+// 倒计时显示配置
+-(void)configTime{
+ if (self.roomModel.friend_info.step.integerValue == 1) {
+ // 当前为等待邂逅环节 隐藏倒计时显示 停止定时器
+ self.timeBgView.hidden = YES;
+ [self stopTimer];
+ }else{
+ /// 其余两个阶段显示倒计时
+ self.timeBgView.hidden = NO;
+ }
+ if (self.roomModel.friend_info.step.intValue == 2) {
+ /// 心动连线时启动定时器
+ [self startTimer];
+ }
+ if (self.roomModel.friend_info.step.intValue == 3) {
+ /// 牵手良缘时溶质定时器
+ [self stopTimer];
+ self.timeLabel.text = @"倒计时:00:00:00";
+ }
+}
+/// 配置三个阶段
+-(void)configStep{
+ if (self.roomModel.friend_info.step.integerValue == 1) {
+ /// 等待邂逅 选中 其余两个不选中
+ self.waitBtn.selected = YES;
+ self.heartBtn.selected = NO;
+ self.handBtn.selected = NO;
+ }else if (self.roomModel.friend_info.step.integerValue == 2) {
+ /// 等待 、 心动选中 牵手不选中
+ self.waitBtn.selected = YES;
+ self.heartBtn.selected = YES;
+ self.handBtn.selected = NO;
+ }else{
+ /// 三个阶段全部选中
+ self.waitBtn.selected = YES;
+ self.heartBtn.selected = YES;
+ self.handBtn.selected = YES;
+ }
+}
+/// 配置
+-(void)configHeart{
+ if (self.roomModel.friend_info.step.intValue == 1) {
+ /// 隐藏中间心动值 、心动背景 、隐藏连线 连线停止动画
+ self.heartTopImageView.hidden = YES;
+ self.heartCenterImageView.hidden = YES;
+ self.heartBottomImageView.hidden = YES;
+ self.heartCenterLabel.hidden = YES;
+ self.heartCenterValueBgImageView.hidden = YES;
+ self.heartTopLabel.hidden = YES;
+ self.heartBottomLabel.hidden = YES;
+ self.heartTopLinePlayer.hidden = YES;
+ [self.heartTopLinePlayer stopAnimation];
+ self.heartCenterLinePlayer.hidden = YES;
+ [self.heartCenterLinePlayer stopAnimation];
+ self.heartBottomLinePlayer.hidden = YES;
+ [self.heartBottomLinePlayer stopAnimation];
+ self.topIsAnimate = NO;
+ self.centerIsAnimate = NO;
+ self.bottomIsAnimate = NO;
+ self.rightSeatView1.heartModel = nil;
+ self.rightSeatView2.heartModel = nil;
+ self.rightSeatView3.heartModel = nil;
+ self.leftSeatView1.heartModel = nil;
+ self.leftSeatView2.heartModel = nil;
+ self.leftSeatView3.heartModel = nil;
+ }else if (self.roomModel.friend_info.step.intValue == 2 || self.roomModel.friend_info.step.intValue == 3) {
+ QXRoomFriendHeartListModel *md1;
+ QXRoomFriendHeartListModel *md2;
+ QXRoomFriendHeartListModel *md3;
+ /// 获取三组心动值 (以下三个if判断 分别判断数组长度是否大于3 2 1 防止服务端数据错乱时闪退)
+ if (self.roomModel.friend_info.heart_list.count>=3) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ md2 = self.roomModel.friend_info.heart_list[1];
+ md3 = self.roomModel.friend_info.heart_list[2];
+ }
+ if (self.roomModel.friend_info.heart_list.count==2) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ md2 = self.roomModel.friend_info.heart_list[1];
+ }
+ if (self.roomModel.friend_info.heart_list.count==1) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ }
+ @weakify(self);
+ if (md1.heartNum.longValue>0) {
+ /// 第一组心动值大于1
+ self.heartCenterLabel.text = md1.heartNum;
+ self.heartCenterLabel.hidden = NO;
+ self.heartCenterValueBgImageView.hidden = NO;
+ self.heartCenterImageView.hidden = NO;
+ self.heartCenterLinePlayer.hidden = NO;
+ if (self.centerIsAnimate == NO) {
+ [self.heartCenterLineParser parseWithNamed:@"heart_line_31" inBundle:nil completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
+ if (videoItem != nil) {
+ @strongify(self);
+ self.heartCenterLinePlayer.videoItem = videoItem;
+ [self.heartCenterLinePlayer startAnimation];
+ self.centerIsAnimate = YES;
+ }
+ } failureBlock:^(NSError * _Nonnull error) {
+
+ }];
+ }
+ }else{
+ self.heartCenterImageView.hidden = YES;
+ self.heartCenterLabel.hidden = YES;
+ self.heartCenterValueBgImageView.hidden = YES;
+ self.heartCenterLinePlayer.hidden = YES;
+ [self.heartCenterLinePlayer stopAnimation];
+ }
+ if (md2.heartNum.longValue>0) {
+ self.heartTopLabel.text = md2.heartNum;
+ self.heartTopLabel.hidden = NO;
+ self.heartTopImageView.hidden = NO;
+ self.heartTopLinePlayer.hidden = NO;
+ if (self.topIsAnimate == NO) {
+ [self.heartTopLineParser parseWithNamed:@"heart_line_31" inBundle:nil completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
+ if (videoItem != nil) {
+ @strongify(self);
+ self.heartTopLinePlayer.videoItem = videoItem;
+ [self.heartTopLinePlayer startAnimation];
+ self.topIsAnimate = YES;
+ }
+ } failureBlock:^(NSError * _Nonnull error) {
+
+ }];
+ }
+ }else{
+ self.heartTopImageView.hidden = YES;
+ self.heartTopLabel.hidden = YES;
+ self.heartTopLinePlayer.hidden = YES;
+ [self.heartTopLinePlayer stopAnimation];
+ }
+ if (md3.heartNum.longValue>0) {
+ self.heartBottomLabel.text = md3.heartNum;
+ self.heartBottomLabel.hidden = NO;
+ self.heartBottomImageView.hidden = NO;
+ self.heartBottomLinePlayer.hidden = NO;
+ if (self.bottomIsAnimate == NO) {
+ [self.heartBottomLineParser parseWithNamed:@"heart_line_31" inBundle:nil completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
+ if (videoItem != nil) {
+ @strongify(self);
+ self.heartBottomLinePlayer.videoItem = videoItem;
+ [self.heartBottomLinePlayer startAnimation];
+ self.bottomIsAnimate = YES;
+ }
+ } failureBlock:^(NSError * _Nonnull error) {
+
+ }];
+ }
+ }else{
+ self.heartBottomImageView.hidden = YES;
+ self.heartBottomLabel.hidden = YES;
+ self.heartBottomLinePlayer.hidden = YES;
+ [self.heartBottomLinePlayer stopAnimation];
+ }
+
+ }
+
+}
+
+-(void)configPowerBtn{
+ QXRoomFriendHeartListModel *md1;
+ QXRoomFriendHeartListModel *md2;
+ QXRoomFriendHeartListModel *md3;
+ if (self.roomModel.friend_info.heart_list.count>=3) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ md2 = self.roomModel.friend_info.heart_list[1];
+ md3 = self.roomModel.friend_info.heart_list[2];
+ }
+ if (self.roomModel.friend_info.heart_list.count==2) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ md2 = self.roomModel.friend_info.heart_list[1];
+ }
+ if (self.roomModel.friend_info.heart_list.count==1) {
+ md1 = self.roomModel.friend_info.heart_list.firstObject;
+ }
+ if (md1.heartNum.longValue>0) {
+ if ([self.leftSeatView2.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.leftSeatView2.powerBtn.hidden = YES;
+ }else{
+ self.leftSeatView2.powerBtn.hidden = NO;
+ }
+ if ([self.rightSeatView2.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.rightSeatView2.powerBtn.hidden = YES;
+ }else{
+ self.rightSeatView2.powerBtn.hidden = NO;
+ }
+ self.leftSeatView2.heartModel = md1;
+ self.rightSeatView2.heartModel = md1;
+ }else{
+ self.leftSeatView2.powerBtn.hidden = YES;
+ self.rightSeatView2.powerBtn.hidden = YES;
+ }
+
+ if (md2.heartNum.longValue>0) {
+ if ([self.leftSeatView1.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.leftSeatView1.powerBtn.hidden = YES;
+ }else{
+ self.leftSeatView1.powerBtn.hidden = NO;
+ }
+ if ([self.rightSeatView1.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.rightSeatView1.powerBtn.hidden = YES;
+ }else{
+ self.rightSeatView1.powerBtn.hidden = NO;
+ }
+ self.leftSeatView1.heartModel = md2;
+ self.rightSeatView1.heartModel = md2;
+ }else{
+ self.leftSeatView1.powerBtn.hidden = YES;
+ self.rightSeatView1.powerBtn.hidden = YES;
+ }
+
+ if (md3.heartNum.longValue>0) {
+ if ([self.leftSeatView3.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.leftSeatView3.powerBtn.hidden = YES;
+ }else{
+ self.leftSeatView3.powerBtn.hidden = NO;
+ }
+ if ([self.rightSeatView3.contentView.pitModel.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.rightSeatView3.powerBtn.hidden = YES;
+ }else{
+ self.rightSeatView3.powerBtn.hidden = NO;
+ }
+ self.leftSeatView3.heartModel = md3;
+ self.rightSeatView3.heartModel = md3;
+ }else{
+ self.leftSeatView3.powerBtn.hidden = YES;
+ self.rightSeatView3.powerBtn.hidden = YES;
+ }
+}
+
+-(void)didUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number{
+ if (pit_number > 10) {
+ return;
+ }
+ id object = self.allSeatViewArray[pit_number-1];
+ if (![object isKindOfClass:[QXRoomSeatContentView class]]) {
+ return;
+ }
+ QXRoomSeatContentView *contentView = (QXRoomSeatContentView *)object;
+ QXRoomPitModel *model = contentView.pitModel;
+ if (isUpSeat) {
+ model.user_id = user.user_id;
+ model.avatar = user.avatar;
+ model.dress = user.dress;
+ model.sex = user.sex;
+ model.nickname = user.nickname;
+ model.user_code = user.user_code;
+ model.charm = user.charm;
+ }else{
+ model.user_id = @"0";
+ model.avatar = @"";
+ model.dress = @"";
+ model.sex = @"";
+ model.nickname = @"";
+ model.user_code = @"";
+ model.charm = @"";
+ if (contentView.isSeatSpeaking) {
+ [contentView stopAudioAnimation];
+ }
+ }
+ if ([user.user_id isEqualToString:[QXGlobal shareGlobal].loginModel.user_id]) {
+ if (isUpSeat) {
+ self.myPitNumber = pit_number;
+ }else{
+ self.myPitNumber = -1;
+ }
+ }
+ contentView.pitModel = model;
+ [self configGameOptionBtn];
+}
+-(void)didClickSeatView:(QXRoomSeatContentView*)seatView{
+
+ NSString *pit_number = [NSString stringWithFormat:@"%ld",seatView.number] ;
+ QXLOG(@"点击了%ld麦位",seatView.number);
+ if (seatView.pitModel.user_id.longLongValue > 0) {
+ if (self.delegate && [self.delegate respondsToSelector:@selector(didClickUserHeaderWithPitModel:userModel:isPkRoom:pkRoomId:isNoTakeOff:)]) {
+ [self.delegate didClickUserHeaderWithPitModel:seatView.pitModel userModel:nil isPkRoom:NO pkRoomId:@"" isNoTakeOff:NO];
+ }
+ }else{
+
+ if (seatView.number == 9) {
+ /// 麦位没人时点9号麦直接请求上麦
+ [QXMineNetwork roomUpSeatWithRoomId:self.roomModel.room_info.room_id pit_number:pit_number isUpSeat:YES successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+ return;
+ }else if (seatView.number == 10) {
+ if (self.myPitNumber == 9 || self.roomModel.user_info.is_room_owner.intValue == 1 || self.roomModel.user_info.is_management.intValue == 1) {
+ if (self.delegate && [self.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
+ [self.delegate didHugSeatWithPitNumber:@"10"];
+ }
+ }else{
+ showToast(@"请等待主持抱麦");
+ }
+ return;
+ }else{
+ if (self.myPitNumber == 9) {
+ // 排麦模式 弹出上麦
+ if (self.myPitNumber == 9 || self.roomModel.user_info.is_room_owner.intValue == 1 || self.roomModel.user_info.is_management.intValue == 1 || self.roomModel.user_info.is_host.intValue == 1) {
+ MJWeakSelf
+ /// 自己在9号麦 管理麦位
+ QXRoomPitModel *pitModel = seatView.pitModel;
+ self.settingView.roomId = self.roomModel.room_info.room_id;
+ self.settingView.isNoHaveLockMic = YES;
+ self.settingView.pitModel = pitModel;
+ self.settingView.setSuccessBlock = ^(QXRoomPitModel * _Nonnull pitModel) {
+ seatView.pitModel = pitModel;
+ // if (self.isPKMyRoom || self.isPKOtherRoom) {
+ // [seatView hideCharm];
+ // }
+ };
+ self.settingView.clickHugBlock = ^(QXRoomPitModel * _Nonnull pitModel) {
+ // [weakSelf showOnlineListWithPitNumber:pitModel.pit_number];
+ if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
+ [weakSelf.delegate didHugSeatWithPitNumber:pitModel.pit_number];
+ }
+ };
+ [self.settingView showInView:self.viewController.view];
+ }
+ }else{
+ if (self.roomModel.room_info.room_up_pit_type.intValue == 2) {
+ /// 自由麦请求
+ [QXMineNetwork roomUpSeatWithRoomId:self.roomModel.room_info.room_id pit_number:pit_number isUpSeat:YES successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+ }else{
+ /// 排麦模式
+ // 排麦模式 弹出上麦
+ if (self.myPitNumber == 9 || self.roomModel.user_info.is_room_owner.intValue == 1 || self.roomModel.user_info.is_management.intValue == 1 || self.roomModel.user_info.is_host.intValue == 1) {
+ MJWeakSelf
+ /// 自己在9号麦 管理麦位
+ QXRoomPitModel *pitModel = seatView.pitModel;
+ self.settingView.roomId = self.roomModel.room_info.room_id;
+ self.settingView.isNoHaveLockMic = YES;
+ self.settingView.pitModel = pitModel;
+ self.settingView.setSuccessBlock = ^(QXRoomPitModel * _Nonnull pitModel) {
+ seatView.pitModel = pitModel;
+ // if (self.isPKMyRoom || self.isPKOtherRoom) {
+ // [seatView hideCharm];
+ // }
+ };
+ self.settingView.clickHugBlock = ^(QXRoomPitModel * _Nonnull pitModel) {
+ // [weakSelf showOnlineListWithPitNumber:pitModel.pit_number];
+ if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didHugSeatWithPitNumber:)]) {
+ [weakSelf.delegate didHugSeatWithPitNumber:pitModel.pit_number];
+ }
+ };
+ [self.settingView showInView:self.viewController.view];
+ }
+ }
+ }
+ }
+ }
+}
+-(void)startAction{
+// [self.successView showInView:KEYWINDOW];
+// return;;
+ [QXMineNetwork friendRoomStartWithRoomId:self.roomModel.room_info.room_id successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+}
+
+-(void)endAction{
+ [QXMineNetwork friendRoomEndWithRoomId:self.roomModel.room_info.room_id friendId:self.roomModel.friend_info.friend_id successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+}
+
+-(void)delayAction{
+ [QXMineNetwork friendRoomDelayWithRoomId:self.roomModel.room_info.room_id friendId:self.roomModel.friend_info.friend_id successBlock:^(NSDictionary * _Nonnull dict) {
+
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+}
+-(void)createRelationActionWithRelationModel:(QXRoomFriendRelationModel*)relationModel relationId:(NSString*)relationId selectedCpName:(NSString *) selectedCpName{
+ MJWeakSelf
+ [QXMineNetwork friendRoomCreateRelationWithRoomId:self.roomModel.room_info.room_id
+ friendId:self.roomModel.friend_info.friend_id
+ user1Id:relationModel.user1_id
+ user2Id:relationModel.user2_id
+ relationId:relationId successBlock:^(NSDictionary * _Nonnull dict) {
+ [weakSelf.cpView hide];
+ } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
+ showToast(msg);
+ }];
+}
+
+-(void)friendSeatDidChanged:(NSArray *)pitArray{
+ if (self.myPitNumber ==9 || self.myPitNumber == 10) {
+
+ }else{
+ self.myPitNumber = -1;
+ }
+ for (QXRoomPitModel*model in pitArray) {
+ QXRoomSeatContentView *contentView = self.allSeatViewArray[model.pit_number.intValue-1];
+ QXRoomPitModel *md = contentView.pitModel;
+ md.user_id = model.user_id;
+ md.avatar = model.avatar;
+ md.dress = model.dress;
+ md.sex = model.sex;
+ md.nickname = model.nickname;
+ md.user_code = model.user_code;
+ md.charm = model.charm;
+ contentView.pitModel = md;
+ if (contentView.isSeatSpeaking) {
+ [contentView stopAudioAnimation];
+ }
+ if ([md.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ self.myPitNumber = md.pit_number.integerValue;
+ }
+ }
+}
+
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(nonnull QXRoomFriendRelationModel *)relationModel{
+ if (step.intValue == 1) {
+ self.roomModel.friend_info.heart_list = @[];
+ }
+ self.roomModel.friend_info.step = [NSString stringWithFormat:@"%@",step];
+ self.roomModel.friend_info.friend_id = friend_id;
+ self.roomModel.friend_info.end_time = end_time.longLongValue;
+ [self configStep];
+ [self configGameOptionBtn];
+ [self configTime];
+ [self configHeart];
+ [self configPowerBtn];
+ if (step.intValue == 3 && relationModel != nil) {
+ if (self.myPitNumber == 9) {
+ if (self.cpView.dataArray.count == 0) {
+ [self.cpView getRelationShipList];
+ }
+ self.cpView.model = relationModel;
+ [self.cpView showInView:KEYWINDOW];
+ }
+ }
+}
+/// 交友房时间发生延时 end_time 截止时间
+-(void)friendTimeDelayWithTime:(NSString*)end_time{
+ self.roomModel.friend_info.end_time = end_time.longLongValue;
+ [self startTimer];
+}
+/// 心动值发生变化
+-(void)friendHeartNumberDidChanged:(NSArray *)heartArray{
+ self.roomModel.friend_info.heart_list = heartArray;
+ [self configHeart];
+ [self configPowerBtn];
+}
+// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel{
+ [self.successView setDataWithRelationModel:relationModel cpName:relationModel.relation_name];
+ [self.successView showInView:KEYWINDOW];
+}
+
+
+-(void)clearCharm{
+ for (id object in self.allSeatViewArray) {
+ if ([object isKindOfClass:[QXRoomSeatContentView class]]) {
+ QXRoomSeatContentView *contentView = (QXRoomSeatContentView *)object;
+ QXRoomPitModel *model = contentView.pitModel;
+ model.charm = @"0";
+ contentView.pitModel = model;
+ }
+ }
+}
+-(void)setSeatCharmWithUser:(QXUserHomeModel *)model{
+ for (QXRoomSeatContentView *seatView in self.allSeatViewArray) {
+ QXRoomPitModel *md = seatView.pitModel;
+ if ([model.user_id isEqualToString:md.user_id]) {
+ md.charm = model.charm;
+ seatView.pitModel = md;
+ break;
+ }
+ }
+}
+
+-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user{
+ for (QXRoomSeatContentView *seatView in self.allSeatViewArray) {
+ QXRoomPitModel *md = seatView.pitModel;
+ if ([user.user_id isEqualToString:md.user_id]) {
+ md.dress = user.dress;
+ md.nickname = user.nickname;
+ md.sex = user.sex;
+ md.avatar = user.avatar;
+ seatView.pitModel = md;
+ break;
+ }
+ }
+}
+-(void)animateIsFinishedWithModel:(QXRoomFriendRelationModel *)model{
+ if ([model.room_id isExist]) {
+ if ([model.user1_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id] || [model.user2_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
+ [[QXGlobal shareGlobal] joinRoomWithRoomId:model.room_id isRejoin:NO navagationController:self.viewController.navigationController];
+ }
+ }
+ if (_successView) {
+ _successView.delegate = nil;
+ _successView = nil;
+ }
+}
+-(void)startTimer{
+ MJWeakSelf
+ NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];
+ // 将秒转换为毫秒
+ long long milliseconds = (long long)(timeInterval);
+ self.startTime = self.roomModel.friend_info.end_time - milliseconds;
+ if (self.startTime <= 0) {
+ //时间错误不进行倒计时
+ self.timeLabel.text = @"倒计时:00:00:00";
+ return;
+ }
+ [self stopTimer];
+ _timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
+ dispatch_async(dispatch_get_main_queue(), ^{
+ weakSelf.startTime--;
+ NSInteger hour = self.startTime/60/60;
+ NSInteger min = (self.startTime % 3600) / 60;
+ NSInteger second = self.startTime % 60;
+ if (weakSelf.startTime <= 10) {
+ weakSelf.tenSecondLabel.text = [NSString stringWithFormat:@"%ld",weakSelf.startTime];
+ weakSelf.tenSecondLabel.hidden = NO;
+ [weakSelf addBoomAnimateWithView:weakSelf.tenSecondLabel isRepeat:NO duration:0.3 removedOnCompletion:YES];
+ }else{
+ weakSelf.tenSecondLabel.hidden = YES;
+ }
+ weakSelf.timeLabel.text = [NSString stringWithFormat:@"倒计时:%02ld:%02ld:%02ld",hour,min,(long)second];
+ if (weakSelf.startTime<=0) {
+ [weakSelf stopTimer];
+ weakSelf.tenSecondLabel.hidden = YES;
+ weakSelf.timeLabel.text = @"00:00:00";
+ }
+ });
+ }];
+}
+-(void)addBoomAnimateWithView:(UIView*)view isRepeat:(BOOL)isRepeat duration:(CGFloat)duration removedOnCompletion:(BOOL)removedOnCompletion{
+ CABasicAnimation *anima = [CABasicAnimation animation];
+ anima.keyPath = @"transform.scale";
+ anima.fromValue = @1.0;
+ anima.toValue = @1.3;
+ if (isRepeat) {
+ anima.repeatCount = 99999;
+ }else{
+ anima.repeatCount = 1;
+ }
+ anima.duration = duration==0?0.15:duration;
+ anima.autoreverses = YES;
+ anima.removedOnCompletion = removedOnCompletion;
+ [view.layer addAnimation:anima forKey:nil];
+}
+-(void)stopTimer{
+ if (_timer) {
+ [self->_timer invalidate];
+ self->_timer= nil;
+ }
+}
+
+//- (SVGAPlayer *)svgaPlayer {
+// if (_svgaPlayer == nil) {
+// _svgaPlayer = [[SVGAPlayer alloc] init];
+// _svgaPlayer.loops = 1;
+// _svgaPlayer.clearsAfterStop = YES;
+// _svgaPlayer.delegate = self;
+// _svgaPlayer.contentMode = UIViewContentModeScaleAspectFill;
+//
+// // [self.sweetRoomContentView.resultSvgaView addSubview:_resultPlayer];
+// // [_svgaPlayer mas_makeConstraints:^(MASConstraintMaker *make) {
+// // make.edges.mas_equalTo(0);
+// // }];
+// }
+// return _svgaPlayer;
+//}
+//- (SVGAParser *)parser {
+// if (!_parser) {
+// _parser = [[SVGAParser alloc] init];
+// }
+// return _parser;
+//}
+-(SVGAPlayer *)heartTopLinePlayer{
+ if (_heartTopLinePlayer == nil) {
+ _heartTopLinePlayer = [[SVGAPlayer alloc] init];
+ _heartTopLinePlayer.loops = 99999;
+ _heartTopLinePlayer.clearsAfterStop = YES;
+ _heartTopLinePlayer.delegate = self;
+ _heartTopLinePlayer.contentMode = UIViewContentModeScaleToFill;
+ }
+ return _heartTopLinePlayer;
+}
+-(SVGAParser *)heartTopLineParser{
+ if (!_heartTopLineParser) {
+ _heartTopLineParser = [[SVGAParser alloc] init];
+ }
+ return _heartTopLineParser;
+}
+-(SVGAPlayer *)heartCenterLinePlayer{
+ if (_heartCenterLinePlayer == nil) {
+ _heartCenterLinePlayer = [[SVGAPlayer alloc] init];
+ _heartCenterLinePlayer.loops = 99999;
+ _heartCenterLinePlayer.clearsAfterStop = YES;
+ _heartCenterLinePlayer.delegate = self;
+ _heartCenterLinePlayer.contentMode = UIViewContentModeScaleToFill;
+ }
+ return _heartCenterLinePlayer;
+}
+-(SVGAParser *)heartCenterLineParser{
+ if (!_heartCenterLineParser) {
+ _heartCenterLineParser = [[SVGAParser alloc] init];
+ }
+ return _heartCenterLineParser;
+}
+-(SVGAPlayer *)heartBottomLinePlayer{
+ if (_heartBottomLinePlayer == nil) {
+ _heartBottomLinePlayer = [[SVGAPlayer alloc] init];
+ _heartBottomLinePlayer.loops = 99999;
+ _heartBottomLinePlayer.clearsAfterStop = YES;
+ _heartBottomLinePlayer.delegate = self;
+ _heartBottomLinePlayer.contentMode = UIViewContentModeScaleToFill;
+ }
+ return _heartBottomLinePlayer;
+}
+-(SVGAParser *)heartBottomLineParser{
+ if (!_heartBottomLineParser) {
+ _heartBottomLineParser = [[SVGAParser alloc] init];
+ }
+ return _heartBottomLineParser;
+}
+
+-(NSMutableArray *)allSeatViewArray{
+ if (!_allSeatViewArray) {
+ _allSeatViewArray = [NSMutableArray arrayWithArray:@[
+ @"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10"
+ ]];
+ }
+ return _allSeatViewArray;
+}
+-(QXTimer *)timer{
+ if (!_timer) {
+ MJWeakSelf
+ _timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
+ weakSelf.startTime--;
+ if (weakSelf.startTime<=0) {
+ [weakSelf stopTimer];
+ }
+ }];
+ }
+ return _timer;
+}
+
+-(QXRoomSeatSettingView *)settingView{
+ if (!_settingView) {
+ _settingView = [[QXRoomSeatSettingView alloc] init];
+ }
+ return _settingView;
+}
+-(UILabel *)tenSecondLabel{
+ if (!_tenSecondLabel) {
+ _tenSecondLabel = [[UILabel alloc] init];
+ _tenSecondLabel.font = [UIFont boldSystemFontOfSize:110];
+ _tenSecondLabel.textColor = [UIColor whiteColor];
+ _tenSecondLabel.hidden = YES;
+ _tenSecondLabel.textAlignment = NSTextAlignmentCenter;
+ }
+ return _tenSecondLabel;
+}
+-(QXFriendCPView *)cpView{
+ if (!_cpView) {
+ _cpView = [[QXFriendCPView alloc] init];
+ MJWeakSelf
+ _cpView.commitBlock = ^(QXRoomFriendRelationModel * _Nonnull relationModel, NSString * _Nonnull selectedCpId, NSString * _Nonnull selectedCpName) {
+ [weakSelf createRelationActionWithRelationModel:relationModel relationId:selectedCpId selectedCpName:selectedCpName];
+ };
+ }
+ return _cpView;
+}
+-(QXFriendCPSuccessView *)successView{
+ if (!_successView) {
+ _successView = [[QXFriendCPSuccessView alloc] init];
+ _successView.delegate = self;
+ }
+ return _successView;
+}
+
+
+-(void)destroyViews{
+ for (id object in self.allSeatViewArray) {
+ if ([object isKindOfClass:[QXRoomSeatContentView class]]) {
+ QXRoomSeatContentView *contentView = (QXRoomSeatContentView *)object;
+ [contentView destroyViews];
+ }
+ }
+}
+@end
+
+
+
+@implementation QXFrientSeatView
+
+- (instancetype)init
+{
+ self = [super init];
+ if (self) {
+ [self initSubviews];
+ }
+ return self;
+}
+-(void)initSubviews{
+ self.powerBtn = [[UIButton alloc] init];
+ [self.powerBtn setTitle:@"助力" forState:(UIControlStateNormal)];
+ [self.powerBtn addRoundedCornersWithRadius:10];
+ [self.powerBtn addTarget:self action:@selector(powerAction) forControlEvents:(UIControlEventTouchUpInside)];
+ self.powerBtn.hidden = YES;
+ [self.powerBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
+ self.powerBtn.titleLabel.font = [UIFont systemFontOfSize:12];
+ [self addSubview:self.powerBtn];
+ [self.powerBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.centerX.equalTo(self);
+ make.bottom.equalTo(self);
+ make.height.mas_equalTo(20);
+ make.width.mas_equalTo(44);
+ }];
+
+ self.contentView = [[QXRoomSeatContentView alloc] init];
+ self.contentView.type = QXRoomSeatContentViewTypeFriend;
+ [self addSubview:self.contentView];
+ [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.equalTo(self);
+ make.bottom.equalTo(self.powerBtn.mas_top).offset(-3);
+ }];
+
+
+}
+-(void)setHeartModel:(QXRoomFriendHeartListModel *)heartModel{
+ _heartModel = heartModel;
+}
+-(void)powerAction{
+ if (self.delegate && [self.delegate respondsToSelector:@selector(friendPowerSendGiftWithUser:heartId:)]) {
+ [self.delegate friendPowerSendGiftWithUser:self.contentView.pitModel heartId:self.heartModel.heartId];
+ }
+}
+
+-(void)setIsLeft:(BOOL)isLeft{
+ _isLeft = isLeft;
+ [self.powerBtn setBackgroundColor:isLeft?RGB16(0xD449E4):RGB16(0x4965E4)];
+ self.contentView.noUserImageView.image = [UIImage imageNamed:isLeft?@"room_friend_left_seat":@"room_friend_right_seat"];
+}
+@end
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.h b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.h
index 40c400d..0507a77 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.h
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.h
@@ -9,6 +9,7 @@
#import "QXRoomSeatTypeNormalView.h"
#import "QXRoomModel.h"
#import "QXRoomSeatDelegate.h"
+#import "QXRoomFriendRelationModel.h"
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
@@ -23,6 +24,8 @@ typedef NS_ENUM(NSInteger) {
QXRoomSeatViewTypeCabin,
/// pk
QXRoomSeatViewTypePK,
+ /// 交友房
+ QXRoomSeatViewTypeFriend,
}QXRoomSeatViewType;
@@ -55,6 +58,8 @@ typedef NS_ENUM(NSInteger) {
/// 房间内用户信息发生变化
-(void)roomUserInfoDidChanged:(QXUserHomeModel *)user;
+
+
/// 拍卖位上下麦
-(void)didAuctiontUpDownSeatWithUser:(QXUserHomeModel *)user isUpSeat:(BOOL)isUpSeat;
/// 开始拍卖
@@ -65,6 +70,9 @@ typedef NS_ENUM(NSInteger) {
-(void)auctionDelayTimeWithEndTime:(NSString *)endTime;
/// 拍卖类型发生变化
-(void)auctionTypeDidChanged:(NSString *)type;
+
+
+
/// 私密小屋心动值发生变化
-(void)cabinRoomHotValueDidChanged:(NSString*)hot_value;
@@ -82,6 +90,23 @@ typedef NS_ENUM(NSInteger) {
victory_cover:(NSString*)victory_cover
defeated_name:(NSString*)defeated_name
defeated_cover:(NSString*)defeated_cover;
+
+
+
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(QXRoomFriendRelationModel*)relationModel;
+/// 交友房时间发生延时 end_time 截止时间
+-(void)friendTimeDelayWithTime:(NSString*)end_time;
+/// 交友房麦位发生变化
+-(void)friendSeatDidChanged:(NSArray*)pitArray;
+/// 心动值发生变化
+-(void)friendHeartNumberDidChanged:(NSArray *)heartArray;
+/// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel;
+/// 有人退出交友房私密小屋
+-(void)friendCabinRoomIsQuit;
+/// 私密小屋时间发生延时
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time;
@end
NS_ASSUME_NONNULL_END
diff --git a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.m b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.m
index 07527f4..932d196 100644
--- a/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.m
+++ b/QXLive/HomePage(声播)/View/房间/麦位视图/QXRoomSeatView.m
@@ -12,6 +12,7 @@
#import "QXRoomOnlineUserListView.h"
#import "QXRoomSeatTypeCabinView.h"
#import "QXRoomSeatPKView.h"
+#import "QXRoomSeatTypeFrientView.h"
@interface QXRoomSeatView()
@property (nonatomic,strong)QXRoomSeatTypeNormalView *normalSeatView;
@@ -24,6 +25,8 @@
@property (nonatomic,strong)QXRoomSeatTypeCabinView *cabinView;
@property (nonatomic,strong)QXRoomSeatPKView *roomPkView;
+
+@property (nonatomic,strong)QXRoomSeatTypeFrientView *roomFriendView;
@end
@@ -151,6 +154,39 @@
}];
return;
}
+ if (_roomFriendView) {
+ _roomFriendView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_roomFriendView destroyViews];
+ [self->_roomFriendView removeFromSuperview];
+ self->_roomFriendView = nil;
+ [self addSubview:self.normalSeatView];
+ [self.normalSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.normalSeatView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.normalSeatView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
[self addSubview:self.normalSeatView];
[self.normalSeatView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self);
@@ -263,6 +299,39 @@
}];
return;
}
+ if (_roomFriendView) {
+ _roomFriendView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_roomFriendView destroyViews];
+ [self->_roomFriendView removeFromSuperview];
+ self->_roomFriendView = nil;
+ [self addSubview:self.auctionView];
+ [self.auctionView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.auctionView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.auctionView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
[self addSubview:self.auctionView];
[self.auctionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self);
@@ -372,7 +441,39 @@
}];
return;
}
-
+ if (_roomFriendView) {
+ _roomFriendView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_roomFriendView destroyViews];
+ [self->_roomFriendView removeFromSuperview];
+ self->_roomFriendView = nil;
+ [self addSubview:self.songView];
+ [self.songView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.songView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.songView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
[self addSubview:self.songView];
[self.songView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self);
@@ -456,6 +557,113 @@
make.left.right.top.bottom.equalTo(self);
}];
}
+-(void)initRoomFriendView{
+ if (_normalSeatView) {
+ // [_normalSeatView removeFromSuperview];
+ // _normalSeatView = nil;
+ _normalSeatView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_normalSeatView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_normalSeatView destroyViews];
+ [self->_normalSeatView removeFromSuperview];
+ self->_normalSeatView = nil;
+ [self addSubview:self.roomFriendView];
+ [self.roomFriendView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.roomFriendView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
+ if (_auctionView) {
+ _auctionView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_auctionView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_auctionView destroyViews];
+ [self->_auctionView removeFromSuperview];
+ self->_auctionView = nil;
+ [self addSubview:self.roomFriendView];
+ [self.roomFriendView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.roomFriendView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
+ if (_songView) {
+ _songView.transform = CGAffineTransformIdentity;
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self->_songView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ } completion:^(BOOL finished) {
+ [self->_songView destroyViews];
+ [self->_songView removeFromSuperview];
+ self->_songView = nil;
+ [self addSubview:self.roomFriendView];
+ [self.roomFriendView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+ self.roomFriendView.transform = CGAffineTransformMakeScale(0.01, 0.01);
+ // 弹性动画
+ [UIView animateWithDuration:0.5
+ delay:0
+ usingSpringWithDamping:0.9
+ initialSpringVelocity:0.1
+ options:UIViewAnimationOptionCurveEaseOut
+ animations:^{
+ self.roomFriendView.transform = CGAffineTransformIdentity;
+ } completion:^(BOOL finished) {
+
+ }];
+ }];
+ return;
+ }
+ [self addSubview:self.roomFriendView];
+ [self.roomFriendView mas_makeConstraints:^(MASConstraintMaker *make) {
+ make.left.right.top.bottom.equalTo(self);
+ }];
+}
- (void)initCabinView{
self.cabinView = [[QXRoomSeatTypeCabinView alloc] init];
@@ -483,11 +691,15 @@
case QXRoomSeatViewTypePK:
self.roomPkView.myPitNumber = myPitNumber;
break;
+ case QXRoomSeatViewTypeFriend:
+ self.roomFriendView.myPitNumber = myPitNumber;
+ break;
default:
break;
}
}
+
-(void)setType:(QXRoomSeatViewType)type{
_type = type;
switch (type) {
@@ -517,6 +729,10 @@
[self initRoomPKView];
}
break;
+ case QXRoomSeatViewTypeFriend:{
+ [self initRoomFriendView];
+ }
+ break;
default:
break;
}
@@ -574,6 +790,9 @@
case QXRoomSeatViewTypePK:
self.roomPkView.roomModel = roomModel;
break;
+ case QXRoomSeatViewTypeFriend:
+ self.roomFriendView.roomModel = roomModel;
+ break;
default:
break;
}
@@ -637,6 +856,9 @@
case QXRoomSeatViewTypePK:
[self.roomPkView clearCharm];
break;
+ case QXRoomSeatViewTypeFriend:
+ [self.roomFriendView clearCharm];
+ break;
default:
break;
}
@@ -658,6 +880,9 @@
case QXRoomSeatViewTypePK:
[self.roomPkView setSeatCharmWithUser:model];
break;
+ case QXRoomSeatViewTypeFriend:
+ [self.roomFriendView setSeatCharmWithUser:model];
+ break;
default:
break;
}
@@ -707,6 +932,83 @@
}
}
+#pragma mark - 交友房
+/// 交友房阶段发生变化 step 阶段 1等待 2心动 3牵手 friend_id 场次id
+-(void)friendPartDidChangedWithType:(NSString*)step friend_id:(NSString*)friend_id end_time:(NSString*)end_time relationModel:(QXRoomFriendRelationModel*)relationModel{
+ switch (self.type) {
+ case QXRoomSeatViewTypeFriend:{
+ [self.roomFriendView friendPartDidChangedWithType:step friend_id:friend_id end_time:end_time relationModel:relationModel];
+ }
+ break;
+ default:
+ break;
+ }
+}
+/// 交友房时间发生延时 end_time 截止时间
+-(void)friendTimeDelayWithTime:(NSString*)end_time{
+ switch (self.type) {
+ case QXRoomSeatViewTypeFriend:{
+ [self.roomFriendView friendTimeDelayWithTime:end_time];
+ }
+ break;
+ default:
+ break;
+ }
+}
+-(void)friendSeatDidChanged:(NSArray *)pitArray{
+ switch (self.type) {
+ case QXRoomSeatViewTypeFriend:{
+ [self.roomFriendView friendSeatDidChanged:pitArray];
+ }
+ break;
+ default:
+ break;
+ }
+}
+-(void)friendHeartNumberDidChanged:(NSArray *)heartArray{
+ switch (self.type) {
+ case QXRoomSeatViewTypeFriend:{
+ [self.roomFriendView friendHeartNumberDidChanged:heartArray];
+ }
+ break;
+ default:
+ break;
+ }
+}
+/// 关系创建完成
+-(void)friendRelationIsCreatedWithrelationModel:(QXRoomFriendRelationModel*)relationModel{
+ switch (self.type) {
+ case QXRoomSeatViewTypeFriend:{
+ [self.roomFriendView friendRelationIsCreatedWithrelationModel:relationModel];
+ }
+ break;
+ default:
+ break;
+ }
+}
+/// 有人退出交友房私密小屋
+-(void)friendCabinRoomIsQuit{
+
+}
+/// 私密小屋时间发生延时
+-(void)friendCabinRoomTimeDelayWithTime:(NSString*)end_time{
+ switch (self.type) {
+ case QXRoomSeatViewTypeCabin:{
+ [self.cabinView friendCabinRoomTimeDelayWithTime:end_time];
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+/// 助力
+-(void)friendPowerSendGiftWithUser:(QXRoomPitModel *)user heartId:(NSString *)heartId{
+ if ([self.delegate respondsToSelector:@selector(friendPowerSendGiftWithUser:heartId:)]) {
+ [self.delegate friendPowerSendGiftWithUser:user heartId:heartId];
+ }
+}
+
-(QXRoomSeatTypeNormalView *)normalSeatView{
if (!_normalSeatView) {
_normalSeatView = [[QXRoomSeatTypeNormalView alloc] init];
@@ -756,6 +1058,9 @@
case QXRoomSeatViewTypePK:
[self.roomPkView didUpDownSeatWithUser:user isUpSeat:isUpSeat pit_number:pit_number];
break;
+ case QXRoomSeatViewTypeFriend:
+ [self.roomFriendView didUpDownSeatWithUser:user isUpSeat:isUpSeat pit_number:pit_number];
+ break;
default:
break;
}
@@ -829,6 +1134,9 @@
case QXRoomSeatViewTypePK:
[self.roomPkView roomUserInfoDidChanged:user];
break;
+ case QXRoomSeatViewTypeFriend:
+ [self.roomFriendView roomUserInfoDidChanged:user];
+ break;
default:
break;
}
@@ -837,15 +1145,26 @@
-(void)destroyViews{
if (_normalSeatView) {
[self.normalSeatView destroyViews];
+ _normalSeatView = nil;
}
if (_songView) {
[self.songView destroyViews];
+ _songView = nil;
}
if (_auctionView) {
[self.auctionView destroyViews];
}
if (_roomPkView) {
[self.roomPkView destroyViews];
+ _roomPkView = nil;
+ }
+ if (_roomFriendView) {
+ [self.roomFriendView destroyViews];
+ _roomFriendView = nil;
+ }
+ if (_cabinView) {
+ [self.cabinView destroyViews];
+ _cabinView = nil;
}
}
@@ -871,4 +1190,11 @@
}
return _roomPkView;
}
+-(QXRoomSeatTypeFrientView *)roomFriendView{
+ if (!_roomFriendView) {
+ _roomFriendView = [[QXRoomSeatTypeFrientView alloc] init];
+ _roomFriendView.delegate = self;
+ }
+ return _roomFriendView;
+}
@end
diff --git a/QXLive/HomePage(声播)/View/首页/排行榜/QXRankTopThreeView.m b/QXLive/HomePage(声播)/View/首页/排行榜/QXRankTopThreeView.m
index 33c2750..61c8865 100644
--- a/QXLive/HomePage(声播)/View/首页/排行榜/QXRankTopThreeView.m
+++ b/QXLive/HomePage(声播)/View/首页/排行榜/QXRankTopThreeView.m
@@ -6,7 +6,12 @@
//
#import "QXRankTopThreeView.h"
-
+#import "QXUserHomePageViewController.h"
+@interface QXRankTopThreeView()
+@property (nonatomic,strong)QXMyRankModel *firstModel;
+@property (nonatomic,strong)QXMyRankModel *secondModel;
+@property (nonatomic,strong)QXMyRankModel *thirdModel;
+@end
@implementation QXRankTopThreeView
- (instancetype)initWithFrame:(CGRect)frame
@@ -14,6 +19,31 @@
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle]loadNibNamed:@"QXRankTopThreeView" owner:nil options:nil] lastObject];
+ MJWeakSelf
+ [self.firstHeaderImage addTapBlock:^(id _Nonnull obj) {
+ if ([self.firstModel.user_id isExist]) {
+ QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
+ vc.user_id = self.firstModel.user_id;
+ [weakSelf.navigationController pushViewController:vc animated:YES];
+ }
+ return;
+ }];
+ [self.secondHeaderImage addTapBlock:^(id _Nonnull obj) {
+ if ([self.secondModel.user_id isExist]) {
+ QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
+ vc.user_id = self.secondModel.user_id;
+ [weakSelf.navigationController pushViewController:vc animated:YES];
+ }
+ return;
+ }];
+ [self.thirdHeaderImage addTapBlock:^(id _Nonnull obj) {
+ if ([self.thirdModel.user_id isExist]) {
+ QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
+ vc.user_id = self.thirdModel.user_id;
+ [weakSelf.navigationController pushViewController:vc animated:YES];
+ }
+ return;
+ }];
self.frame = frame;
}
return self;
@@ -59,6 +89,9 @@
self.thirdRankValueLabel.text = [NSString qx_showHotCountNum:thirdModel.total.longLongValue];
self.thirdRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
+ self.firstModel = firstModel;
+ self.secondModel = secondModel;
+ self.thirdModel = thirdModel;
}
-(void)resetView{
self.firstHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
@@ -113,6 +146,9 @@
self.thirdRankValueLabel.text = [NSString qx_showHotCountNum:thirdModel.total.longLongValue];
self.thirdRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
+ self.firstModel = firstModel;
+ self.secondModel = secondModel;
+ self.thirdModel = thirdModel;
}
-(void)setGuildList:(NSArray *)guildList{
_guildList = guildList;
diff --git a/QXLive/Login(登录)/Controlller/QXLoginViewController.m b/QXLive/Login(登录)/Controlller/QXLoginViewController.m
index 85c4894..44c21fb 100644
--- a/QXLive/Login(登录)/Controlller/QXLoginViewController.m
+++ b/QXLive/Login(登录)/Controlller/QXLoginViewController.m
@@ -75,7 +75,7 @@
[self.backBtn addTarget:self action:@selector(backAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:self.backBtn];
-// self.isCodeLogin = YES;
+ self.isCodeLogin = YES;
// self.welcomeLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, kSafeAreaTop+86, SCREEN_WIDTH-32, 36)];
// self.welcomeLabel.font = [UIFont boldSystemFontOfSize:24];
//// self.welcomeLabel.text = QXText(@"欢迎来到秘地");
diff --git a/QXLive/Mine(音域)/Model/QXRoomModel.h b/QXLive/Mine(音域)/Model/QXRoomModel.h
index 4d6c54e..ac100df 100644
--- a/QXLive/Mine(音域)/Model/QXRoomModel.h
+++ b/QXLive/Mine(音域)/Model/QXRoomModel.h
@@ -10,7 +10,7 @@
#import "QXSongListModel.h"
NS_ASSUME_NONNULL_BEGIN
-@class QXRoomInfoModel,QXRoomPitModel,QXRoomOwnerModel,QXHeadLineModel,QXRoomAuction,QXRoomAuctionUser,QXRoomCpUser,QXRoomPkInfo;
+@class QXRoomInfoModel,QXRoomPitModel,QXRoomOwnerModel,QXHeadLineModel,QXRoomAuction,QXRoomAuctionUser,QXRoomCpUser,QXRoomPkInfo,QXRoomFriendInfo,QXRoomFriendHeartListModel;
@interface QXRoomModel : NSObject
/// 房间信息
@property (nonatomic,strong)QXRoomInfoModel *room_info;
@@ -28,6 +28,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)QXRoomCpUser *cp_user;
/// pk信息
@property (nonatomic,strong)QXRoomPkInfo *pk_info;
+/// 交友房信息
+@property (nonatomic,strong)QXRoomFriendInfo *friend_info;
/// k歌麦位
@property (nonatomic,strong)NSArray< QXRoomPitModel*> *song_pit_list;
@end
@@ -49,7 +51,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *room_cover;
/// 房间公告
@property (nonatomic,strong)NSString *room_intro;
-/// 房间类型 type_id 1 点唱 2 拍卖 3男神 4女神 6小黑屋
+/// 房间类型 type_id 1 点唱 2 拍卖 3男神 4女神 6小黑屋 7 交友房
@property (nonatomic,strong)NSString *type_id;
/// 房间子类型 label_id 1聊天 2 k歌 拍卖时 1真爱 2亲密
@property (nonatomic,strong)NSString *label_id;
@@ -321,4 +323,23 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *is_pk;
@end
+
+@interface QXRoomFriendInfo : NSObject
+/// 当前在哪个阶段 1 等待邂逅 2心动连线 3 牵手良缘
+@property (nonatomic,strong)NSString *step;
+/// 心动值
+@property (nonatomic,strong)NSArray *heart_list;
+/// 场次id
+@property (nonatomic,strong)NSString *friend_id;
+/// 心动连线剩余时间
+@property (nonatomic,assign)long end_time;
+/// 在线cp数
+@property (nonatomic,strong)NSString *room_on_line_cp;
+@end
+
+@interface QXRoomFriendHeartListModel : NSObject
+/// 心动值
+@property (nonatomic,strong)NSString *heartNum;
+@property (nonatomic,strong)NSString *heartId;
+@end
NS_ASSUME_NONNULL_END
diff --git a/QXLive/Mine(音域)/Model/QXRoomModel.m b/QXLive/Mine(音域)/Model/QXRoomModel.m
index 5f4be42..ca1cea1 100644
--- a/QXLive/Mine(音域)/Model/QXRoomModel.m
+++ b/QXLive/Mine(音域)/Model/QXRoomModel.m
@@ -18,7 +18,8 @@
@"room_auction":@"QXRoomAuction",
@"cp_user": @"QXRoomCpUser",
@"pk_info" : @"QXRoomPkInfo",
- @"song_pit_list":@"QXRoomPitModel"
+ @"song_pit_list":@"QXRoomPitModel",
+ @"friend_info":@"QXRoomFriendInfo",
};
}
@@ -114,3 +115,18 @@
@end
+
+
+
+@implementation QXRoomFriendInfo
++(NSDictionary *)modelContainerPropertyGenericClass{
+ return @{
+ @"heart_list" : @"QXRoomFriendHeartListModel"
+ };
+}
+
+@end
+
+@implementation QXRoomFriendHeartListModel
+
+@end
diff --git a/QXLive/Mine(音域)/Services/QXMineNetwork.h b/QXLive/Mine(音域)/Services/QXMineNetwork.h
index caefff7..22f4f65 100644
--- a/QXLive/Mine(音域)/Services/QXMineNetwork.h
+++ b/QXLive/Mine(音域)/Services/QXMineNetwork.h
@@ -327,6 +327,7 @@ NS_ASSUME_NONNULL_BEGIN
gift_id:(NSString*)gift_id
gift_num:(NSString*)gift_num
to_uid:(NSString*)to_uid
+ heart_id:(NSString*)heart_id
type:(NSString*)type
pit_number:(NSString*)pit_number
successBlock:(void (^)(NSDictionary* dict))successBlock
@@ -969,6 +970,49 @@ NS_ASSUME_NONNULL_BEGIN
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+#pragma mark - 交友房
+/**
+ 交友房开始
+ */
++(void)friendRoomStartWithRoomId:(NSString*)room_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+
+
+/**
+ 交友房结束
+ */
++(void)friendRoomEndWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+
+
+/**
+ 交友房延时
+ */
++(void)friendRoomDelayWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+
+/**
+ 交友房创建关系
+ */
++(void)friendRoomCreateRelationWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ user1Id:(NSString*)user1_id
+ user2Id:(NSString*)user2_id
+ relationId:(NSString*)relation_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+
+/**
+ 退出私密小屋
+ */
++(void)friendRoomQuitWithRoomid:(NSString*)room_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@end
diff --git a/QXLive/Mine(音域)/Services/QXMineNetwork.m b/QXLive/Mine(音域)/Services/QXMineNetwork.m
index b2a5874..f046176 100644
--- a/QXLive/Mine(音域)/Services/QXMineNetwork.m
+++ b/QXLive/Mine(音域)/Services/QXMineNetwork.m
@@ -661,17 +661,19 @@
gift_id:(NSString*)gift_id
gift_num:(NSString*)gift_num
to_uid:(NSString*)to_uid
+ heart_id:(NSString*)heart_id
type:(NSString*)type
pit_number:(NSString*)pit_number
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
- @"room_id":room_id,
- @"gift_id":gift_id,
- @"gift_num":gift_num,
- @"to_uid":to_uid,
- @"type":type,
- @"pit_number":pit_number,
+ @"room_id":room_id?room_id:@"",
+ @"gift_id":gift_id?gift_id:@"",
+ @"gift_num":gift_num?gift_num:@"",
+ @"to_uid":to_uid?to_uid:@"",
+ @"type":type?type:@"",
+ @"pit_number":pit_number?pit_number:@"",
+ @"heart_id":heart_id?heart_id:@""
};
[[QXRequset shareInstance] postWithUrl:QXSendGift parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -1889,4 +1891,110 @@
failBlock(error,msg);
}];
}
+
+
+#pragma mark - 交友房
+/**
+ 交友房开始
+ */
++(void)friendRoomStartWithRoomId:(NSString*)room_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
+ NSDictionary *parameters =@{
+ @"room_id":room_id?room_id:@"",
+ };
+ [[QXRequset shareInstance] postWithUrl:QXRoomFriendStart parameters:parameters needCache:NO success:^(id responseObject) {
+ if (successBlock) {
+ successBlock(responseObject[@"data"]);
+ }
+ } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
+ failBlock(error,msg);
+ }];
+}
+
+
+/**
+ 交友房结束
+ */
++(void)friendRoomEndWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
+ NSDictionary *parameters =@{
+ @"room_id":room_id?room_id:@"",
+ @"friend_id":friend_id?friend_id:@""
+ };
+ [[QXRequset shareInstance] postWithUrl:QXRoomFriendEnd parameters:parameters needCache:NO success:^(id responseObject) {
+ if (successBlock) {
+ successBlock(responseObject[@"data"]);
+ }
+ } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
+ failBlock(error,msg);
+ }];
+}
+
+
+/**
+ 交友房延时
+ */
++(void)friendRoomDelayWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
+ NSDictionary *parameters =@{
+ @"room_id":room_id?room_id:@"",
+ @"friend_id":friend_id?friend_id:@""
+ };
+ [[QXRequset shareInstance] postWithUrl:QXRoomFriendDelay parameters:parameters needCache:NO success:^(id responseObject) {
+ if (successBlock) {
+ successBlock(responseObject[@"data"]);
+ }
+ } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
+ failBlock(error,msg);
+ }];
+}
+
+/**
+ 交友房创建关系
+ */
++(void)friendRoomCreateRelationWithRoomId:(NSString*)room_id
+ friendId:(NSString*)friend_id
+ user1Id:(NSString*)user1_id
+ user2Id:(NSString*)user2_id
+ relationId:(NSString*)relation_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
+ NSDictionary *parameters =@{
+ @"room_id":room_id?room_id:@"",
+ @"friend_id":friend_id?friend_id:@"",
+ @"user1_id":user1_id?user1_id:@"",
+ @"user2_id":user2_id?user2_id:@"",
+ @"relation_id":relation_id?relation_id:@"",
+ };
+ [[QXRequset shareInstance] postWithUrl:QXRoomFriendCreateRelation parameters:parameters needCache:NO success:^(id responseObject) {
+ if (successBlock) {
+ successBlock(responseObject[@"data"]);
+ }
+ } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
+ failBlock(error,msg);
+ }];
+}
+
+/**
+ 退出私密小屋
+ */
++(void)friendRoomQuitWithRoomid:(NSString*)room_id
+ successBlock:(void (^)(NSDictionary* dict))successBlock
+ failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
+ NSDictionary *parameters =@{
+ @"room_id":room_id?room_id:@"",
+ };
+ [[QXRequset shareInstance] postWithUrl:QXRoomFriendRoomQuit parameters:parameters needCache:NO success:^(id responseObject) {
+ if (successBlock) {
+ successBlock(responseObject[@"data"]);
+ }
+ } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
+ failBlock(error,msg);
+ }];
+}
@end
diff --git a/QXLive/Network/QXRequest.m b/QXLive/Network/QXRequest.m
index 8b42ef3..c554787 100644
--- a/QXLive/Network/QXRequest.m
+++ b/QXLive/Network/QXRequest.m
@@ -206,7 +206,7 @@ static NSInteger HTTP_ERROR_CODE = 0;
if (fail)fail(NOT_NETWORK_ERROR,@"无网络",nil);
return nil;
}
- if (![urlString hasPrefix:@"http"] || ![urlString hasPrefix:@"https"]) {
+ if (!([urlString hasPrefix:@"http"] || [urlString hasPrefix:@"https"])) {
urlString = [NSString stringWithFormat:@"%@%@",ServerUrl,urlString];
}
NSLog(@"发起请求 --- URL : %@",urlString);
diff --git a/QXLive/Other/AppDelegate.m b/QXLive/Other/AppDelegate.m
index f6b0162..472dcf8 100644
--- a/QXLive/Other/AppDelegate.m
+++ b/QXLive/Other/AppDelegate.m
@@ -26,6 +26,11 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+// for (NSString *str in [UIFont familyNames]) {
+//
+// NSLog(@"UIFont_Name------------:%@",str);
+//
+// }
// Override point for customization after application launch.
[QXConfig defaultConfig];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
diff --git a/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/Contents.json
index 434f0c2..25755ac 100644
--- a/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/Contents.json
@@ -5,7 +5,7 @@
"scale" : "1x"
},
{
- "filename" : "cp_room_bg@2x.png",
+ "filename" : "私密小屋背景@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
diff --git a/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/cp_room_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/cp_room_bg@2x.png
deleted file mode 100644
index 465f6c6..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/cp_room_bg@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/私密小屋背景@2x.png b/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/私密小屋背景@2x.png
new file mode 100644
index 0000000..d1f3e4b
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/cp_room_bg.imageset/私密小屋背景@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Contents.json
index 5b89bf5..1706a2e 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_auction_gift_love@2x.png",
+ "filename" : "Frame 1321316211@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_auction_gift_love@3x.png",
+ "filename" : "Frame 1321316211@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@2x.png
new file mode 100644
index 0000000..0bfbde9
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@3x.png
new file mode 100644
index 0000000..e4dae37
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/Frame 1321316211@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@2x.png
deleted file mode 100644
index 95dce06..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@3x.png
deleted file mode 100644
index 115a9c1..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_gift_love.imageset/room_auction_gift_love@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Contents.json
index bf0620d..2c3f231 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_auction_relationship_love@2x.png",
+ "filename" : "Frame 1321316213@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_auction_relationship_love@3x.png",
+ "filename" : "Frame 1321316213@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@2x.png
new file mode 100644
index 0000000..b2b8712
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@3x.png
new file mode 100644
index 0000000..aaf41b4
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/Frame 1321316213@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@2x.png
deleted file mode 100644
index a5074b7..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@3x.png
deleted file mode 100644
index c81971e..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_relationship_love.imageset/room_auction_relationship_love@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Contents.json
index 02dba32..ed28e01 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_auction_seat_bg@2x.png",
+ "filename" : "Group 7527@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_auction_seat_bg@3x.png",
+ "filename" : "Group 7527@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@2x.png
new file mode 100644
index 0000000..f19e892
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@3x.png
new file mode 100644
index 0000000..0d8af74
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/Group 7527@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@2x.png
deleted file mode 100644
index 2d1a2a7..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@3x.png
deleted file mode 100644
index b9a524b..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_bg.imageset/room_auction_seat_bg@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Contents.json
index 82e1efe..166c19e 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_auction_seat_love_bg@2x.png",
+ "filename" : "Group 7523@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_auction_seat_love_bg@3x.png",
+ "filename" : "Group 7523@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@2x.png
new file mode 100644
index 0000000..cef2bc1
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@3x.png
new file mode 100644
index 0000000..1235722
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/Group 7523@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@2x.png
deleted file mode 100644
index 4a039a8..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@3x.png
deleted file mode 100644
index 3ec82f7..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_seat_love_bg.imageset/room_auction_seat_love_bg@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Contents.json
index 50f405a..110acee 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_auction_time_love@2x.png",
+ "filename" : "Frame 1321316212@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_auction_time_love@3x.png",
+ "filename" : "Frame 1321316212@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@2x.png
new file mode 100644
index 0000000..45b365b
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@3x.png
new file mode 100644
index 0000000..41477a1
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/Frame 1321316212@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@2x.png
deleted file mode 100644
index 312a378..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@3x.png
deleted file mode 100644
index 7b4977e..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_auction_time_love.imageset/room_auction_time_love@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Contents.json
index 2284117..abf2830 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "Frame 1279@2x.png",
+ "filename" : "倒计时背景@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "Frame 1279@3x.png",
+ "filename" : "倒计时背景@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@2x.png
deleted file mode 100644
index cb3ac06..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@3x.png
deleted file mode 100644
index 7ff646d..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/Frame 1279@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@2x.png
new file mode 100644
index 0000000..580249e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@3x.png
new file mode 100644
index 0000000..dfde00e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_cabin_timedown_bg.imageset/倒计时背景@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/Contents.json
new file mode 100644
index 0000000..5c30895
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_below_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_below_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@2x.png
new file mode 100644
index 0000000..5595064
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@3x.png
new file mode 100644
index 0000000..47e7d4c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_below_bg.imageset/room_friend_below_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/Contents.json
new file mode 100644
index 0000000..35008cb
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_center_value_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_center_value_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@2x.png
new file mode 100644
index 0000000..790fc5c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@3x.png
new file mode 100644
index 0000000..f79d3ed
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_center_value_bg.imageset/room_friend_center_value_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/Contents.json
new file mode 100644
index 0000000..9ceba8f
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_create_relation_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_create_relation_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@2x.png
new file mode 100644
index 0000000..93a4de8
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@3x.png
new file mode 100644
index 0000000..845a31c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_create_relation_bg.imageset/room_friend_create_relation_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/Contents.json
new file mode 100644
index 0000000..1029d7a
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_delay_btn_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_delay_btn_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@2x.png
new file mode 100644
index 0000000..f836a2a
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@3x.png
new file mode 100644
index 0000000..5c9ce95
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_delay_btn_bg.imageset/room_friend_delay_btn_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/Contents.json
new file mode 100644
index 0000000..3bc4894
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_end_btn_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_end_btn_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@2x.png
new file mode 100644
index 0000000..3365f1a
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@3x.png
new file mode 100644
index 0000000..ff73f2d
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_end_btn_bg.imageset/room_friend_end_btn_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/Contents.json
new file mode 100644
index 0000000..388455d
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "爱心地盘1 (1).png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/爱心地盘1 (1).png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/爱心地盘1 (1).png
new file mode 100644
index 0000000..dd39703
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_heart_bg.imageset/爱心地盘1 (1).png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/Contents.json
new file mode 100644
index 0000000..b993348
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_left_seat@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_left_seat@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@2x.png
new file mode 100644
index 0000000..bf98636
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@3x.png
new file mode 100644
index 0000000..dbc7b0e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_left_seat.imageset/room_friend_left_seat@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/Contents.json
new file mode 100644
index 0000000..d3bb61e
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_nor_heart@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_nor_heart@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@2x.png
new file mode 100644
index 0000000..75a7b5e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@3x.png
new file mode 100644
index 0000000..2353e07
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_nor_heart.imageset/room_friend_nor_heart@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/Contents.json
new file mode 100644
index 0000000..6d08ba5
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_part_dot@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_part_dot@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@2x.png
new file mode 100644
index 0000000..79c114e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@3x.png
new file mode 100644
index 0000000..453d0b3
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_part_dot.imageset/room_friend_part_dot@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Contents.json
new file mode 100644
index 0000000..d8d6425
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "Group 7039@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "Group 7039@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@2x.png
new file mode 100644
index 0000000..32a150f
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@3x.png
new file mode 100644
index 0000000..7467967
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_relation_heart.imageset/Group 7039@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/Contents.json
new file mode 100644
index 0000000..b83d764
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_right_seat@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_right_seat@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@2x.png
new file mode 100644
index 0000000..d71190c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@3x.png
new file mode 100644
index 0000000..5754984
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_right_seat.imageset/room_friend_right_seat@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/Contents.json
new file mode 100644
index 0000000..30ee8ab
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_start_btn_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_start_btn_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@2x.png
new file mode 100644
index 0000000..69af6f0
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@3x.png
new file mode 100644
index 0000000..6dff060
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_start_btn_bg.imageset/room_friend_start_btn_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/Contents.json
new file mode 100644
index 0000000..9749f65
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_success_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_success_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@2x.png
new file mode 100644
index 0000000..bf7a121
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@3x.png
new file mode 100644
index 0000000..1770101
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_bg.imageset/room_friend_success_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/Contents.json
new file mode 100644
index 0000000..aa6573c
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_success_name_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_success_name_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@2x.png
new file mode 100644
index 0000000..a9a8c01
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@3x.png
new file mode 100644
index 0000000..08a93a3
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_success_name_bg.imageset/room_friend_success_name_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/Contents.json
new file mode 100644
index 0000000..5a5efb4
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_time_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_time_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@2x.png
new file mode 100644
index 0000000..5c711a2
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@3x.png
new file mode 100644
index 0000000..f2b922c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_time_bg.imageset/room_friend_time_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/Contents.json
new file mode 100644
index 0000000..3aa5b9a
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_top_heart_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_top_heart_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@2x.png
new file mode 100644
index 0000000..dd89066
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@3x.png
new file mode 100644
index 0000000..f5d196c
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend/room_friend_top_heart_bg.imageset/room_friend_top_heart_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/Contents.json
new file mode 100644
index 0000000..34bf3de
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_friend_cabin_bg@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_friend_cabin_bg@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@2x.png
new file mode 100644
index 0000000..4d13f6e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@3x.png
new file mode 100644
index 0000000..c74155f
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_friend_cabin_bg.imageset/room_friend_cabin_bg@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Contents.json
index b6dfaca..9f214ff 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_seat_auction_icon@2x.png",
+ "filename" : "Group 7411@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_seat_auction_icon@3x.png",
+ "filename" : "Group 7411@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@2x.png
new file mode 100644
index 0000000..26954f1
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@3x.png
new file mode 100644
index 0000000..7e5d5b1
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/Group 7411@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@2x.png
deleted file mode 100644
index 5064d0a..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@3x.png
deleted file mode 100644
index 76801c5..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_icon.imageset/room_seat_auction_icon@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Contents.json
index b008a4c..9f214ff 100644
--- a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Contents.json
+++ b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Contents.json
@@ -5,12 +5,12 @@
"scale" : "1x"
},
{
- "filename" : "room_seat_auction_love_icon@2x.png",
+ "filename" : "Group 7411@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
- "filename" : "room_seat_auction_love_icon@3x.png",
+ "filename" : "Group 7411@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@2x.png
new file mode 100644
index 0000000..f9793b5
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@3x.png
new file mode 100644
index 0000000..b8dcadd
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/Group 7411@3x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@2x.png
deleted file mode 100644
index 92864d5..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@2x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@3x.png
deleted file mode 100644
index 65e63c4..0000000
Binary files a/QXLive/Other/Assets.xcassets/home/room/room_seat_auction_love_icon.imageset/room_seat_auction_love_icon@3x.png and /dev/null differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/Contents.json b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/Contents.json
new file mode 100644
index 0000000..3e76e0d
--- /dev/null
+++ b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "room_set_room_type_friend@2x.png",
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "room_set_room_type_friend@3x.png",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@2x.png b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@2x.png
new file mode 100644
index 0000000..c923747
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@2x.png differ
diff --git a/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@3x.png b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@3x.png
new file mode 100644
index 0000000..d33d39e
Binary files /dev/null and b/QXLive/Other/Assets.xcassets/home/room/room_set_room_type_friend.imageset/room_set_room_type_friend@3x.png differ
diff --git a/QXLive/Other/D-DIN-PRO-600-SemiBold.otf b/QXLive/Other/D-DIN-PRO-600-SemiBold.otf
new file mode 100644
index 0000000..5f94c23
Binary files /dev/null and b/QXLive/Other/D-DIN-PRO-600-SemiBold.otf differ
diff --git a/QXLive/Other/NoitceAndKey.h b/QXLive/Other/NoitceAndKey.h
index 41232d4..e8f288e 100644
--- a/QXLive/Other/NoitceAndKey.h
+++ b/QXLive/Other/NoitceAndKey.h
@@ -7,6 +7,16 @@
#ifndef NoitceAndKey_h
#define NoitceAndKey_h
+typedef NS_ENUM(NSInteger) {
+ /// 房主
+ QXRoomRoleTypeOwner = 0,
+ /// 主持
+ QXRoomRoleTypeCompere,
+ /// 管理员
+ QXRoomRoleTypeManager,
+ /// 观众
+ QXRoomRoleTypeAudience,
+}QXRoomRoleType;
// 三方平台
#if DEVELOPENT == 1
static NSString *const WechatAppId = @"wx9b6db036ca1073a2";
diff --git a/QXLive/Other/QXApi.h b/QXLive/Other/QXApi.h
index bd1d95e..1a5a6eb 100644
--- a/QXLive/Other/QXApi.h
+++ b/QXLive/Other/QXApi.h
@@ -8,7 +8,7 @@
#ifndef Api_h
#define Api_h
#if DEVELOPENT == 1
-static NSString* ServerUrl = @"https://vschat.qxmier.com/";
+static NSString* ServerUrl = @"http://tmd.qixing2.top/";
static NSString* H5ServerUrl = @"https://chatvespa.qxmier.com/";
#else
static NSString* ServerUrl = @"https://chat.qxmier.com/";
@@ -409,4 +409,17 @@ static NSString * QXRoomUserGiveCoin = @"api/User/give_coin";
static NSString * QXAppFirstRechargeGiftList = @"api/Activities/first_charge_gift";
/// 首充好礼弹框权限
static NSString * QXAppFirstRechargePermission = @"api/Activities/first_charge_gift_permission";
+
+
+#pragma mark - 交友房
+/// 交友房开始
+static NSString * QXRoomFriendStart = @"api/Friend/start_friend";
+/// 交友房结束
+static NSString * QXRoomFriendEnd = @"api/Friend/end_friend";
+/// 交友房延时
+static NSString * QXRoomFriendDelay = @"api/Friend/delay";
+/// 卡关系
+static NSString * QXRoomFriendCreateRelation = @"api/Friend/create_relation";
+/// 退出私密房间
+static NSString * QXRoomFriendRoomQuit = @"api/Friend/out_room";
#endif /* Api_h */
diff --git a/QXLive/Other/heart_line_31.png b/QXLive/Other/heart_line_31.png
new file mode 100644
index 0000000..fb3dd38
Binary files /dev/null and b/QXLive/Other/heart_line_31.png differ
diff --git a/QXLive/Other/heart_line_31.svga b/QXLive/Other/heart_line_31.svga
new file mode 100644
index 0000000..e0fe898
Binary files /dev/null and b/QXLive/Other/heart_line_31.svga differ