房间排名和首页搜索房间
3
Podfile
@@ -10,6 +10,9 @@ target 'yinmeng-ios' do
|
|||||||
pod 'Moya'
|
pod 'Moya'
|
||||||
pod 'MBProgressHUD'
|
pod 'MBProgressHUD'
|
||||||
pod 'SVGAPlayer'
|
pod 'SVGAPlayer'
|
||||||
|
# 滑动标签栏
|
||||||
|
pod 'JXCategoryView'
|
||||||
|
pod 'JXPagingView/Pager'
|
||||||
#加载图片
|
#加载图片
|
||||||
pod 'Kingfisher'
|
pod 'Kingfisher'
|
||||||
#cell
|
#cell
|
||||||
|
@@ -37,7 +37,6 @@
|
|||||||
233E515B2B8C849600582F9C /* PlanetStarClickItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 233E515A2B8C849600582F9C /* PlanetStarClickItemView.swift */; };
|
233E515B2B8C849600582F9C /* PlanetStarClickItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 233E515A2B8C849600582F9C /* PlanetStarClickItemView.swift */; };
|
||||||
234E2DF02B98425800433CF7 /* RoomVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DEF2B98425800433CF7 /* RoomVC.swift */; };
|
234E2DF02B98425800433CF7 /* RoomVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DEF2B98425800433CF7 /* RoomVC.swift */; };
|
||||||
234E2DF42B9847A700433CF7 /* RoomBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DF32B9847A700433CF7 /* RoomBackgroundView.swift */; };
|
234E2DF42B9847A700433CF7 /* RoomBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DF32B9847A700433CF7 /* RoomBackgroundView.swift */; };
|
||||||
234E2DF72B984FB200433CF7 /* RoomTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DF62B984FB200433CF7 /* RoomTopView.swift */; };
|
|
||||||
234E2DFA2B9851F000433CF7 /* UIButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DF92B9851F000433CF7 /* UIButton+.swift */; };
|
234E2DFA2B9851F000433CF7 /* UIButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DF92B9851F000433CF7 /* UIButton+.swift */; };
|
||||||
234E2DFD2B985A7300433CF7 /* UILabel+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DFC2B985A7300433CF7 /* UILabel+.swift */; };
|
234E2DFD2B985A7300433CF7 /* UILabel+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2DFC2B985A7300433CF7 /* UILabel+.swift */; };
|
||||||
234E2E022B986D7600433CF7 /* RoomQuitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E012B986D7600433CF7 /* RoomQuitView.swift */; };
|
234E2E022B986D7600433CF7 /* RoomQuitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E012B986D7600433CF7 /* RoomQuitView.swift */; };
|
||||||
@@ -57,6 +56,20 @@
|
|||||||
234E2E312B9B001A00433CF7 /* RoomChatScreenView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E302B9B001A00433CF7 /* RoomChatScreenView.swift */; };
|
234E2E312B9B001A00433CF7 /* RoomChatScreenView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E302B9B001A00433CF7 /* RoomChatScreenView.swift */; };
|
||||||
234E2E332B9B019B00433CF7 /* RoomChatScreenHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E322B9B019B00433CF7 /* RoomChatScreenHeaderView.swift */; };
|
234E2E332B9B019B00433CF7 /* RoomChatScreenHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E322B9B019B00433CF7 /* RoomChatScreenHeaderView.swift */; };
|
||||||
234E2E352B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E342B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift */; };
|
234E2E352B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234E2E342B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift */; };
|
||||||
|
23630B992BABCE52003AD25D /* HomeSearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630B982BABCE52003AD25D /* HomeSearchVC.swift */; };
|
||||||
|
23630B9B2BABCEA5003AD25D /* HomeSearchNavView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630B9A2BABCEA5003AD25D /* HomeSearchNavView.swift */; };
|
||||||
|
23630B9D2BAC0DEA003AD25D /* HomeSearchRoomVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630B9C2BAC0DEA003AD25D /* HomeSearchRoomVC.swift */; };
|
||||||
|
23630BA12BAC12F9003AD25D /* HomeSearchRoomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BA02BAC12F9003AD25D /* HomeSearchRoomCell.swift */; };
|
||||||
|
23630BA32BAC23BA003AD25D /* HomeSearchRoomModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BA22BAC23BA003AD25D /* HomeSearchRoomModel.swift */; };
|
||||||
|
23630BB02BAD2708003AD25D /* YinRoomRankModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BAF2BAD2708003AD25D /* YinRoomRankModel.swift */; };
|
||||||
|
23630BB52BAD2725003AD25D /* YinRoomRankView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BB22BAD2725003AD25D /* YinRoomRankView.swift */; };
|
||||||
|
23630BB62BAD2725003AD25D /* RoomTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BB32BAD2725003AD25D /* RoomTopView.swift */; };
|
||||||
|
23630BB72BAD2725003AD25D /* YinRoomRankItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BB42BAD2725003AD25D /* YinRoomRankItemView.swift */; };
|
||||||
|
23630BB92BAD2CB8003AD25D /* YinRankH5UrlModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BB82BAD2CB8003AD25D /* YinRankH5UrlModel.swift */; };
|
||||||
|
23630BBB2BAD2EBB003AD25D /* YinClientInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BBA2BAD2EBB003AD25D /* YinClientInfoModel.swift */; };
|
||||||
|
23630BBD2BAD379C003AD25D /* YinRoomAudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BBC2BAD379C003AD25D /* YinRoomAudioManager.swift */; };
|
||||||
|
23630BBF2BAD37B7003AD25D /* YinRoomTRTCManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23630BBE2BAD37B7003AD25D /* YinRoomTRTCManager.swift */; };
|
||||||
|
238A900C2BAAC6C600828123 /* HomeVoiceSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 238A900B2BAAC6C600828123 /* HomeVoiceSearchView.swift */; };
|
||||||
23EE96E02B9EB22100475D69 /* RoomMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96DF2B9EB22100475D69 /* RoomMenuView.swift */; };
|
23EE96E02B9EB22100475D69 /* RoomMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96DF2B9EB22100475D69 /* RoomMenuView.swift */; };
|
||||||
23EE96E22B9EB22F00475D69 /* RoomSendTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96E12B9EB22F00475D69 /* RoomSendTextView.swift */; };
|
23EE96E22B9EB22F00475D69 /* RoomSendTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96E12B9EB22F00475D69 /* RoomSendTextView.swift */; };
|
||||||
23EE96E62B9EE79A00475D69 /* RoomVCViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96E52B9EE79A00475D69 /* RoomVCViewModel.swift */; };
|
23EE96E62B9EE79A00475D69 /* RoomVCViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96E52B9EE79A00475D69 /* RoomVCViewModel.swift */; };
|
||||||
@@ -67,6 +80,11 @@
|
|||||||
23EE96F42BA048F100475D69 /* MicSeatGiftValueModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96F32BA048F100475D69 /* MicSeatGiftValueModel.swift */; };
|
23EE96F42BA048F100475D69 /* MicSeatGiftValueModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96F32BA048F100475D69 /* MicSeatGiftValueModel.swift */; };
|
||||||
23EE96F62BA061DE00475D69 /* RoomMsgListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96F52BA061DE00475D69 /* RoomMsgListModel.swift */; };
|
23EE96F62BA061DE00475D69 /* RoomMsgListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE96F52BA061DE00475D69 /* RoomMsgListModel.swift */; };
|
||||||
23EE96FA2BA1A3A300475D69 /* YinSpeak.svga in Resources */ = {isa = PBXBuildFile; fileRef = 23EE96F92BA1A3A200475D69 /* YinSpeak.svga */; };
|
23EE96FA2BA1A3A300475D69 /* YinSpeak.svga in Resources */ = {isa = PBXBuildFile; fileRef = 23EE96F92BA1A3A200475D69 /* YinSpeak.svga */; };
|
||||||
|
23EE97012BA29B3200475D69 /* SendGiftFaceplateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE97002BA29B3200475D69 /* SendGiftFaceplateView.swift */; };
|
||||||
|
23EE97032BA29F1E00475D69 /* SendGiftTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE97022BA29F1E00475D69 /* SendGiftTopView.swift */; };
|
||||||
|
23EE97052BA2A67300475D69 /* SendGiftUserView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE97042BA2A67300475D69 /* SendGiftUserView.swift */; };
|
||||||
|
23EE97072BA2AC8300475D69 /* SendGiftUserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE97062BA2AC8300475D69 /* SendGiftUserCell.swift */; };
|
||||||
|
23EE970F2BA3006800475D69 /* SendGiftUserModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EE970E2BA3006800475D69 /* SendGiftUserModel.swift */; };
|
||||||
25C63BC8F805551E8754E409 /* Pods_yinmeng_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */; };
|
25C63BC8F805551E8754E409 /* Pods_yinmeng_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */; };
|
||||||
E81A7BAE2B885B20009E736E /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAA2B885B20009E736E /* Base64.m */; };
|
E81A7BAE2B885B20009E736E /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAA2B885B20009E736E /* Base64.m */; };
|
||||||
E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAB2B885B20009E736E /* MAIDESEncryptTool.m */; };
|
E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A7BAB2B885B20009E736E /* MAIDESEncryptTool.m */; };
|
||||||
@@ -169,7 +187,6 @@
|
|||||||
233E515A2B8C849600582F9C /* PlanetStarClickItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetStarClickItemView.swift; sourceTree = "<group>"; };
|
233E515A2B8C849600582F9C /* PlanetStarClickItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlanetStarClickItemView.swift; sourceTree = "<group>"; };
|
||||||
234E2DEF2B98425800433CF7 /* RoomVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomVC.swift; sourceTree = "<group>"; };
|
234E2DEF2B98425800433CF7 /* RoomVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomVC.swift; sourceTree = "<group>"; };
|
||||||
234E2DF32B9847A700433CF7 /* RoomBackgroundView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomBackgroundView.swift; sourceTree = "<group>"; };
|
234E2DF32B9847A700433CF7 /* RoomBackgroundView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomBackgroundView.swift; sourceTree = "<group>"; };
|
||||||
234E2DF62B984FB200433CF7 /* RoomTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTopView.swift; sourceTree = "<group>"; };
|
|
||||||
234E2DF92B9851F000433CF7 /* UIButton+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+.swift"; sourceTree = "<group>"; };
|
234E2DF92B9851F000433CF7 /* UIButton+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+.swift"; sourceTree = "<group>"; };
|
||||||
234E2DFC2B985A7300433CF7 /* UILabel+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+.swift"; sourceTree = "<group>"; };
|
234E2DFC2B985A7300433CF7 /* UILabel+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+.swift"; sourceTree = "<group>"; };
|
||||||
234E2E012B986D7600433CF7 /* RoomQuitView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomQuitView.swift; sourceTree = "<group>"; };
|
234E2E012B986D7600433CF7 /* RoomQuitView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomQuitView.swift; sourceTree = "<group>"; };
|
||||||
@@ -189,6 +206,20 @@
|
|||||||
234E2E302B9B001A00433CF7 /* RoomChatScreenView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenView.swift; sourceTree = "<group>"; };
|
234E2E302B9B001A00433CF7 /* RoomChatScreenView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenView.swift; sourceTree = "<group>"; };
|
||||||
234E2E322B9B019B00433CF7 /* RoomChatScreenHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenHeaderView.swift; sourceTree = "<group>"; };
|
234E2E322B9B019B00433CF7 /* RoomChatScreenHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenHeaderView.swift; sourceTree = "<group>"; };
|
||||||
234E2E342B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenUserChatCell.swift; sourceTree = "<group>"; };
|
234E2E342B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChatScreenUserChatCell.swift; sourceTree = "<group>"; };
|
||||||
|
23630B982BABCE52003AD25D /* HomeSearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSearchVC.swift; sourceTree = "<group>"; };
|
||||||
|
23630B9A2BABCEA5003AD25D /* HomeSearchNavView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSearchNavView.swift; sourceTree = "<group>"; };
|
||||||
|
23630B9C2BAC0DEA003AD25D /* HomeSearchRoomVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSearchRoomVC.swift; sourceTree = "<group>"; };
|
||||||
|
23630BA02BAC12F9003AD25D /* HomeSearchRoomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSearchRoomCell.swift; sourceTree = "<group>"; };
|
||||||
|
23630BA22BAC23BA003AD25D /* HomeSearchRoomModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeSearchRoomModel.swift; sourceTree = "<group>"; };
|
||||||
|
23630BAF2BAD2708003AD25D /* YinRoomRankModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YinRoomRankModel.swift; sourceTree = "<group>"; };
|
||||||
|
23630BB22BAD2725003AD25D /* YinRoomRankView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YinRoomRankView.swift; sourceTree = "<group>"; };
|
||||||
|
23630BB32BAD2725003AD25D /* RoomTopView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomTopView.swift; sourceTree = "<group>"; };
|
||||||
|
23630BB42BAD2725003AD25D /* YinRoomRankItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YinRoomRankItemView.swift; sourceTree = "<group>"; };
|
||||||
|
23630BB82BAD2CB8003AD25D /* YinRankH5UrlModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YinRankH5UrlModel.swift; sourceTree = "<group>"; };
|
||||||
|
23630BBA2BAD2EBB003AD25D /* YinClientInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YinClientInfoModel.swift; sourceTree = "<group>"; };
|
||||||
|
23630BBC2BAD379C003AD25D /* YinRoomAudioManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YinRoomAudioManager.swift; sourceTree = "<group>"; };
|
||||||
|
23630BBE2BAD37B7003AD25D /* YinRoomTRTCManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YinRoomTRTCManager.swift; sourceTree = "<group>"; };
|
||||||
|
238A900B2BAAC6C600828123 /* HomeVoiceSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVoiceSearchView.swift; sourceTree = "<group>"; };
|
||||||
23EE96DF2B9EB22100475D69 /* RoomMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMenuView.swift; sourceTree = "<group>"; };
|
23EE96DF2B9EB22100475D69 /* RoomMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMenuView.swift; sourceTree = "<group>"; };
|
||||||
23EE96E12B9EB22F00475D69 /* RoomSendTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomSendTextView.swift; sourceTree = "<group>"; };
|
23EE96E12B9EB22F00475D69 /* RoomSendTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomSendTextView.swift; sourceTree = "<group>"; };
|
||||||
23EE96E52B9EE79A00475D69 /* RoomVCViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomVCViewModel.swift; sourceTree = "<group>"; };
|
23EE96E52B9EE79A00475D69 /* RoomVCViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomVCViewModel.swift; sourceTree = "<group>"; };
|
||||||
@@ -199,6 +230,11 @@
|
|||||||
23EE96F32BA048F100475D69 /* MicSeatGiftValueModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MicSeatGiftValueModel.swift; sourceTree = "<group>"; };
|
23EE96F32BA048F100475D69 /* MicSeatGiftValueModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MicSeatGiftValueModel.swift; sourceTree = "<group>"; };
|
||||||
23EE96F52BA061DE00475D69 /* RoomMsgListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMsgListModel.swift; sourceTree = "<group>"; };
|
23EE96F52BA061DE00475D69 /* RoomMsgListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMsgListModel.swift; sourceTree = "<group>"; };
|
||||||
23EE96F92BA1A3A200475D69 /* YinSpeak.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = YinSpeak.svga; sourceTree = "<group>"; };
|
23EE96F92BA1A3A200475D69 /* YinSpeak.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = YinSpeak.svga; sourceTree = "<group>"; };
|
||||||
|
23EE97002BA29B3200475D69 /* SendGiftFaceplateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendGiftFaceplateView.swift; sourceTree = "<group>"; };
|
||||||
|
23EE97022BA29F1E00475D69 /* SendGiftTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendGiftTopView.swift; sourceTree = "<group>"; };
|
||||||
|
23EE97042BA2A67300475D69 /* SendGiftUserView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendGiftUserView.swift; sourceTree = "<group>"; };
|
||||||
|
23EE97062BA2AC8300475D69 /* SendGiftUserCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendGiftUserCell.swift; sourceTree = "<group>"; };
|
||||||
|
23EE970E2BA3006800475D69 /* SendGiftUserModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendGiftUserModel.swift; sourceTree = "<group>"; };
|
||||||
A9FB906EB4D17C552C15A2B3 /* Pods-yinmeng-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.debug.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig"; sourceTree = "<group>"; };
|
A9FB906EB4D17C552C15A2B3 /* Pods-yinmeng-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.debug.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_yinmeng_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
B2F175918AD0811681497739 /* Pods_yinmeng_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_yinmeng_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
CB0AC98C54C1D41FA4CA102B /* Pods-yinmeng-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.release.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig"; sourceTree = "<group>"; };
|
CB0AC98C54C1D41FA4CA102B /* Pods-yinmeng-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-yinmeng-ios.release.xcconfig"; path = "Target Support Files/Pods-yinmeng-ios/Pods-yinmeng-ios.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
@@ -341,6 +377,7 @@
|
|||||||
234E2DED2B98411800433CF7 /* View */ = {
|
234E2DED2B98411800433CF7 /* View */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
23EE96FB2BA29AFF00475D69 /* SendGift */,
|
||||||
23EE96DA2B9EB17D00475D69 /* RoomMenuView */,
|
23EE96DA2B9EB17D00475D69 /* RoomMenuView */,
|
||||||
234E2E2B2B9AFCDB00433CF7 /* RoomChatScreenView */,
|
234E2E2B2B9AFCDB00433CF7 /* RoomChatScreenView */,
|
||||||
234E2E122B99F21600433CF7 /* MicSeatView */,
|
234E2E122B99F21600433CF7 /* MicSeatView */,
|
||||||
@@ -355,6 +392,8 @@
|
|||||||
234E2DEE2B98411800433CF7 /* Tool */ = {
|
234E2DEE2B98411800433CF7 /* Tool */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
23630BBC2BAD379C003AD25D /* YinRoomAudioManager.swift */,
|
||||||
|
23630BBE2BAD37B7003AD25D /* YinRoomTRTCManager.swift */,
|
||||||
);
|
);
|
||||||
path = Tool;
|
path = Tool;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -377,7 +416,8 @@
|
|||||||
234E2DF52B984FA800433CF7 /* RoomTopView */ = {
|
234E2DF52B984FA800433CF7 /* RoomTopView */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
234E2DF62B984FB200433CF7 /* RoomTopView.swift */,
|
23630BB12BAD2725003AD25D /* View */,
|
||||||
|
23630BAE2BAD26F7003AD25D /* Model */,
|
||||||
);
|
);
|
||||||
path = RoomTopView;
|
path = RoomTopView;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -559,6 +599,24 @@
|
|||||||
path = Tool;
|
path = Tool;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
23630BAE2BAD26F7003AD25D /* Model */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
23630BAF2BAD2708003AD25D /* YinRoomRankModel.swift */,
|
||||||
|
);
|
||||||
|
path = Model;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
23630BB12BAD2725003AD25D /* View */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
23630BB32BAD2725003AD25D /* RoomTopView.swift */,
|
||||||
|
23630BB42BAD2725003AD25D /* YinRoomRankItemView.swift */,
|
||||||
|
23630BB22BAD2725003AD25D /* YinRoomRankView.swift */,
|
||||||
|
);
|
||||||
|
path = View;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
23EE96DA2B9EB17D00475D69 /* RoomMenuView */ = {
|
23EE96DA2B9EB17D00475D69 /* RoomMenuView */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -600,6 +658,50 @@
|
|||||||
path = Tool;
|
path = Tool;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
23EE96FB2BA29AFF00475D69 /* SendGift */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
23EE96FC2BA29AFF00475D69 /* ViewModel */,
|
||||||
|
23EE96FD2BA29AFF00475D69 /* Model */,
|
||||||
|
23EE96FE2BA29AFF00475D69 /* View */,
|
||||||
|
23EE96FF2BA29AFF00475D69 /* Tool */,
|
||||||
|
);
|
||||||
|
path = SendGift;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
23EE96FC2BA29AFF00475D69 /* ViewModel */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
);
|
||||||
|
path = ViewModel;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
23EE96FD2BA29AFF00475D69 /* Model */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
23EE970E2BA3006800475D69 /* SendGiftUserModel.swift */,
|
||||||
|
);
|
||||||
|
path = Model;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
23EE96FE2BA29AFF00475D69 /* View */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
23EE97002BA29B3200475D69 /* SendGiftFaceplateView.swift */,
|
||||||
|
23EE97022BA29F1E00475D69 /* SendGiftTopView.swift */,
|
||||||
|
23EE97042BA2A67300475D69 /* SendGiftUserView.swift */,
|
||||||
|
23EE97062BA2AC8300475D69 /* SendGiftUserCell.swift */,
|
||||||
|
);
|
||||||
|
path = View;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
23EE96FF2BA29AFF00475D69 /* Tool */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
);
|
||||||
|
path = Tool;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4B36689ACEFDA475774E1FD5 /* Pods */ = {
|
4B36689ACEFDA475774E1FD5 /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -760,6 +862,8 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E86A43D42B8774B70084C04D /* AuthViewModel.swift */,
|
E86A43D42B8774B70084C04D /* AuthViewModel.swift */,
|
||||||
|
23630BB82BAD2CB8003AD25D /* YinRankH5UrlModel.swift */,
|
||||||
|
23630BBA2BAD2EBB003AD25D /* YinClientInfoModel.swift */,
|
||||||
E8D15A9E2B89AED500369467 /* AuthManager.swift */,
|
E8D15A9E2B89AED500369467 /* AuthManager.swift */,
|
||||||
E8D15AA02B89AF4F00369467 /* UserTokenObject.swift */,
|
E8D15AA02B89AF4F00369467 /* UserTokenObject.swift */,
|
||||||
E8E4AAB62B8F95CA0096D77C /* AuthAppleManager.swift */,
|
E8E4AAB62B8F95CA0096D77C /* AuthAppleManager.swift */,
|
||||||
@@ -877,6 +981,12 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
E8D15AAF2B8AFFCE00369467 /* HomeVoiceVC.swift */,
|
E8D15AAF2B8AFFCE00369467 /* HomeVoiceVC.swift */,
|
||||||
|
238A900B2BAAC6C600828123 /* HomeVoiceSearchView.swift */,
|
||||||
|
23630B982BABCE52003AD25D /* HomeSearchVC.swift */,
|
||||||
|
23630B9C2BAC0DEA003AD25D /* HomeSearchRoomVC.swift */,
|
||||||
|
23630BA02BAC12F9003AD25D /* HomeSearchRoomCell.swift */,
|
||||||
|
23630BA22BAC23BA003AD25D /* HomeSearchRoomModel.swift */,
|
||||||
|
23630B9A2BABCEA5003AD25D /* HomeSearchNavView.swift */,
|
||||||
2311D6AC2B9058AA001C70AB /* HomeVoiceModel.swift */,
|
2311D6AC2B9058AA001C70AB /* HomeVoiceModel.swift */,
|
||||||
2311D6A62B8F2CFA001C70AB /* HomeVoiceChooseItemVeiw.swift */,
|
2311D6A62B8F2CFA001C70AB /* HomeVoiceChooseItemVeiw.swift */,
|
||||||
2311D6A82B8F405F001C70AB /* HomeVoiceChooseTypeView.swift */,
|
2311D6A82B8F405F001C70AB /* HomeVoiceChooseTypeView.swift */,
|
||||||
@@ -1137,11 +1247,15 @@
|
|||||||
E86A43AE2B85DFEA0084C04D /* Color+.swift in Sources */,
|
E86A43AE2B85DFEA0084C04D /* Color+.swift in Sources */,
|
||||||
E8479E482B8DD6E1009AF878 /* ChatTextCell.swift in Sources */,
|
E8479E482B8DD6E1009AF878 /* ChatTextCell.swift in Sources */,
|
||||||
E8D15A9F2B89AED600369467 /* AuthManager.swift in Sources */,
|
E8D15A9F2B89AED600369467 /* AuthManager.swift in Sources */,
|
||||||
|
23630BB02BAD2708003AD25D /* YinRoomRankModel.swift in Sources */,
|
||||||
E8479E382B8DC5CD009AF878 /* ChatListVC.swift in Sources */,
|
E8479E382B8DC5CD009AF878 /* ChatListVC.swift in Sources */,
|
||||||
E89F19AF2B91C00F0098E797 /* BindMobileVC.swift in Sources */,
|
E89F19AF2B91C00F0098E797 /* BindMobileVC.swift in Sources */,
|
||||||
|
23EE970F2BA3006800475D69 /* SendGiftUserModel.swift in Sources */,
|
||||||
|
23EE97012BA29B3200475D69 /* SendGiftFaceplateView.swift in Sources */,
|
||||||
234E2DFA2B9851F000433CF7 /* UIButton+.swift in Sources */,
|
234E2DFA2B9851F000433CF7 /* UIButton+.swift in Sources */,
|
||||||
E86A43B02B85E11B0084C04D /* BaseNavigationViewController.swift in Sources */,
|
E86A43B02B85E11B0084C04D /* BaseNavigationViewController.swift in Sources */,
|
||||||
E86A43E82B884C5E0084C04D /* String+.swift in Sources */,
|
E86A43E82B884C5E0084C04D /* String+.swift in Sources */,
|
||||||
|
23630BBD2BAD379C003AD25D /* YinRoomAudioManager.swift in Sources */,
|
||||||
2311D6D12B91DDDF001C70AB /* UserPayViewModel.swift in Sources */,
|
2311D6D12B91DDDF001C70AB /* UserPayViewModel.swift in Sources */,
|
||||||
2311D6B12B9062A3001C70AB /* HomeVoiceFollowCell.swift in Sources */,
|
2311D6B12B9062A3001C70AB /* HomeVoiceFollowCell.swift in Sources */,
|
||||||
234E2E312B9B001A00433CF7 /* RoomChatScreenView.swift in Sources */,
|
234E2E312B9B001A00433CF7 /* RoomChatScreenView.swift in Sources */,
|
||||||
@@ -1150,18 +1264,23 @@
|
|||||||
E8E4AAB72B8F95CA0096D77C /* AuthAppleManager.swift in Sources */,
|
E8E4AAB72B8F95CA0096D77C /* AuthAppleManager.swift in Sources */,
|
||||||
E89F19452B917DBA0098E797 /* ChatSendVoiceView.swift in Sources */,
|
E89F19452B917DBA0098E797 /* ChatSendVoiceView.swift in Sources */,
|
||||||
23EE96EE2B9F27E200475D69 /* MicSequenceModel.swift in Sources */,
|
23EE96EE2B9F27E200475D69 /* MicSequenceModel.swift in Sources */,
|
||||||
|
23630BBB2BAD2EBB003AD25D /* YinClientInfoModel.swift in Sources */,
|
||||||
E8D15AC22B8C703C00369467 /* UserFunctionView.swift in Sources */,
|
E8D15AC22B8C703C00369467 /* UserFunctionView.swift in Sources */,
|
||||||
234E2E1E2B9AB43700433CF7 /* RoomNormalMicSeatView.swift in Sources */,
|
234E2E1E2B9AB43700433CF7 /* RoomNormalMicSeatView.swift in Sources */,
|
||||||
2311D6AF2B906148001C70AB /* HomeVoiceFollowView.swift in Sources */,
|
2311D6AF2B906148001C70AB /* HomeVoiceFollowView.swift in Sources */,
|
||||||
|
23630B9D2BAC0DEA003AD25D /* HomeSearchRoomVC.swift in Sources */,
|
||||||
E86A43DA2B877A840084C04D /* AppConfigObject.swift in Sources */,
|
E86A43DA2B877A840084C04D /* AppConfigObject.swift in Sources */,
|
||||||
2311D6BC2B909A4F001C70AB /* HomeVoicePublishView.swift in Sources */,
|
2311D6BC2B909A4F001C70AB /* HomeVoicePublishView.swift in Sources */,
|
||||||
|
23630BB52BAD2725003AD25D /* YinRoomRankView.swift in Sources */,
|
||||||
2311D6AD2B9058AA001C70AB /* HomeVoiceModel.swift in Sources */,
|
2311D6AD2B9058AA001C70AB /* HomeVoiceModel.swift in Sources */,
|
||||||
2311D6AB2B9024A9001C70AB /* HomeVoicePlayMusicItemView.swift in Sources */,
|
2311D6AB2B9024A9001C70AB /* HomeVoicePlayMusicItemView.swift in Sources */,
|
||||||
E8D15AA62B89B0C600369467 /* List+.swift in Sources */,
|
E8D15AA62B89B0C600369467 /* List+.swift in Sources */,
|
||||||
234E2E042B986D8400433CF7 /* RoomQuitModel.swift in Sources */,
|
234E2E042B986D8400433CF7 /* RoomQuitModel.swift in Sources */,
|
||||||
234E2E0A2B98779900433CF7 /* RoomQuitUserInfoEmptyCell.swift in Sources */,
|
234E2E0A2B98779900433CF7 /* RoomQuitUserInfoEmptyCell.swift in Sources */,
|
||||||
|
238A900C2BAAC6C600828123 /* HomeVoiceSearchView.swift in Sources */,
|
||||||
E81A7BAE2B885B20009E736E /* Base64.m in Sources */,
|
E81A7BAE2B885B20009E736E /* Base64.m in Sources */,
|
||||||
2311D6D72B91EF62001C70AB /* PlanetStarPopUpView.swift in Sources */,
|
2311D6D72B91EF62001C70AB /* PlanetStarPopUpView.swift in Sources */,
|
||||||
|
23630BB92BAD2CB8003AD25D /* YinRankH5UrlModel.swift in Sources */,
|
||||||
234E2E352B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift in Sources */,
|
234E2E352B9B06E800433CF7 /* RoomChatScreenUserChatCell.swift in Sources */,
|
||||||
E8479E462B8DD5BF009AF878 /* Date+.swift in Sources */,
|
E8479E462B8DD5BF009AF878 /* Date+.swift in Sources */,
|
||||||
E81A7BB22B886299009E736E /* HUDTool.swift in Sources */,
|
E81A7BB22B886299009E736E /* HUDTool.swift in Sources */,
|
||||||
@@ -1184,7 +1303,6 @@
|
|||||||
E8D15AAA2B8ACC6B00369467 /* YMNetworkFun.swift in Sources */,
|
E8D15AAA2B8ACC6B00369467 /* YMNetworkFun.swift in Sources */,
|
||||||
234E2E202B9AB44800433CF7 /* MicSeatSuperView.swift in Sources */,
|
234E2E202B9AB44800433CF7 /* MicSeatSuperView.swift in Sources */,
|
||||||
E8D15AB82B8B003C00369467 /* UserInfoVC.swift in Sources */,
|
E8D15AB82B8B003C00369467 /* UserInfoVC.swift in Sources */,
|
||||||
234E2DF72B984FB200433CF7 /* RoomTopView.swift in Sources */,
|
|
||||||
E86A43B82B85F0B80084C04D /* AuthLaunchVC.swift in Sources */,
|
E86A43B82B85F0B80084C04D /* AuthLaunchVC.swift in Sources */,
|
||||||
E8E4AB252B901E400096D77C /* ChatMoreMenuCell.swift in Sources */,
|
E8E4AB252B901E400096D77C /* ChatMoreMenuCell.swift in Sources */,
|
||||||
2311D6BA2B908D01001C70AB /* UserPayViewController.swift in Sources */,
|
2311D6BA2B908D01001C70AB /* UserPayViewController.swift in Sources */,
|
||||||
@@ -1205,14 +1323,19 @@
|
|||||||
E89F19492B919EB80098E797 /* ChatVoiceCell.swift in Sources */,
|
E89F19492B919EB80098E797 /* ChatVoiceCell.swift in Sources */,
|
||||||
234E2E062B986E2100433CF7 /* Enum.swift in Sources */,
|
234E2E062B986E2100433CF7 /* Enum.swift in Sources */,
|
||||||
23EE96EC2B9F273A00475D69 /* MicSeatModel.swift in Sources */,
|
23EE96EC2B9F273A00475D69 /* MicSeatModel.swift in Sources */,
|
||||||
|
23630BB72BAD2725003AD25D /* YinRoomRankItemView.swift in Sources */,
|
||||||
|
23630BA12BAC12F9003AD25D /* HomeSearchRoomCell.swift in Sources */,
|
||||||
E8D15AB62B8B002700369467 /* ChatVC.swift in Sources */,
|
E8D15AB62B8B002700369467 /* ChatVC.swift in Sources */,
|
||||||
E8E4AB182B9019E50096D77C /* ChatKeyboardView.swift in Sources */,
|
E8E4AB182B9019E50096D77C /* ChatKeyboardView.swift in Sources */,
|
||||||
|
23630BBF2BAD37B7003AD25D /* YinRoomTRTCManager.swift in Sources */,
|
||||||
|
23630BA32BAC23BA003AD25D /* HomeSearchRoomModel.swift in Sources */,
|
||||||
E8E4AB232B901E0C0096D77C /* ChatMoreMnueConfig.swift in Sources */,
|
E8E4AB232B901E0C0096D77C /* ChatMoreMnueConfig.swift in Sources */,
|
||||||
E86A43C62B862CC70084C04D /* UIImage+.swift in Sources */,
|
E86A43C62B862CC70084C04D /* UIImage+.swift in Sources */,
|
||||||
E8E4AB212B901CD50096D77C /* ChatMoreMenuView.swift in Sources */,
|
E8E4AB212B901CD50096D77C /* ChatMoreMenuView.swift in Sources */,
|
||||||
E86A43D32B8773C90084C04D /* APPUtils.swift in Sources */,
|
E86A43D32B8773C90084C04D /* APPUtils.swift in Sources */,
|
||||||
23EE96E62B9EE79A00475D69 /* RoomVCViewModel.swift in Sources */,
|
23EE96E62B9EE79A00475D69 /* RoomVCViewModel.swift in Sources */,
|
||||||
E86A43CB2B874C6F0084C04D /* AuthPrivacyView.swift in Sources */,
|
E86A43CB2B874C6F0084C04D /* AuthPrivacyView.swift in Sources */,
|
||||||
|
23630BB62BAD2725003AD25D /* RoomTopView.swift in Sources */,
|
||||||
234E2E0C2B9879D400433CF7 /* RoomQuitClickCell.swift in Sources */,
|
234E2E0C2B9879D400433CF7 /* RoomQuitClickCell.swift in Sources */,
|
||||||
234E2DFD2B985A7300433CF7 /* UILabel+.swift in Sources */,
|
234E2DFD2B985A7300433CF7 /* UILabel+.swift in Sources */,
|
||||||
E8D15AC52B8C90D400369467 /* AboutUsVC.swift in Sources */,
|
E8D15AC52B8C90D400369467 /* AboutUsVC.swift in Sources */,
|
||||||
@@ -1224,12 +1347,15 @@
|
|||||||
E86A43BA2B85F1360084C04D /* AuthLoginVC.swift in Sources */,
|
E86A43BA2B85F1360084C04D /* AuthLoginVC.swift in Sources */,
|
||||||
E8D15ABC2B8B87BA00369467 /* UserViewModel.swift in Sources */,
|
E8D15ABC2B8B87BA00369467 /* UserViewModel.swift in Sources */,
|
||||||
E8479E432B8DD077009AF878 /* ChatUIConfig.swift in Sources */,
|
E8479E432B8DD077009AF878 /* ChatUIConfig.swift in Sources */,
|
||||||
|
23EE97032BA29F1E00475D69 /* SendGiftTopView.swift in Sources */,
|
||||||
234E2E252B9AB64700433CF7 /* NormalMicSeatCell.swift in Sources */,
|
234E2E252B9AB64700433CF7 /* NormalMicSeatCell.swift in Sources */,
|
||||||
E8479E4D2B8DDBC5009AF878 /* ChatAttributeTool.swift in Sources */,
|
E8479E4D2B8DDBC5009AF878 /* ChatAttributeTool.swift in Sources */,
|
||||||
E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */,
|
E81A7BAF2B885B20009E736E /* MAIDESEncryptTool.m in Sources */,
|
||||||
|
23630B9B2BABCEA5003AD25D /* HomeSearchNavView.swift in Sources */,
|
||||||
E8D15AA82B89B74700369467 /* YMRequestX.swift in Sources */,
|
E8D15AA82B89B74700369467 /* YMRequestX.swift in Sources */,
|
||||||
E8E4AB1D2B901B9D0096D77C /* ChatKeyboard+.swift in Sources */,
|
E8E4AB1D2B901B9D0096D77C /* ChatKeyboard+.swift in Sources */,
|
||||||
2311D6C62B917949001C70AB /* HomeVoiceRecordBtnView.swift in Sources */,
|
2311D6C62B917949001C70AB /* HomeVoiceRecordBtnView.swift in Sources */,
|
||||||
|
23EE97072BA2AC8300475D69 /* SendGiftUserCell.swift in Sources */,
|
||||||
234E2DF02B98425800433CF7 /* RoomVC.swift in Sources */,
|
234E2DF02B98425800433CF7 /* RoomVC.swift in Sources */,
|
||||||
2311D6A72B8F2CFA001C70AB /* HomeVoiceChooseItemVeiw.swift in Sources */,
|
2311D6A72B8F2CFA001C70AB /* HomeVoiceChooseItemVeiw.swift in Sources */,
|
||||||
E8D15AB02B8AFFCE00369467 /* HomeVoiceVC.swift in Sources */,
|
E8D15AB02B8AFFCE00369467 /* HomeVoiceVC.swift in Sources */,
|
||||||
@@ -1247,7 +1373,9 @@
|
|||||||
2311D69D2B8DC311001C70AB /* PlanetStarModel.swift in Sources */,
|
2311D69D2B8DC311001C70AB /* PlanetStarModel.swift in Sources */,
|
||||||
E89F19B32B91E2C00098E797 /* PasswordSetVC.swift in Sources */,
|
E89F19B32B91E2C00098E797 /* PasswordSetVC.swift in Sources */,
|
||||||
2311D6CB2B91BBF2001C70AB /* RecordVoiceManager.m in Sources */,
|
2311D6CB2B91BBF2001C70AB /* RecordVoiceManager.m in Sources */,
|
||||||
|
23630B992BABCE52003AD25D /* HomeSearchVC.swift in Sources */,
|
||||||
2311D6C42B917619001C70AB /* HomeVoiceRecordView.swift in Sources */,
|
2311D6C42B917619001C70AB /* HomeVoiceRecordView.swift in Sources */,
|
||||||
|
23EE97052BA2A67300475D69 /* SendGiftUserView.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
22
yinmeng-ios/Assets.xcassets/Home/home_search_online_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "home_search_online_icon@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "home_search_online_icon@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/Home/home_search_online_icon.imageset/home_search_online_icon@2x.png
vendored
Normal file
After Width: | Height: | Size: 187 B |
BIN
yinmeng-ios/Assets.xcassets/Home/home_search_online_icon.imageset/home_search_online_icon@3x.png
vendored
Normal file
After Width: | Height: | Size: 222 B |
22
yinmeng-ios/Assets.xcassets/Home/yin_home_voice_search_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_home_voice_search_bg@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_home_voice_search_bg@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/Home/yin_home_voice_search_bg.imageset/yin_home_voice_search_bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 515 B |
BIN
yinmeng-ios/Assets.xcassets/Home/yin_home_voice_search_bg.imageset/yin_home_voice_search_bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 881 B |
22
yinmeng-ios/Assets.xcassets/Home/yin_home_voice_search_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_home_voice_search_icon@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_home_voice_search_icon@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 830 B |
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.0 KiB |
22
yinmeng-ios/Assets.xcassets/Home/yin_left_black_arrow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_left_black_arrow@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_left_black_arrow@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/Home/yin_left_black_arrow.imageset/yin_left_black_arrow@2x.png
vendored
Normal file
After Width: | Height: | Size: 363 B |
BIN
yinmeng-ios/Assets.xcassets/Home/yin_left_black_arrow.imageset/yin_left_black_arrow@3x.png
vendored
Normal file
After Width: | Height: | Size: 468 B |
22
yinmeng-ios/Assets.xcassets/Home/yin_plane_star_send_gift_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_plane_star_send_gift_icon@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_plane_star_send_gift_icon@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.9 KiB |
22
yinmeng-ios/Assets.xcassets/Home/yin_search_vc_iocn.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_search_vc_iocn@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_search_vc_iocn@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/Home/yin_search_vc_iocn.imageset/yin_search_vc_iocn@2x.png
vendored
Normal file
After Width: | Height: | Size: 570 B |
BIN
yinmeng-ios/Assets.xcassets/Home/yin_search_vc_iocn.imageset/yin_search_vc_iocn@3x.png
vendored
Normal file
After Width: | Height: | Size: 703 B |
22
yinmeng-ios/Assets.xcassets/room/MicSeat/room_send_gift_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "room_send_gift_icon@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "room_send_gift_icon@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/room/MicSeat/room_send_gift_icon.imageset/room_send_gift_icon@2x.png
vendored
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
yinmeng-ios/Assets.xcassets/room/MicSeat/room_send_gift_icon.imageset/room_send_gift_icon@3x.png
vendored
Normal file
After Width: | Height: | Size: 4.3 KiB |
6
yinmeng-ios/Assets.xcassets/room/Rank/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
22
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_first.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_first@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_first@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_first.imageset/yin_room_rank_first@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_first.imageset/yin_room_rank_first@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
22
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_second.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_second@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_second@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_second.imageset/yin_room_rank_second@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_second.imageset/yin_room_rank_second@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.9 KiB |
22
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_third.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_third@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "yin_room_rank_third@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_third.imageset/yin_room_rank_third@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
yinmeng-ios/Assets.xcassets/room/Rank/yin_room_rank_third.imageset/yin_room_rank_third@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
@@ -10,3 +10,5 @@
|
|||||||
#import <FFPopup/FFPopup.h>
|
#import <FFPopup/FFPopup.h>
|
||||||
#import <MJExtension/MJExtension.h>
|
#import <MJExtension/MJExtension.h>
|
||||||
#import <TXLiteAVSDK_TRTC/TRTCCloud.h>
|
#import <TXLiteAVSDK_TRTC/TRTCCloud.h>
|
||||||
|
#import <JXCategoryView/JXCategoryView.h>
|
||||||
|
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||||
|
@@ -12,4 +12,5 @@ enum H5Utils:String {
|
|||||||
case user = "modules/rule/protocol.html"
|
case user = "modules/rule/protocol.html"
|
||||||
case logoff = "modules/logout/index.html"
|
case logoff = "modules/logout/index.html"
|
||||||
case pay = "mew/modules/rule/rechargeAgreement.html"
|
case pay = "mew/modules/rule/rechargeAgreement.html"
|
||||||
|
case rank = "modules/room_rank/index.html"
|
||||||
}
|
}
|
||||||
|
@@ -25,6 +25,7 @@ let H5_URL = "http://beta.h5.ymlive.fun"
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extension UIFont{
|
extension UIFont{
|
||||||
static func getScaleFont(ofSize:CGFloat,weight:Weight)->UIFont{
|
static func getScaleFont(ofSize:CGFloat,weight:Weight)->UIFont{
|
||||||
return UIFont.systemFont(ofSize: UIDevice.scaleWidth(width: ofSize), weight: weight)
|
return UIFont.systemFont(ofSize: UIDevice.scaleWidth(width: ofSize), weight: weight)
|
||||||
|
@@ -37,13 +37,14 @@ class WebViewController: BaseViewController {
|
|||||||
private(set) weak var navigationDelegate: WKNavigationDelegate?
|
private(set) weak var navigationDelegate: WKNavigationDelegate?
|
||||||
|
|
||||||
private(set) var url: String?
|
private(set) var url: String?
|
||||||
|
var isHalf:Bool = false
|
||||||
convenience init(
|
convenience init(
|
||||||
url: String?,
|
url: String?,
|
||||||
navigationDelegate: WKNavigationDelegate? = nil
|
navigationDelegate: WKNavigationDelegate? = nil,isHalf:Bool = false
|
||||||
) {
|
) {
|
||||||
self.init(nibName: nil, bundle: nil)
|
self.init(nibName: nil, bundle: nil)
|
||||||
self.url = url
|
self.url = url
|
||||||
|
self.isHalf = isHalf
|
||||||
if var url = url {
|
if var url = url {
|
||||||
if !url.hasPrefix("http") {
|
if !url.hasPrefix("http") {
|
||||||
url = "\(H5_URL)/\(url)"
|
url = "\(H5_URL)/\(url)"
|
||||||
@@ -76,23 +77,51 @@ class WebViewController: BaseViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func loadSubViews() {
|
private func loadSubViews() {
|
||||||
view.addSubview(webview)
|
|
||||||
view.addSubview(progressView)
|
|
||||||
progressView.snp.makeConstraints { make in
|
|
||||||
make.top.equalTo(view).offset(0)
|
|
||||||
make.left.right.equalTo(view).offset(0)
|
|
||||||
make.height.equalTo(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
webview.snp.makeConstraints { make in
|
if self.isHalf{
|
||||||
make.top.equalTo(view).offset(1)
|
let bakcBtn = UIButton()
|
||||||
make.left.right.bottom.equalTo(view)
|
bakcBtn.addTarget(self, action: #selector(dissViewAction), for: .touchUpInside)
|
||||||
}
|
view.addSubview(bakcBtn)
|
||||||
|
bakcBtn.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(view)
|
||||||
|
}
|
||||||
|
view.addSubview(webview)
|
||||||
|
view.addSubview(progressView)
|
||||||
|
progressView.snp.makeConstraints { make in
|
||||||
|
make.top.equalTo(view).offset(0)
|
||||||
|
make.left.right.equalTo(view).offset(0)
|
||||||
|
make.height.equalTo(1)
|
||||||
|
}
|
||||||
|
view.backgroundColor = .clear
|
||||||
|
webview.snp.makeConstraints { make in
|
||||||
|
|
||||||
|
make.left.bottom.right.equalTo(view)
|
||||||
|
make.height.equalTo(ScreenHeight * 0.65)
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
view.addSubview(webview)
|
||||||
|
view.addSubview(progressView)
|
||||||
|
progressView.snp.makeConstraints { make in
|
||||||
|
make.top.equalTo(view).offset(0)
|
||||||
|
make.left.right.equalTo(view).offset(0)
|
||||||
|
make.height.equalTo(1)
|
||||||
|
}
|
||||||
|
webview.snp.makeConstraints { make in
|
||||||
|
make.top.equalTo(view).offset(1)
|
||||||
|
make.left.right.bottom.equalTo(view)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
progressView.trackTintColor = .clear
|
progressView.trackTintColor = .clear
|
||||||
progressView.transform = .init(scaleX: 1, y: 1.5)
|
progressView.transform = .init(scaleX: 1, y: 1.5)
|
||||||
progressView.alpha = 0
|
progressView.alpha = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func dissViewAction(){
|
||||||
|
self.dismiss(animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
||||||
if let object = object as? WKWebView, object == webview {
|
if let object = object as? WKWebView, object == webview {
|
||||||
if keyPath == "estimatedProgress" {
|
if keyPath == "estimatedProgress" {
|
||||||
|
@@ -106,5 +106,76 @@ extension Date {
|
|||||||
dateformatter.dateFormat = dateFormat
|
dateformatter.dateFormat = dateFormat
|
||||||
return dateformatter.string(from: self)
|
return dateformatter.string(from: self)
|
||||||
}
|
}
|
||||||
|
private enum ConstellationType:String {
|
||||||
|
case 白羊座, 金牛座, 双子座, 巨蟹座, 狮子座, 处女座,
|
||||||
|
天秤座, 天蝎座, 射手座, 摩羯座, 水瓶座, 双鱼座
|
||||||
|
}
|
||||||
|
|
||||||
|
private static let constellationDict:[ConstellationType :String] = [.白羊座: "3.21-4.19",
|
||||||
|
.金牛座: "4.20-5.20",
|
||||||
|
.双子座: "5.21-6.21",
|
||||||
|
.巨蟹座: "6.22-7.22",
|
||||||
|
.狮子座: "7.23-8.22",
|
||||||
|
.处女座: "8.23-9.22",
|
||||||
|
.天秤座: "9.23-10.23",
|
||||||
|
.天蝎座: "10.24-11.22",
|
||||||
|
.射手座: "11.23-12.21",
|
||||||
|
.摩羯座: "12.22-1.19",
|
||||||
|
.水瓶座: "1.20-2.18",
|
||||||
|
.双鱼座: "2.19-3.20"]
|
||||||
|
|
||||||
|
/// 日期 -> 星座
|
||||||
|
/// - parameter date: 日期
|
||||||
|
/// - returns: 星座名称
|
||||||
|
public static func getCalculateWithDate(date: Date) -> String? {
|
||||||
|
|
||||||
|
let timeInterval = date.timeIntervalSince1970
|
||||||
|
let OneDay:Double = 86400
|
||||||
|
|
||||||
|
let currConstellation = constellationDict.filter {
|
||||||
|
|
||||||
|
let timeRange = getTimeRange(date: date, timeRange: $1)
|
||||||
|
let startTime = timeRange.0
|
||||||
|
let endTime = timeRange.1 + OneDay
|
||||||
|
|
||||||
|
return timeInterval > startTime && timeInterval < endTime
|
||||||
|
} // 摩羯座这家伙跨年必定不满足
|
||||||
|
|
||||||
|
return currConstellation.first?.key.rawValue ?? "摩羯座"
|
||||||
|
}
|
||||||
|
|
||||||
|
/// f.获取开始、结束时间
|
||||||
|
private static func getTimeRange(date:Date, timeRange: String) -> (TimeInterval, TimeInterval) {
|
||||||
|
|
||||||
|
/// f.1 获取当前年份
|
||||||
|
func getCurrYear(date:Date) -> String {
|
||||||
|
|
||||||
|
let dm = DateFormatter()
|
||||||
|
dm.dateFormat = "yyyy."
|
||||||
|
let currYear = dm.string(from: date)
|
||||||
|
return currYear
|
||||||
|
}
|
||||||
|
|
||||||
|
/// f.2 日期转换当前时间戳
|
||||||
|
func toTimeInterval(dateStr: String) -> TimeInterval? {
|
||||||
|
|
||||||
|
let dm = DateFormatter()
|
||||||
|
dm.dateFormat = "yyyy.MM.dd"
|
||||||
|
|
||||||
|
let date = dm.date(from: dateStr)
|
||||||
|
let interval = date?.timeIntervalSince1970
|
||||||
|
|
||||||
|
return interval
|
||||||
|
}
|
||||||
|
|
||||||
|
let timeStrArr = timeRange.components(separatedBy: "-")
|
||||||
|
let dateYear = getCurrYear(date: date)
|
||||||
|
let startTimeStr = dateYear + timeStrArr.first!
|
||||||
|
let endTimeStr = dateYear + timeStrArr.last!
|
||||||
|
|
||||||
|
let startTime = toTimeInterval(dateStr: startTimeStr)!
|
||||||
|
let endTime = toTimeInterval(dateStr: endTimeStr)!
|
||||||
|
|
||||||
|
return (startTime, endTime)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -35,22 +35,22 @@ extension UIButton {
|
|||||||
return bounds.contains(point)
|
return bounds.contains(point)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func getCustomBtn(text:String? = nil,selectedText:String? = nil,font:UIFont? = nil,color:UIColor? = nil,selectedColor:UIColor? = nil,image:UIImage? = nil,selectedImage:UIImage? = nil,bgImage:UIImage? = nil) -> UIButton{
|
static func getCustomBtn(type:UIButton.ButtonType = .custom, text:String? = nil,selectedText:String? = nil,font:UIFont? = nil,color:UIColor? = nil,selectedColor:UIColor? = nil,image:UIImage? = nil,selectedImage:UIImage? = nil,bgImage:UIImage? = nil,selectedBgImage:UIImage? = nil) -> UIButton{
|
||||||
let customBtn = UIButton()
|
let customBtn = UIButton(type: type)
|
||||||
if let _text = text{
|
if let _text = text{
|
||||||
customBtn.setTitle(text, for: .normal)
|
customBtn.setTitle(_text, for: .normal)
|
||||||
}
|
}
|
||||||
if let _selectedText = selectedText{
|
if let _selectedText = selectedText{
|
||||||
customBtn.setTitle(selectedText, for: .selected)
|
customBtn.setTitle(_selectedText, for: .selected)
|
||||||
}
|
}
|
||||||
if let _font = font{
|
if let _font = font{
|
||||||
customBtn.titleLabel?.font = font
|
customBtn.titleLabel?.font = _font
|
||||||
}
|
}
|
||||||
if let _color = color{
|
if let _color = color{
|
||||||
customBtn.setTitleColor(color, for: .normal)
|
customBtn.setTitleColor(_color, for: .normal)
|
||||||
}
|
}
|
||||||
if let _selectedColor = selectedColor{
|
if let _selectedColor = selectedColor{
|
||||||
customBtn.setTitleColor(selectedColor, for: .selected)
|
customBtn.setTitleColor(_selectedColor, for: .selected)
|
||||||
}
|
}
|
||||||
if let _image = image{
|
if let _image = image{
|
||||||
customBtn.setImage(_image, for: .normal)
|
customBtn.setImage(_image, for: .normal)
|
||||||
@@ -61,6 +61,9 @@ extension UIButton {
|
|||||||
if let _bgImage = bgImage{
|
if let _bgImage = bgImage{
|
||||||
customBtn.setBackgroundImage(_bgImage, for: .normal)
|
customBtn.setBackgroundImage(_bgImage, for: .normal)
|
||||||
}
|
}
|
||||||
|
if let _selectedBgImage = selectedBgImage{
|
||||||
|
customBtn.setBackgroundImage(_selectedBgImage, for: .selected)
|
||||||
|
}
|
||||||
return customBtn
|
return customBtn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,10 +7,17 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
extension UILabel{
|
extension UILabel{
|
||||||
static func getCustomLabel(text:String? = "",font:UIFont? = nil,color:UIColor? = nil,textAlignment:NSTextAlignment? = .left,numberOfLines:Int? = 1)->UILabel{
|
static func getCustomLabel(text:String? = "",font:UIFont? = nil,color:UIColor? = nil,textAlignment:NSTextAlignment? = .left,numberOfLines:Int? = 1,backgroundColor:UIColor? = nil,masksToBounds:Bool = false,cornerRadius:CGFloat = 0,borderWidth:CGFloat = 0,borderColor:UIColor? = nil)->UILabel{
|
||||||
let customView = UILabel()
|
let customView = UILabel()
|
||||||
|
customView.layer.masksToBounds = masksToBounds
|
||||||
|
customView.layer.cornerRadius = cornerRadius
|
||||||
|
customView.layer.borderWidth = borderWidth
|
||||||
|
if let _borderColor = borderColor{
|
||||||
|
customView.layer.borderColor = _borderColor.cgColor
|
||||||
|
}
|
||||||
|
|
||||||
if let _text = text {
|
if let _text = text {
|
||||||
customView.text = text
|
customView.text = _text
|
||||||
}
|
}
|
||||||
if let _font = font {
|
if let _font = font {
|
||||||
customView.font = _font
|
customView.font = _font
|
||||||
@@ -24,6 +31,9 @@ extension UILabel{
|
|||||||
if let _numberOfLines = numberOfLines{
|
if let _numberOfLines = numberOfLines{
|
||||||
customView.numberOfLines = _numberOfLines
|
customView.numberOfLines = _numberOfLines
|
||||||
}
|
}
|
||||||
|
if let _backgroundColor = backgroundColor{
|
||||||
|
customView.backgroundColor = _backgroundColor
|
||||||
|
}
|
||||||
return customView
|
return customView
|
||||||
}
|
}
|
||||||
static func getLabelHeigth(text:String,width:CGFloat,font:UIFont)-> CGFloat{
|
static func getLabelHeigth(text:String,width:CGFloat,font:UIFont)-> CGFloat{
|
||||||
|
@@ -16,10 +16,13 @@ class AuthViewModel: NSObject {
|
|||||||
var appId = ""
|
var appId = ""
|
||||||
let loginSuccess = BehaviorSubject(value: false)
|
let loginSuccess = BehaviorSubject(value: false)
|
||||||
let resetPwd = PublishSubject<Bool>()
|
let resetPwd = PublishSubject<Bool>()
|
||||||
|
var clientInfoModel:YinClientInfoModel?
|
||||||
|
|
||||||
func appClientConfig() {
|
func appClientConfig() {
|
||||||
RequestGet(path: "client/init", parma: [:]) { data in
|
RequestGet(path: "client/init", parma: [:]) { data in
|
||||||
|
if let account = Deserialized<YinClientInfoModel>.toModel(with: data) {
|
||||||
|
self.clientInfoModel = account
|
||||||
|
}
|
||||||
if let _data = data as? [String:Any],let appId = _data["trtcAppId"] {
|
if let _data = data as? [String:Any],let appId = _data["trtcAppId"] {
|
||||||
AuthViewModel.authVM.appId = "\(appId)"
|
AuthViewModel.authVM.appId = "\(appId)"
|
||||||
}
|
}
|
||||||
|
12
yinmeng-ios/Modules/Auth/VM/YinClientInfoModel.swift
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
//
|
||||||
|
// YinClientInfoModel.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import HandyJSON
|
||||||
|
struct YinClientInfoModel: HandyJSON {
|
||||||
|
var h5Uris:[YinRankH5UrlModel] = []
|
||||||
|
}
|
13
yinmeng-ios/Modules/Auth/VM/YinRankH5UrlModel.swift
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// YinRankH5UrlModel.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import HandyJSON
|
||||||
|
struct YinRankH5UrlModel: HandyJSON {
|
||||||
|
var code = ""
|
||||||
|
var uri = ""
|
||||||
|
}
|
115
yinmeng-ios/Modules/Home/HomeSearchNavView.swift
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
//
|
||||||
|
// HomeSearchNavView.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
|
||||||
|
typealias ClickSearchBlcok = (_ type:Int)->Void
|
||||||
|
|
||||||
|
class HomeSearchNavView: UIView {
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
addSubview(leftArrowBtn)
|
||||||
|
addSubview(bgSearchView)
|
||||||
|
addSubview(searchBtn)
|
||||||
|
bgSearchView.addSubview(searchIconView)
|
||||||
|
bgSearchView.addSubview(textField)
|
||||||
|
|
||||||
|
leftArrowBtn.snp.makeConstraints { make in
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 22))
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 8))
|
||||||
|
make.centerY.equalTo(bgSearchView)
|
||||||
|
}
|
||||||
|
bgSearchView.snp.makeConstraints { make in
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 30))
|
||||||
|
make.leading.equalTo(leftArrowBtn.snp.trailing).offset((UIDevice.scaleWidth(width: 5)))
|
||||||
|
make.trailing.equalTo(searchBtn.snp.leading).offset(-UIDevice.scaleWidth(width: 13))
|
||||||
|
make.top.equalTo(UIDevice.scaleWidth(width: StatusBarHeight + 10))
|
||||||
|
}
|
||||||
|
searchBtn.snp.makeConstraints { make in
|
||||||
|
make.trailing.equalTo(-UIDevice.scaleWidth(width: 15))
|
||||||
|
make.centerY.equalTo(bgSearchView)
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 30))
|
||||||
|
|
||||||
|
}
|
||||||
|
searchIconView.snp.makeConstraints { make in
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 28))
|
||||||
|
make.centerY.equalTo(bgSearchView)
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 9))
|
||||||
|
}
|
||||||
|
textField.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(searchIconView.snp.trailing).offset((UIDevice.scaleWidth(width: 0)))
|
||||||
|
make.trailing.top.bottom.equalTo(bgSearchView)
|
||||||
|
}
|
||||||
|
leftArrowBtn.addTarget(self, action: #selector(leftArroAction), for: .touchUpInside)
|
||||||
|
searchBtn.addTarget(self, action: #selector(searchBtnAction), for: .touchUpInside)
|
||||||
|
}
|
||||||
|
@objc func leftArroAction(){
|
||||||
|
if let clickSearchBlcok = self.clickSearchBlcok{
|
||||||
|
clickSearchBlcok(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@objc func searchBtnAction(){
|
||||||
|
textField.resignFirstResponder()
|
||||||
|
if let clickSearchBlcok = self.clickSearchBlcok{
|
||||||
|
clickSearchBlcok(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//MARK: - 懒加载
|
||||||
|
var clickSearchBlcok:ClickSearchBlcok?
|
||||||
|
private lazy var leftArrowBtn:UIButton = {
|
||||||
|
let _leftArrowBtn = UIButton.getCustomBtn(image: UIImage(named: "yin_left_black_arrow"))
|
||||||
|
_leftArrowBtn.setBtnClickRadius = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||||
|
return _leftArrowBtn
|
||||||
|
}()
|
||||||
|
private lazy var bgSearchView:UIView = {
|
||||||
|
let _bgSearchView = UIView()
|
||||||
|
_bgSearchView.backgroundColor = .white
|
||||||
|
_bgSearchView.layer.cornerRadius = UIDevice.scaleWidth(width: 30)/2
|
||||||
|
_bgSearchView.layer.masksToBounds = true
|
||||||
|
|
||||||
|
return _bgSearchView
|
||||||
|
}()
|
||||||
|
private lazy var searchIconView:UIImageView = {
|
||||||
|
let _searchIconView = UIImageView()
|
||||||
|
_searchIconView.isUserInteractionEnabled = true
|
||||||
|
|
||||||
|
_searchIconView.image = UIImage(named: "yin_search_vc_iocn")
|
||||||
|
return _searchIconView
|
||||||
|
}()
|
||||||
|
lazy var textField:UITextField = {
|
||||||
|
let _textField = UITextField()
|
||||||
|
_textField.layer.cornerRadius = UIDevice.scaleWidth(width: 30)/2
|
||||||
|
_textField.layer.masksToBounds = true
|
||||||
|
_textField.tintColor = ThemeColor(hexStr: "#878B9C")
|
||||||
|
_textField.textColor = ThemeColor(hexStr: "#282828")
|
||||||
|
_textField.backgroundColor = .clear
|
||||||
|
_textField.font = UIFont.getScaleFont(ofSize: 13, weight: .regular)
|
||||||
|
let att = NSAttributedString(string: "搜索昵称/ID/房间名",attributes: [.font:UIFont.getScaleFont(ofSize: 13, weight: .regular),.foregroundColor:ThemeColor(hexStr: "#878B9C")])
|
||||||
|
_textField.attributedPlaceholder = att
|
||||||
|
_textField.clearButtonMode = .whileEditing
|
||||||
|
_textField.returnKeyType = .search
|
||||||
|
_textField.enablesReturnKeyAutomatically = true
|
||||||
|
return _textField
|
||||||
|
}()
|
||||||
|
private lazy var searchBtn:UIButton = {
|
||||||
|
let _searchBtn = UIButton.getCustomBtn(text: "搜索",font: UIFont.getScaleFont(ofSize: 16, weight: .medium),color: ThemeColor(hexStr: "#878B9C"))
|
||||||
|
_searchBtn.setBtnClickRadius = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||||
|
|
||||||
|
return _searchBtn
|
||||||
|
}()
|
||||||
|
}
|
166
yinmeng-ios/Modules/Home/HomeSearchRoomCell.swift
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
//
|
||||||
|
// HomeSearchRoomCell.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import Nuke
|
||||||
|
|
||||||
|
class HomeSearchRoomCell: UITableViewCell {
|
||||||
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
selectionStyle = .none
|
||||||
|
backgroundColor = .clear
|
||||||
|
contentView.addSubview(avatarView)
|
||||||
|
contentView.addSubview(nickStackView)
|
||||||
|
contentView.addSubview(idView)
|
||||||
|
contentView.addSubview(numView)
|
||||||
|
contentView.addSubview(dividerView)
|
||||||
|
numView.addSubview(onlienTextView)
|
||||||
|
numView.addSubview(bgOnlineView)
|
||||||
|
|
||||||
|
|
||||||
|
nickStackView.addArrangedSubview(textVeiw)
|
||||||
|
nickStackView.addArrangedSubview(genderView)
|
||||||
|
|
||||||
|
avatarView.snp.makeConstraints { make in
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 45))
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 15))
|
||||||
|
make.centerY.equalTo(contentView)
|
||||||
|
}
|
||||||
|
nickStackView.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(avatarView.snp.trailing).offset((UIDevice.scaleWidth(width: 13)))
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 20))
|
||||||
|
make.bottom.equalTo(avatarView.snp.centerY).offset(-UIDevice.scaleWidth(width: 1.5))
|
||||||
|
}
|
||||||
|
idView.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(nickStackView)
|
||||||
|
make.top.equalTo(avatarView.snp.centerY).offset(UIDevice.scaleWidth(width: 1.5))
|
||||||
|
}
|
||||||
|
|
||||||
|
dividerView.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(nickStackView)
|
||||||
|
make.trailing.equalTo(-UIDevice.scaleWidth(width: 15))
|
||||||
|
make.bottom.equalTo(contentView)
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 1))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
numView.snp.makeConstraints { make in
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 18))
|
||||||
|
make.trailing.equalTo(-UIDevice.scaleWidth(width: 15))
|
||||||
|
make.centerY.equalTo(contentView)
|
||||||
|
make.leading.equalTo(bgOnlineView.snp.leading).offset(-UIDevice.scaleWidth(width: 8))
|
||||||
|
}
|
||||||
|
|
||||||
|
onlienTextView.snp.makeConstraints { make in
|
||||||
|
make.centerY.equalTo(numView)
|
||||||
|
make.trailing.equalTo(numView.snp.trailing).offset(-UIDevice.scaleWidth(width:5))
|
||||||
|
}
|
||||||
|
bgOnlineView.snp.makeConstraints { make in
|
||||||
|
make.width.equalTo(UIDevice.scaleWidth(width: 10))
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 9))
|
||||||
|
make.centerY.equalTo(numView)
|
||||||
|
make.trailing.equalTo(onlienTextView.snp.leading).offset(-UIDevice.scaleWidth(width:3))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setModel(model:HomeSearchRoomModel,type:Int){
|
||||||
|
Nuke.loadImage(with: model.avatar, into: avatarView, completion: nil)
|
||||||
|
textVeiw.text = type == 0 ? model.title : model.nick
|
||||||
|
idView.text = "ID:" + model.erbanNo
|
||||||
|
genderView.image = model.gender == .Boy ? UIImage(named: "yin_plane_star_man") : UIImage(named: "yin_plane_star__woman")
|
||||||
|
if type == 0{
|
||||||
|
if model.onlineNum > 100{
|
||||||
|
onlienTextView.text = "\(model.onlineNum)"
|
||||||
|
}else{
|
||||||
|
onlienTextView.text = " \(model.onlineNum) "
|
||||||
|
}
|
||||||
|
numView.isHidden = !model.valid
|
||||||
|
return
|
||||||
|
}
|
||||||
|
onlienTextView.text = "直播中"
|
||||||
|
numView.isHidden = model.roomUid.count <= 0
|
||||||
|
}
|
||||||
|
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var avatarView:UIImageView = {
|
||||||
|
let _avatarView = UIImageView()
|
||||||
|
_avatarView.layer.cornerRadius = UIDevice.scaleWidth(width: 45)/2
|
||||||
|
_avatarView.layer.masksToBounds = true
|
||||||
|
_avatarView.contentMode = .scaleAspectFill
|
||||||
|
return _avatarView
|
||||||
|
}()
|
||||||
|
private lazy var nickStackView:UIStackView = {
|
||||||
|
let _nickStackView = UIStackView()
|
||||||
|
_nickStackView.axis = .horizontal
|
||||||
|
_nickStackView.distribution = .fill
|
||||||
|
_nickStackView.alignment = .center
|
||||||
|
_nickStackView.spacing = UIDevice.scaleWidth(width: 2)
|
||||||
|
|
||||||
|
return _nickStackView
|
||||||
|
}()
|
||||||
|
private lazy var textVeiw:UILabel = {
|
||||||
|
let _textVeiw = UILabel.getCustomLabel(font: UIFont.getScaleFont(ofSize: 15, weight: .regular),color: ThemeColor(hexStr: "#878B9C"))
|
||||||
|
return _textVeiw
|
||||||
|
}()
|
||||||
|
private lazy var genderView:UIImageView = {
|
||||||
|
let _genderView = UIImageView()
|
||||||
|
_genderView.isUserInteractionEnabled = true
|
||||||
|
return _genderView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var idView:UILabel = {
|
||||||
|
let _idView = UILabel.getCustomLabel(font: UIFont.getScaleFont(ofSize: 13, weight: .regular),color: ThemeColor(hexStr: "#BDBFD0"))
|
||||||
|
|
||||||
|
return _idView
|
||||||
|
}()
|
||||||
|
private lazy var dividerView:UIView = {
|
||||||
|
let _dividerView = UIView()
|
||||||
|
_dividerView.backgroundColor = ThemeColor(hexStr: "#E8E8E8")
|
||||||
|
|
||||||
|
return _dividerView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var numView:UIView = {
|
||||||
|
let _numView = UIView()
|
||||||
|
_numView.backgroundColor = .clear
|
||||||
|
_numView.layer.masksToBounds = true
|
||||||
|
_numView.layer.cornerRadius = UIDevice.scaleWidth(width: 18)/2
|
||||||
|
_numView.layer.borderColor = ThemeColor(hexStr: "#248CFE").cgColor
|
||||||
|
_numView.layer.borderWidth = 1
|
||||||
|
|
||||||
|
return _numView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var bgOnlineView:UIImageView = {
|
||||||
|
let _bgOnlineView = UIImageView()
|
||||||
|
_bgOnlineView.image = UIImage(named: "home_search_online_icon")
|
||||||
|
return _bgOnlineView
|
||||||
|
}()
|
||||||
|
private lazy var onlienTextView:UILabel = {
|
||||||
|
let _onlienTextView = UILabel.getCustomLabel(text: "直播中",font: UIFont.getScaleFont(ofSize: 10, weight: .regular),color: ThemeColor(hexStr: "#248CFE"))
|
||||||
|
return _onlienTextView
|
||||||
|
}()
|
||||||
|
override func awakeFromNib() {
|
||||||
|
super.awakeFromNib()
|
||||||
|
// Initialization code
|
||||||
|
}
|
||||||
|
|
||||||
|
override func setSelected(_ selected: Bool, animated: Bool) {
|
||||||
|
super.setSelected(selected, animated: animated)
|
||||||
|
|
||||||
|
// Configure the view for the selected state
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
28
yinmeng-ios/Modules/Home/HomeSearchRoomModel.swift
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// HomeSearchRoomModel.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import HandyJSON
|
||||||
|
struct HomeSearchRoomModel:HandyJSON{
|
||||||
|
var avatar = ""
|
||||||
|
|
||||||
|
var onlineNum:Int = 0
|
||||||
|
|
||||||
|
var uid = ""
|
||||||
|
|
||||||
|
var title = ""
|
||||||
|
|
||||||
|
var nick = ""
|
||||||
|
|
||||||
|
var erbanNo = ""
|
||||||
|
|
||||||
|
var valid = false
|
||||||
|
|
||||||
|
var gender:UserSexType = .Boy
|
||||||
|
|
||||||
|
var roomUid = ""
|
||||||
|
}
|
93
yinmeng-ios/Modules/Home/HomeSearchRoomVC.swift
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
//
|
||||||
|
// HomeSearchRoomVC.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class HomeSearchRoomVC: BaseViewController {
|
||||||
|
|
||||||
|
init(type:Int){
|
||||||
|
super.init(nibName: nil, bundle: nil)
|
||||||
|
self.type = type
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
view.addSubview(tableView)
|
||||||
|
view.backgroundColor = .clear
|
||||||
|
tableView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(view)
|
||||||
|
}
|
||||||
|
tableView.delegate = self
|
||||||
|
tableView.dataSource = self
|
||||||
|
tableView.register(HomeSearchRoomCell.self, forCellReuseIdentifier: "HomeSearchRoomCell")
|
||||||
|
}
|
||||||
|
func requestData(text:String){
|
||||||
|
let params = ["page":"1","pageSize":"50","key":text,"type":"\(type+1)"]
|
||||||
|
RequestGet(path: "search/room", parma: params) { data in
|
||||||
|
if let list = Deserialized<HomeSearchRoomModel>.toArray(with: data) {
|
||||||
|
self.listData = list
|
||||||
|
self.tableView.reloadData()
|
||||||
|
}
|
||||||
|
} fail: { code, message in
|
||||||
|
HUDTool.show(with: message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var listData:[HomeSearchRoomModel] = []
|
||||||
|
var type:Int = 0
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var tableView:UITableView = {
|
||||||
|
let _tableView = UITableView(frame: .zero, style: .plain)
|
||||||
|
_tableView.tableHeaderView = UIView()
|
||||||
|
_tableView.tableFooterView = UIView()
|
||||||
|
_tableView.separatorStyle = .none
|
||||||
|
_tableView.backgroundColor = .clear
|
||||||
|
return _tableView
|
||||||
|
}()
|
||||||
|
|
||||||
|
}
|
||||||
|
extension HomeSearchRoomVC:JXCategoryListContentViewDelegate,UITableViewDelegate,UITableViewDataSource{
|
||||||
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||||
|
return listData.count
|
||||||
|
}
|
||||||
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||||
|
return UIDevice.scaleWidth(width: 74)
|
||||||
|
}
|
||||||
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
|
let cell = tableView.dequeueReusableCell(withIdentifier: "HomeSearchRoomCell", for: indexPath) as! HomeSearchRoomCell
|
||||||
|
cell.setModel(model: listData[indexPath.row], type: type)
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
if type == 1 {return}
|
||||||
|
let model = listData[indexPath.row]
|
||||||
|
if model.valid {
|
||||||
|
self.dismiss(animated: true) {
|
||||||
|
let vc = RoomVC(roomUid: model.uid)
|
||||||
|
vc.roomText = model.title + "的房间"
|
||||||
|
let nav = BaseNavigationViewController.init(rootViewController: vc)
|
||||||
|
nav.modalPresentationStyle = .fullScreen
|
||||||
|
keyWindow.rootViewController?.present(nav, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
HUDTool.show(with: "该用户的房间已失效")
|
||||||
|
}
|
||||||
|
func listView() -> UIView! {
|
||||||
|
return self.view
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
121
yinmeng-ios/Modules/Home/HomeSearchVC.swift
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
//
|
||||||
|
// HomeSearchVC.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class HomeSearchVC: BaseViewController,HiddenNavigationBarProtocol {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
setUILayout()
|
||||||
|
requestData()
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
view.addSubview(navView)
|
||||||
|
view.addSubview(pageTitleView)
|
||||||
|
view.addSubview(containerView)
|
||||||
|
view.backgroundColor = ThemeColor(hexStr: "#F8F8FB")
|
||||||
|
navView.snp.makeConstraints { make in
|
||||||
|
make.leading.trailing.top.equalTo(view)
|
||||||
|
make.height.equalTo(NavHeight)
|
||||||
|
}
|
||||||
|
|
||||||
|
pageTitleView.snp.makeConstraints { make in
|
||||||
|
make.leading.trailing.equalTo(view).inset(UIDevice.scaleWidth(width: 0))
|
||||||
|
make.top.equalTo(navView.snp.bottom).offset(UIDevice.scaleWidth(width: 10))
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 50))
|
||||||
|
}
|
||||||
|
containerView.snp.makeConstraints { make in
|
||||||
|
make.top.equalTo(pageTitleView.snp.bottom).offset(UIDevice.scaleWidth(width: 10))
|
||||||
|
make.leading.trailing.bottom.equalTo(view)
|
||||||
|
}
|
||||||
|
navView.textField.delegate = self
|
||||||
|
navView.clickSearchBlcok = {[weak self] type in
|
||||||
|
guard let self = self else { return }
|
||||||
|
if type == 0{
|
||||||
|
self.dismiss(animated: true, completion: nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.roomView.requestData(text:self.navView.textField.text ?? "")
|
||||||
|
self.userView.requestData(text: self.navView.textField.text ?? "")
|
||||||
|
|
||||||
|
}
|
||||||
|
pageTitleView.listContainer = containerView
|
||||||
|
}
|
||||||
|
private func requestData(){
|
||||||
|
|
||||||
|
}
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var navView:HomeSearchNavView = {
|
||||||
|
let _navView = HomeSearchNavView(frame: .zero)
|
||||||
|
|
||||||
|
return _navView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var pageTitleView:JXCategoryTitleView = {
|
||||||
|
let _pageTitleView = JXCategoryTitleView()
|
||||||
|
_pageTitleView.delegate = self
|
||||||
|
_pageTitleView.titles = ["房间","用户"]
|
||||||
|
_pageTitleView.titleColor = ThemeColor(hexStr: "#878B9C")
|
||||||
|
_pageTitleView.titleSelectedColor = ThemeColor(hexStr: "#282828")
|
||||||
|
_pageTitleView.titleFont = UIFont.getScaleFont(ofSize: 16, weight: .medium)
|
||||||
|
_pageTitleView.titleSelectedFont = UIFont.getScaleFont(ofSize: 16, weight: .medium)
|
||||||
|
_pageTitleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyle.center
|
||||||
|
_pageTitleView.isContentScrollViewClickTransitionAnimationEnabled = false
|
||||||
|
_pageTitleView.defaultSelectedIndex = 0
|
||||||
|
let lineView = JXCategoryIndicatorLineView()
|
||||||
|
lineView.indicatorColor = ThemeColor(hexStr: "#FFE710")
|
||||||
|
lineView.indicatorWidth = UIDevice.scaleWidth(width: 8)
|
||||||
|
lineView.indicatorHeight = UIDevice.scaleWidth(width: 8) / 2
|
||||||
|
lineView.indicatorCornerRadius = UIDevice.scaleWidth(width: 8) / 4
|
||||||
|
_pageTitleView.indicators = [lineView]
|
||||||
|
return _pageTitleView
|
||||||
|
}()
|
||||||
|
private lazy var containerView:JXCategoryListContainerView = {
|
||||||
|
let _containerView = JXCategoryListContainerView.init(type: .scrollView, delegate: self)!
|
||||||
|
_containerView.setDefaultSelectedIndex(0)
|
||||||
|
return _containerView
|
||||||
|
}()
|
||||||
|
private lazy var roomView:HomeSearchRoomVC = {
|
||||||
|
let _roomView = HomeSearchRoomVC(type: 0)
|
||||||
|
|
||||||
|
return _roomView
|
||||||
|
}()
|
||||||
|
private lazy var userView:HomeSearchRoomVC = {
|
||||||
|
let _userView = HomeSearchRoomVC(type: 1)
|
||||||
|
|
||||||
|
return _userView
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
extension HomeSearchVC:JXCategoryListContainerViewDelegate,JXCategoryViewDelegate,UITextFieldDelegate{
|
||||||
|
func number(ofListsInlistContainerView listContainerView: JXCategoryListContainerView!) -> Int {
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
func listContainerView(_ listContainerView: JXCategoryListContainerView!, initListFor index: Int) -> JXCategoryListContentViewDelegate! {
|
||||||
|
return index == 0 ? roomView : userView
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||||
|
guard let text = textField.text else {
|
||||||
|
HUDTool.show(with: "请输入需要搜索的内容")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if text.count > 0{
|
||||||
|
textField.resignFirstResponder()
|
||||||
|
roomView.requestData(text: text)
|
||||||
|
userView.requestData(text: text)
|
||||||
|
}else{
|
||||||
|
HUDTool.show(with: "请输入需要搜索的内容")
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
@@ -21,4 +21,5 @@ struct HomeVoiceModel : HandyJSON, Codable {
|
|||||||
var userVoice = ""
|
var userVoice = ""
|
||||||
var voiceDura = ""
|
var voiceDura = ""
|
||||||
var userDesc = ""
|
var userDesc = ""
|
||||||
|
var birth:Int64 = 0
|
||||||
}
|
}
|
||||||
|
55
yinmeng-ios/Modules/Home/HomeVoiceSearchView.swift
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
//
|
||||||
|
// HomeVoiceSearchView.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/20.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class HomeVoiceSearchView: UIView {
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
addSubview(bgImageView)
|
||||||
|
addSubview(iconView)
|
||||||
|
addSubview(textVeiw)
|
||||||
|
bgImageView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(self)
|
||||||
|
}
|
||||||
|
iconView.snp.makeConstraints { make in
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 18))
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 9))
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
textVeiw.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 31))
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var bgImageView:UIImageView = {
|
||||||
|
let _bgImageView = UIImageView()
|
||||||
|
_bgImageView.image = UIImage(named: "yin_home_voice_search_bg")
|
||||||
|
return _bgImageView
|
||||||
|
}()
|
||||||
|
private lazy var iconView:UIImageView = {
|
||||||
|
let _iconView = UIImageView()
|
||||||
|
_iconView.image = UIImage(named: "yin_home_voice_search_icon")
|
||||||
|
|
||||||
|
return _iconView
|
||||||
|
}()
|
||||||
|
private lazy var textVeiw:UILabel = {
|
||||||
|
let _textVeiw = UILabel.getCustomLabel(text: "搜索房间",font: UIFont.getScaleFont(ofSize: 14, weight: .regular),color: ThemeColor(hexStr: "#CCCCCC"))
|
||||||
|
|
||||||
|
return _textVeiw
|
||||||
|
}()
|
||||||
|
}
|
@@ -9,7 +9,7 @@ import UIKit
|
|||||||
import Nuke
|
import Nuke
|
||||||
|
|
||||||
|
|
||||||
typealias ClickBtnBlock = (_ type: Int ,_ model:HomeVoiceModel)->Void
|
typealias ClickBtnBlock = (_ type: Int ,_ uid:String)->Void
|
||||||
|
|
||||||
|
|
||||||
class HomeVoiceUserInfoView: UIView {
|
class HomeVoiceUserInfoView: UIView {
|
||||||
@@ -36,9 +36,13 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
|
|
||||||
|
|
||||||
backgroundView.addSubview(lineView)
|
backgroundView.addSubview(lineView)
|
||||||
backgroundView.addSubview(attentionBtn)
|
backgroundView.addSubview(tagStackView)
|
||||||
backgroundView.addSubview(lineView1)
|
tagStackView.addArrangedSubview(attentionBtn)
|
||||||
backgroundView.addSubview(chatBtn)
|
tagStackView.addArrangedSubview(lineView1)
|
||||||
|
tagStackView.addArrangedSubview(sendGfitBtn)
|
||||||
|
tagStackView.addArrangedSubview(lineView2)
|
||||||
|
tagStackView.addArrangedSubview(chatBtn)
|
||||||
|
|
||||||
dissView.snp.makeConstraints { make in
|
dissView.snp.makeConstraints { make in
|
||||||
make.edges.equalTo(self)
|
make.edges.equalTo(self)
|
||||||
}
|
}
|
||||||
@@ -79,7 +83,7 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
make.height.equalTo(128)
|
make.height.equalTo(128)
|
||||||
}
|
}
|
||||||
signatureView.snp.makeConstraints { make in
|
signatureView.snp.makeConstraints { make in
|
||||||
make.left.top.right.equalTo(16)
|
make.left.top.right.equalTo(self.bgSignatureView).inset(16)
|
||||||
make.height.equalTo(54)
|
make.height.equalTo(54)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,21 +116,22 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
make.top.equalTo(self.bgSignatureView.snp.bottom).offset(16)
|
make.top.equalTo(self.bgSignatureView.snp.bottom).offset(16)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tagStackView.snp.makeConstraints { make in
|
||||||
|
make.leading.bottom.trailing.equalTo(backgroundView)
|
||||||
|
make.top.equalTo(230)
|
||||||
|
}
|
||||||
lineView1.snp.makeConstraints { make in
|
lineView1.snp.makeConstraints { make in
|
||||||
make.width.equalTo(1)
|
make.width.equalTo(1)
|
||||||
make.height.equalTo(18)
|
make.height.equalTo(18)
|
||||||
make.top.equalTo(237)
|
|
||||||
make.centerX.equalTo(self.backgroundView)
|
|
||||||
}
|
}
|
||||||
attentionBtn.snp.makeConstraints { make in
|
lineView2.snp.makeConstraints { make in
|
||||||
make.top.equalTo(self.lineView)
|
make.width.equalTo(1)
|
||||||
make.bottom.left.equalTo(self.backgroundView)
|
make.height.equalTo(18)
|
||||||
make.right.equalTo(self.lineView1.snp.left)
|
|
||||||
}
|
|
||||||
chatBtn.snp.makeConstraints { make in
|
|
||||||
make.top.height.width.equalTo(self.attentionBtn)
|
|
||||||
make.left.equalTo(self.lineView1.snp.right)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let layer = CAShapeLayer()
|
let layer = CAShapeLayer()
|
||||||
let path = UIBezierPath.init(roundedRect: CGRect(x: 0, y: 0, width: 130, height: 28), byRoundingCorners: [.topRight , .bottomRight,.bottomLeft] , cornerRadii: CGSize(width: 14, height: 14))
|
let path = UIBezierPath.init(roundedRect: CGRect(x: 0, y: 0, width: 130, height: 28), byRoundingCorners: [.topRight , .bottomRight,.bottomLeft] , cornerRadii: CGSize(width: 14, height: 14))
|
||||||
layer.path = path.cgPath
|
layer.path = path.cgPath
|
||||||
@@ -137,16 +142,17 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
}
|
}
|
||||||
@objc func attentionBtnAction(){
|
@objc func attentionBtnAction(){
|
||||||
if self.type == 1{
|
if self.type == 1{
|
||||||
if let _clickBtnBlock = clickBtnBlock,let _model = self.model{
|
if let _clickBtnBlock = clickBtnBlock,let uid = self.model?.uid{
|
||||||
_clickBtnBlock(3,_model)
|
_clickBtnBlock(3,"\(uid)")
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.attentionBtn.isSelected = !self.attentionBtn.isSelected
|
self.attentionBtn.isSelected = !self.attentionBtn.isSelected
|
||||||
let type = self.attentionBtn.isSelected ? "1" : "2"
|
let type = self.attentionBtn.isSelected ? "1" : "2"
|
||||||
guard let uid = self.model?.uid else{return}
|
let uid = self.model != nil ? self.model?.uid : self.user?.uid
|
||||||
let params = ["uid":"\(AuthManager.userUid)","ticket":AuthManager.ticket,"type":type,"likedUid":"\(uid)"] as [String : Any]
|
guard let getUid = uid else{return}
|
||||||
|
let params = ["uid":"\(AuthManager.userUid)","ticket":AuthManager.ticket,"type":type,"likedUid":"\(getUid)"] as [String : Any]
|
||||||
|
|
||||||
RequestPost(path: "fans/like", parma: params) { data in
|
RequestPost(path: "fans/like", parma: params) { data in
|
||||||
if(self.attentionBtn.isSelected){
|
if(self.attentionBtn.isSelected){
|
||||||
@@ -160,14 +166,17 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
}
|
}
|
||||||
@objc func chatBtnAction(){
|
@objc func chatBtnAction(){
|
||||||
if self.type == 1{
|
if self.type == 1{
|
||||||
if let _clickBtnBlock = clickBtnBlock,let _model = self.model{
|
if let _clickBtnBlock = clickBtnBlock,let uid = self.model?.uid{
|
||||||
_clickBtnBlock(4,_model)
|
_clickBtnBlock(4,"\(uid)")
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if let _clickBtnBlock = clickBtnBlock,let _model = self.model{
|
if let _clickBtnBlock = clickBtnBlock, let uid = self.model?.uid{
|
||||||
_clickBtnBlock(0,_model)
|
_clickBtnBlock(0,"\(uid)")
|
||||||
|
}
|
||||||
|
if let _clickBtnBlock = clickBtnBlock,let uid = self.user?.uid{
|
||||||
|
_clickBtnBlock(0,"\(uid)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@objc func playVoiceAction(){
|
@objc func playVoiceAction(){
|
||||||
@@ -182,6 +191,42 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
var user:UserObject? = nil{
|
||||||
|
didSet{
|
||||||
|
guard let _user = user else { return }
|
||||||
|
Nuke.loadImage(with: _user.avatar, into: avatarView)
|
||||||
|
nameTextView.text = _user.nick
|
||||||
|
sexImageView.image = _user.gender == .Boy ? UIImage(named: "yin_plane_star_man") : UIImage(named: "yin_plane_star__woman")
|
||||||
|
|
||||||
|
|
||||||
|
signatureView.text = _user.userDesc.isEmpty ? "这个人很懒还没有签名" : _user.userDesc
|
||||||
|
bgVoiceVeiw.isHidden = true
|
||||||
|
guard let uid = _user.uid else{return}
|
||||||
|
let params = ["uid":uid]
|
||||||
|
RequestGet(path: "user/get", parma: params) { data in
|
||||||
|
if let info = Deserialized<UserObject>.toModel(with: data) {
|
||||||
|
self.signatureView.text = info.userDesc.isEmpty ? "这个人很懒还没有签名" : info.userDesc
|
||||||
|
let timeStamp = info.birth / 1000
|
||||||
|
|
||||||
|
let timeInterval:TimeInterval = TimeInterval(timeStamp)
|
||||||
|
|
||||||
|
let date = NSDate(timeIntervalSince1970: timeInterval) as Date
|
||||||
|
self.starView.text = Date.getCalculateWithDate(date: date)
|
||||||
|
self.starView.isHidden = false
|
||||||
|
}
|
||||||
|
} fail: { code, message in
|
||||||
|
|
||||||
|
}
|
||||||
|
RequestGet(path: "fans/islike", parma: ["uid":"\(AuthManager.userUid)","isLikeUid":"\(uid)"]) { data in
|
||||||
|
if let isLike = data as? Bool{
|
||||||
|
self.attentionBtn.isSelected = isLike
|
||||||
|
}
|
||||||
|
|
||||||
|
} fail: { code, data in
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
var model:HomeVoiceModel? = nil {
|
var model:HomeVoiceModel? = nil {
|
||||||
didSet{
|
didSet{
|
||||||
guard let _model = model else {
|
guard let _model = model else {
|
||||||
@@ -190,8 +235,16 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
Nuke.loadImage(with: _model.avatar, into: avatarView)
|
Nuke.loadImage(with: _model.avatar, into: avatarView)
|
||||||
nameTextView.text = _model.nick
|
nameTextView.text = _model.nick
|
||||||
sexImageView.image = _model.gender == 1 ? UIImage(named: "yin_plane_star_man") : UIImage(named: "yin_plane_star__woman")
|
sexImageView.image = _model.gender == 1 ? UIImage(named: "yin_plane_star_man") : UIImage(named: "yin_plane_star__woman")
|
||||||
|
let timeStamp = _model.birth / 1000
|
||||||
|
|
||||||
starView.text = "天蠍座"
|
let timeInterval:TimeInterval = TimeInterval(timeStamp)
|
||||||
|
|
||||||
|
let date = NSDate(timeIntervalSince1970: timeInterval) as Date
|
||||||
|
starView.text = Date.getCalculateWithDate(date: date)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
starView.isHidden = false
|
||||||
signatureView.text = _model.userDesc.isEmpty ? "这个人很懒还没有签名" : _model.userDesc
|
signatureView.text = _model.userDesc.isEmpty ? "这个人很懒还没有签名" : _model.userDesc
|
||||||
bgVoiceVeiw.isHidden = _model.userVoice.isEmpty
|
bgVoiceVeiw.isHidden = _model.userVoice.isEmpty
|
||||||
playTimeView.text = "\(_model.voiceDura)\""
|
playTimeView.text = "\(_model.voiceDura)\""
|
||||||
@@ -255,6 +308,7 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
_starView.backgroundColor = ThemeColor(hexStr: "#E9E1FF")
|
_starView.backgroundColor = ThemeColor(hexStr: "#E9E1FF")
|
||||||
_starView.layer.cornerRadius = 9
|
_starView.layer.cornerRadius = 9
|
||||||
_starView.layer.masksToBounds = true
|
_starView.layer.masksToBounds = true
|
||||||
|
_starView.isHidden = true
|
||||||
return _starView
|
return _starView
|
||||||
}()
|
}()
|
||||||
var bgSignatureView:UIView = {
|
var bgSignatureView:UIView = {
|
||||||
@@ -269,6 +323,7 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
_signatureView.font = UIFont.systemFont(ofSize: 13, weight: .regular)
|
_signatureView.font = UIFont.systemFont(ofSize: 13, weight: .regular)
|
||||||
_signatureView.textColor = ThemeColor(hexStr: "#1F1B4F")
|
_signatureView.textColor = ThemeColor(hexStr: "#1F1B4F")
|
||||||
_signatureView.text = ""
|
_signatureView.text = ""
|
||||||
|
|
||||||
_signatureView.numberOfLines = 0
|
_signatureView.numberOfLines = 0
|
||||||
return _signatureView
|
return _signatureView
|
||||||
}()
|
}()
|
||||||
@@ -298,21 +353,39 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
_playTimeView.font = UIFont.systemFont(ofSize: 14, weight: .medium)
|
_playTimeView.font = UIFont.systemFont(ofSize: 14, weight: .medium)
|
||||||
return _playTimeView
|
return _playTimeView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var type:Int = 0 {
|
var type:Int = 0 {
|
||||||
didSet{
|
didSet{
|
||||||
|
lineView2.isHidden = true
|
||||||
|
sendGfitBtn.isHidden = true
|
||||||
if type == 0{
|
if type == 0{
|
||||||
attentionBtn.setImage(UIImage(named: "yin_plane_star_no_attention_icon"), for: .normal)
|
attentionBtn.setImage(UIImage(named: "yin_plane_star_no_attention_icon"), for: .normal)
|
||||||
attentionBtn.setTitle(" 关注", for: .normal)
|
attentionBtn.setTitle(" 关注", for: .normal)
|
||||||
chatBtn.setImage(UIImage(named: "yin_home_voice_chat_icon"), for: .normal)
|
chatBtn.setImage(UIImage(named: "yin_home_voice_chat_icon"), for: .normal)
|
||||||
chatBtn.setTitle(" 私聊", for: .normal)
|
chatBtn.setTitle(" 私聊", for: .normal)
|
||||||
}else{
|
}else if type == 1{
|
||||||
attentionBtn.setImage(UIImage(named: "yin_plane_star_pay_icon"), for: .normal)
|
attentionBtn.setImage(UIImage(named: "yin_plane_star_pay_icon"), for: .normal)
|
||||||
attentionBtn.setTitle(" 充值", for: .normal)
|
attentionBtn.setTitle(" 充值", for: .normal)
|
||||||
chatBtn.setImage(UIImage(named: "yin_home_voice_collect_icon"), for: .normal)
|
chatBtn.setImage(UIImage(named: "yin_home_voice_collect_icon"), for: .normal)
|
||||||
chatBtn.setTitle(" 收藏", for: .normal)
|
chatBtn.setTitle(" 收藏", for: .normal)
|
||||||
|
}else{
|
||||||
|
attentionBtn.setImage(UIImage(named: "yin_plane_star_no_attention_icon"), for: .normal)
|
||||||
|
attentionBtn.setTitle(" 关注", for: .normal)
|
||||||
|
chatBtn.setImage(UIImage(named: "yin_home_voice_chat_icon"), for: .normal)
|
||||||
|
chatBtn.setTitle(" 私聊", for: .normal)
|
||||||
|
lineView2.isHidden = false
|
||||||
|
sendGfitBtn.isHidden = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private lazy var tagStackView:UIStackView = {
|
||||||
|
let _tagStackView = UIStackView()
|
||||||
|
_tagStackView.axis = .horizontal
|
||||||
|
_tagStackView.distribution = .fillProportionally
|
||||||
|
_tagStackView.alignment = .center
|
||||||
|
_tagStackView.spacing = UIDevice.scaleWidth(width: 0)
|
||||||
|
return _tagStackView
|
||||||
|
}()
|
||||||
var attentionBtn:UIButton = {
|
var attentionBtn:UIButton = {
|
||||||
let _attentionBtn = UIButton()
|
let _attentionBtn = UIButton()
|
||||||
|
|
||||||
@@ -326,6 +399,20 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
return _attentionBtn
|
return _attentionBtn
|
||||||
|
|
||||||
|
|
||||||
|
}()
|
||||||
|
var sendGfitBtn:UIButton = {
|
||||||
|
let _sendGfitBtn = UIButton()
|
||||||
|
|
||||||
|
_sendGfitBtn.setImage(UIImage(named: "yin_plane_star_send_gift_icon"), for: .normal)
|
||||||
|
_sendGfitBtn.setTitle(" 送礼", for: .normal)
|
||||||
|
_sendGfitBtn.setTitleColor(.white, for: .normal)
|
||||||
|
|
||||||
|
_sendGfitBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: .medium)
|
||||||
|
_sendGfitBtn.setImage(UIImage(named: "yin_plane_star_send_gift_icon"), for: .selected)
|
||||||
|
_sendGfitBtn.addTarget(self, action: #selector(attentionBtnAction), for: .touchUpInside)
|
||||||
|
return _sendGfitBtn
|
||||||
|
|
||||||
|
|
||||||
}()
|
}()
|
||||||
var chatBtn:UIButton = {
|
var chatBtn:UIButton = {
|
||||||
let _chatBtn = UIButton()
|
let _chatBtn = UIButton()
|
||||||
@@ -350,5 +437,12 @@ class HomeVoiceUserInfoView: UIView {
|
|||||||
return _lineView1
|
return _lineView1
|
||||||
|
|
||||||
|
|
||||||
|
}()
|
||||||
|
var lineView2:UIView = {
|
||||||
|
let _lineView2 = UIView()
|
||||||
|
_lineView2.backgroundColor = UIColor.init(white: 1, alpha: 0.2)
|
||||||
|
return _lineView2
|
||||||
|
|
||||||
|
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
@@ -35,13 +35,13 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
}
|
}
|
||||||
@objc func userInfoBtnAction(){
|
@objc func userInfoBtnAction(){
|
||||||
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
||||||
userInfoView.clickBtnBlock = {[weak self] (type,model) in
|
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
|
||||||
guard let weakSelf = self else {
|
guard let weakSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if type == 3{
|
if type == 3{
|
||||||
let vc = UserPayViewController()
|
let vc = UserPayViewController()
|
||||||
self?.navigationController?.pushViewController(vc, animated: true)
|
weakSelf.navigationController?.pushViewController(vc, animated: true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,6 +69,7 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
view.addSubview(backgroundView)
|
view.addSubview(backgroundView)
|
||||||
view.addSubview(scrollView)
|
view.addSubview(scrollView)
|
||||||
scrollView.addSubview(topLogoIcon)
|
scrollView.addSubview(topLogoIcon)
|
||||||
|
scrollView.addSubview(searchView)
|
||||||
scrollView.addSubview(chooseItemVeiw)
|
scrollView.addSubview(chooseItemVeiw)
|
||||||
scrollView.addSubview(changeItemView)
|
scrollView.addSubview(changeItemView)
|
||||||
scrollView.addSubview(userInfoBtn)
|
scrollView.addSubview(userInfoBtn)
|
||||||
@@ -89,9 +90,16 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
topLogoIcon.snp.makeConstraints { make in
|
topLogoIcon.snp.makeConstraints { make in
|
||||||
make.left.equalTo(20)
|
make.left.equalTo(20)
|
||||||
make.top.equalTo(14 + NavHeight)
|
make.top.equalTo(14 + NavHeight)
|
||||||
make.width.equalTo(260)
|
make.width.equalTo(76)
|
||||||
make.height.equalTo(23)
|
make.height.equalTo(23)
|
||||||
}
|
}
|
||||||
|
searchView.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(topLogoIcon.snp.trailing).offset((UIDevice.scaleWidth(width: 18)))
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 30))
|
||||||
|
make.width.equalTo(UIDevice.scaleWidth(width: 240))
|
||||||
|
make.centerY.equalTo(topLogoIcon)
|
||||||
|
}
|
||||||
|
|
||||||
chooseItemVeiw.snp.makeConstraints { make in
|
chooseItemVeiw.snp.makeConstraints { make in
|
||||||
make.left.equalTo(20)
|
make.left.equalTo(20)
|
||||||
make.top.equalTo(self.topLogoIcon.snp.bottom).offset(18)
|
make.top.equalTo(self.topLogoIcon.snp.bottom).offset(18)
|
||||||
@@ -172,13 +180,14 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
||||||
userInfoView.clickBtnBlock = {[weak self] (type,model) in
|
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
|
||||||
|
|
||||||
let session = NIMSession("\(model.uid)", type: .P2P)
|
let session = NIMSession(uid, type: .P2P)
|
||||||
let chatVC = ChatVC.init(session: session)
|
let chatVC = ChatVC.init(session: session)
|
||||||
self?.navigationController?.pushViewController(chatVC, animated: true)
|
self?.navigationController?.pushViewController(chatVC, animated: true)
|
||||||
}
|
}
|
||||||
userInfoView.model = model
|
userInfoView.model = model
|
||||||
|
userInfoView.type = 0
|
||||||
weakSelf.view.addSubview(userInfoView)
|
weakSelf.view.addSubview(userInfoView)
|
||||||
userInfoView.snp.makeConstraints { make in
|
userInfoView.snp.makeConstraints { make in
|
||||||
make.edges.equalTo(weakSelf.view)
|
make.edges.equalTo(weakSelf.view)
|
||||||
@@ -192,8 +201,15 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
make.edges.equalTo((self?.view)!)
|
make.edges.equalTo((self?.view)!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
let searchTap = UITapGestureRecognizer(target: self, action: #selector(clickSearchAction))
|
||||||
|
searchView.addGestureRecognizer(searchTap)
|
||||||
|
}
|
||||||
|
@objc func clickSearchAction(){
|
||||||
|
let searchVC = HomeSearchVC()
|
||||||
|
searchVC.modalPresentationStyle = .fullScreen
|
||||||
|
navigationController?.present(searchVC, animated: true, completion: nil)
|
||||||
|
}
|
||||||
@objc func clickLongTapAction(sender:UIPanGestureRecognizer){
|
@objc func clickLongTapAction(sender:UIPanGestureRecognizer){
|
||||||
let i = (sender.view?.tag ?? 100) - 100
|
let i = (sender.view?.tag ?? 100) - 100
|
||||||
if sender.state == .began{
|
if sender.state == .began{
|
||||||
@@ -233,12 +249,13 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
||||||
userInfoView.clickBtnBlock = {[weak self] (type,model) in
|
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
|
||||||
|
|
||||||
let session = NIMSession("\(model.uid)", type: .P2P)
|
let session = NIMSession(uid, type: .P2P)
|
||||||
let chatVC = ChatVC.init(session: session)
|
let chatVC = ChatVC.init(session: session)
|
||||||
self?.navigationController?.pushViewController(chatVC, animated: true)
|
self?.navigationController?.pushViewController(chatVC, animated: true)
|
||||||
}
|
}
|
||||||
|
userInfoView.type = 0
|
||||||
userInfoView.model = view.model
|
userInfoView.model = view.model
|
||||||
self.view.addSubview(userInfoView)
|
self.view.addSubview(userInfoView)
|
||||||
userInfoView.snp.makeConstraints { make in
|
userInfoView.snp.makeConstraints { make in
|
||||||
@@ -321,7 +338,11 @@ class HomeVoiceVC: BaseViewController,HiddenNavigationBarProtocol {
|
|||||||
_changeItemView.text = "换一换"
|
_changeItemView.text = "换一换"
|
||||||
return _changeItemView
|
return _changeItemView
|
||||||
}()
|
}()
|
||||||
|
private lazy var searchView:HomeVoiceSearchView = {
|
||||||
|
let _searchView = HomeVoiceSearchView(frame: .zero)
|
||||||
|
|
||||||
|
return _searchView
|
||||||
|
}()
|
||||||
var userInfoBtn:UIButton = {
|
var userInfoBtn:UIButton = {
|
||||||
let _userInfoBtn = UIButton()
|
let _userInfoBtn = UIButton()
|
||||||
_userInfoBtn.setBackgroundImage(UIImage(named: "yin_home_voice_user_info_bg"), for: .normal)
|
_userInfoBtn.setBackgroundImage(UIImage(named: "yin_home_voice_user_info_bg"), for: .normal)
|
||||||
|
12
yinmeng-ios/Modules/Room/Tool/YinRoomAudioManager.swift
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
//
|
||||||
|
// YinRoomAudioanager.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class YinRoomAudMioanager: NSObject {
|
||||||
|
|
||||||
|
}
|
26
yinmeng-ios/Modules/Room/Tool/YinRoomTRTCManager.swift
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// YinRoomTRTCManager.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class YinRoomTRTCManager: NSObject {
|
||||||
|
override init() {
|
||||||
|
|
||||||
|
}
|
||||||
|
private func initRTRC(){
|
||||||
|
let cloud = TRTCCloud.sharedInstance()
|
||||||
|
let params = TRTCAudioVolumeEvaluateParams()
|
||||||
|
params.interval = 900
|
||||||
|
cloud.enableAudioVolumeEvaluation(true, with: params)
|
||||||
|
TRTCCloud.setConsoleEnabled(false)
|
||||||
|
TRTCCloud.sharedInstance().addDelegate(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension YinRoomTRTCManager:TRTCCloudDelegate{
|
||||||
|
|
||||||
|
}
|
@@ -49,21 +49,31 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
|
|||||||
RoomVCViewModel.roomVM.isMute = true
|
RoomVCViewModel.roomVM.isMute = true
|
||||||
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
|
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
|
||||||
self.dismiss(animated: true, completion: nil)
|
self.dismiss(animated: true, completion: nil)
|
||||||
return
|
|
||||||
}
|
}else if type == 1 {
|
||||||
TRTCCloud.sharedInstance().exitRoom()
|
|
||||||
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
|
TRTCCloud.sharedInstance().exitRoom()
|
||||||
TRTCCloud.sharedInstance().muteLocalAudio(false)
|
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
|
||||||
RoomVCViewModel.roomVM.isMute = true
|
TRTCCloud.sharedInstance().muteLocalAudio(false)
|
||||||
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
|
RoomVCViewModel.roomVM.isMute = true
|
||||||
self.dismiss(animated: true, completion: nil)
|
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
self.dismiss(animated: true, completion: nil)
|
||||||
let vc = RoomVC(roomUid: uid)
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
|
||||||
let nav = BaseNavigationViewController.init(rootViewController: vc)
|
let vc = RoomVC(roomUid: uid)
|
||||||
nav.modalPresentationStyle = .fullScreen
|
let nav = BaseNavigationViewController.init(rootViewController: vc)
|
||||||
keyWindow.rootViewController?.present(nav, animated: true, completion: nil)
|
nav.modalPresentationStyle = .fullScreen
|
||||||
|
keyWindow.rootViewController?.present(nav, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
let web = WebViewController(url: uid,isHalf: true)
|
||||||
|
self.present(web, animated: true, completion: nil)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private func addNIMSDKManager(){
|
private func addNIMSDKManager(){
|
||||||
@@ -102,7 +112,27 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
|
|||||||
make.bottom.equalTo(-bottom)
|
make.bottom.equalTo(-bottom)
|
||||||
make.height.equalTo(UIDevice.scaleWidth(width: 40))
|
make.height.equalTo(UIDevice.scaleWidth(width: 40))
|
||||||
}
|
}
|
||||||
|
micSeatView.showUserInfoBlock = {[weak self] user in
|
||||||
|
guard let weakSelf = self else { return }
|
||||||
|
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
|
||||||
|
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
|
||||||
|
guard let weakSelf = self else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if type == 0{
|
||||||
|
let session = NIMSession(uid, type: .P2P)
|
||||||
|
let chatVC = ChatVC.init(session: session)
|
||||||
|
weakSelf.navigationController?.pushViewController(chatVC, animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
userInfoView.type = 2
|
||||||
|
userInfoView.user = user
|
||||||
|
weakSelf.view.addSubview(userInfoView)
|
||||||
|
userInfoView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(weakSelf.view)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func requestData(){
|
private func requestData(){
|
||||||
|
@@ -9,8 +9,11 @@ import UIKit
|
|||||||
import NIMSDK
|
import NIMSDK
|
||||||
import MJExtension
|
import MJExtension
|
||||||
|
|
||||||
class NormalMicSeatSuperView: MicSeatSuperView {
|
|
||||||
|
|
||||||
|
typealias ShowUserInfoBlock = (_ user:UserObject)->Void
|
||||||
|
|
||||||
|
class NormalMicSeatSuperView: MicSeatSuperView {
|
||||||
|
var showUserInfoBlock:ShowUserInfoBlock?
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
setUILayout()
|
setUILayout()
|
||||||
@@ -127,20 +130,20 @@ class NormalMicSeatSuperView: MicSeatSuperView {
|
|||||||
let params = TRTCAudioVolumeEvaluateParams()
|
let params = TRTCAudioVolumeEvaluateParams()
|
||||||
params.interval = 900
|
params.interval = 900
|
||||||
cloud.enableAudioVolumeEvaluation(true, with: params)
|
cloud.enableAudioVolumeEvaluation(true, with: params)
|
||||||
let mewParams = TRTCParams()
|
let yinParams = TRTCParams()
|
||||||
if AuthViewModel.authVM.appId.isEmpty{
|
if AuthViewModel.authVM.appId.isEmpty{
|
||||||
|
|
||||||
mewParams.sdkAppId = UInt32("1400798783") ?? 0
|
yinParams.sdkAppId = UInt32("1400798783") ?? 0
|
||||||
}else{
|
}else{
|
||||||
mewParams.sdkAppId = UInt32(AuthViewModel.authVM.appId) ?? 0
|
yinParams.sdkAppId = UInt32(AuthViewModel.authVM.appId) ?? 0
|
||||||
}
|
}
|
||||||
mewParams.roomId = UInt32(curRoomId) ?? 0
|
yinParams.roomId = UInt32(curRoomId) ?? 0
|
||||||
let uid = "\(AuthManager.userUid)"
|
let uid = "\(AuthManager.userUid)"
|
||||||
mewParams.userId = uid
|
yinParams.userId = uid
|
||||||
let sign = self.roomData?.trtcSig ?? ""
|
let sign = self.roomData?.trtcSig ?? ""
|
||||||
mewParams.userSig = sign
|
yinParams.userSig = sign
|
||||||
mewParams.role = TRTCRoleType.audience
|
yinParams.role = TRTCRoleType.audience
|
||||||
TRTCCloud.sharedInstance().enterRoom(mewParams, appScene: TRTCAppScene.LIVE)
|
TRTCCloud.sharedInstance().enterRoom(yinParams, appScene: TRTCAppScene.LIVE)
|
||||||
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
|
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
|
||||||
TRTCCloud.sharedInstance().muteLocalAudio(false)
|
TRTCCloud.sharedInstance().muteLocalAudio(false)
|
||||||
RoomVCViewModel.roomVM.isMute = false
|
RoomVCViewModel.roomVM.isMute = false
|
||||||
@@ -235,28 +238,27 @@ extension NormalMicSeatSuperView:UICollectionViewDelegate,UICollectionViewDataSo
|
|||||||
}
|
}
|
||||||
if user.user != nil{
|
if user.user != nil{
|
||||||
if user.user?.uid == AuthManager.userUid{
|
if user.user?.uid == AuthManager.userUid{
|
||||||
let popUpView = PlanetStarPopUpView.init(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight))
|
let popUpView = PlanetStarPopUpView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight))
|
||||||
keyWindow.addSubview(popUpView)
|
keyWindow.addSubview(popUpView)
|
||||||
popUpView.textView.text = "确定下麦旁听吗?"
|
popUpView.textView.text = "确定下麦旁听吗?"
|
||||||
popUpView.senderView.setTitle("确定", for: .normal)
|
popUpView.senderView.setTitle("确定", for: .normal)
|
||||||
popUpView.bgPointView.isHidden = true
|
popUpView.bgPointView.isHidden = true
|
||||||
popUpView.pointTextView.isHidden = true
|
popUpView.pointTextView.isHidden = true
|
||||||
popUpView.clickSendBlcok = {[weak self] in
|
popUpView.clickSendBlcok = {
|
||||||
let downRequest = NIMChatroomQueueRemoveRequest()
|
let downRequest = NIMChatroomQueueRemoveRequest()
|
||||||
downRequest.key = "\(indexPath.row)"
|
downRequest.key = "\(indexPath.row)"
|
||||||
downRequest.roomId = roomUid
|
downRequest.roomId = roomUid
|
||||||
NIMSDK.shared().chatroomManager.removeChatroomQueueObject(downRequest) {[weak self] (error, info) in
|
NIMSDK.shared().chatroomManager.removeChatroomQueueObject(downRequest) { (error, info) in
|
||||||
guard let self = self else{return}
|
|
||||||
if error == nil{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if let showUserInfoBlock = self.showUserInfoBlock,let user = user.user{
|
||||||
|
showUserInfoBlock(user)
|
||||||
|
}
|
||||||
|
|
||||||
HUDTool.show(with: "该麦位已经有人了哦~")
|
|
||||||
}else{
|
}else{
|
||||||
if (index == -2){
|
if (index == -2){
|
||||||
upMicAction(index: "\(indexPath.row)")
|
upMicAction(index: "\(indexPath.row)")
|
||||||
@@ -299,9 +301,10 @@ extension NormalMicSeatSuperView:UICollectionViewDelegate,UICollectionViewDataSo
|
|||||||
user.user = userData
|
user.user = userData
|
||||||
}else if changeType == 2,let i = Int(pos){
|
}else if changeType == 2,let i = Int(pos){
|
||||||
let user = roomUserList[i]
|
let user = roomUserList[i]
|
||||||
let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as! NormalMicSeatCell
|
if let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as? NormalMicSeatCell{
|
||||||
cell.micSeatView.speakView.isHidden = true
|
cell.micSeatView.speakView.isHidden = true
|
||||||
user.user = nil
|
user.user = nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,9 +396,11 @@ extension NormalMicSeatSuperView:TRTCCloudDelegate{
|
|||||||
}
|
}
|
||||||
roomOwnerView.speakView.isHidden = true
|
roomOwnerView.speakView.isHidden = true
|
||||||
for i in 0..<8 {
|
for i in 0..<8 {
|
||||||
let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as! NormalMicSeatCell
|
if let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as? NormalMicSeatCell{
|
||||||
|
|
||||||
cell.micSeatView.speakView.isHidden = true
|
cell.micSeatView.speakView.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
for uid in uidList {
|
for uid in uidList {
|
||||||
@@ -409,11 +414,12 @@ extension NormalMicSeatSuperView:TRTCCloudDelegate{
|
|||||||
|
|
||||||
}
|
}
|
||||||
for i in 0..<8 {
|
for i in 0..<8 {
|
||||||
let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as! NormalMicSeatCell
|
if let cell = collectionView.cellForItem(at: IndexPath(row: i, section: 0)) as? NormalMicSeatCell{
|
||||||
if let user = cell.user,let curUid = user.uid,"\(curUid)" == uid{
|
if let user = cell.user,let curUid = user.uid,"\(curUid)" == uid{
|
||||||
cell.micSeatView.speakView.isHidden = false
|
cell.micSeatView.speakView.isHidden = false
|
||||||
}else{
|
}else{
|
||||||
cell.micSeatView.speakView.isHidden = true
|
cell.micSeatView.speakView.isHidden = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,6 +25,7 @@ class RoomMenuView: UIView {
|
|||||||
addSubview(sendBtn)
|
addSubview(sendBtn)
|
||||||
addSubview(chatBtn)
|
addSubview(chatBtn)
|
||||||
addSubview(micBtn)
|
addSubview(micBtn)
|
||||||
|
addSubview(sendGiftBtn)
|
||||||
sendBtn.snp.makeConstraints { make in
|
sendBtn.snp.makeConstraints { make in
|
||||||
make.leading.equalTo(UIDevice.scaleWidth(width: 15))
|
make.leading.equalTo(UIDevice.scaleWidth(width: 15))
|
||||||
make.top.equalTo(self)
|
make.top.equalTo(self)
|
||||||
@@ -42,7 +43,11 @@ class RoomMenuView: UIView {
|
|||||||
make.centerY.equalTo(chatBtn)
|
make.centerY.equalTo(chatBtn)
|
||||||
make.leading.equalTo(chatBtn.snp.trailing).offset((UIDevice.scaleWidth(width: 8)))
|
make.leading.equalTo(chatBtn.snp.trailing).offset((UIDevice.scaleWidth(width: 8)))
|
||||||
}
|
}
|
||||||
|
sendGiftBtn.snp.makeConstraints { make in
|
||||||
|
make.trailing.equalTo(-UIDevice.scaleWidth(width: 15))
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 38))
|
||||||
|
make.centerY.equalTo(chatBtn)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -163,9 +168,9 @@ class RoomMenuView: UIView {
|
|||||||
_micBtn.isHidden = true
|
_micBtn.isHidden = true
|
||||||
return _micBtn
|
return _micBtn
|
||||||
}()
|
}()
|
||||||
// private lazy var sendGiftBtn :UIButton = {
|
private lazy var sendGiftBtn :UIButton = {
|
||||||
// let _sendGiftBtn = UIButton()
|
let _sendGiftBtn = UIButton()
|
||||||
// _sendGiftBtn.setImage(UIImage(named: room_send_gift_icon), for: .normal)
|
_sendGiftBtn.setImage(UIImage(named: "room_send_gift_icon"), for: .normal)
|
||||||
// return _sendGiftBtn
|
return _sendGiftBtn
|
||||||
// }()
|
}()
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,26 @@
|
|||||||
|
//
|
||||||
|
// YinRoomRankModel.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/22.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import HandyJSON
|
||||||
|
|
||||||
|
struct YinRoomRankModel: HandyJSON{
|
||||||
|
var avatar = ""
|
||||||
|
var charmSeq = 0
|
||||||
|
var charmUrl = ""
|
||||||
|
var experNewUrl = ""
|
||||||
|
var charmNewUrl = ""
|
||||||
|
var erbanNo = 0
|
||||||
|
var experSeq = 0
|
||||||
|
var experUrl = ""
|
||||||
|
var gender:UserSexType = .Boy
|
||||||
|
var goldAmount = 0
|
||||||
|
var hide = false
|
||||||
|
var nick = ""
|
||||||
|
var ranking = 0
|
||||||
|
var uid = 0
|
||||||
|
}
|
@@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// SendGiftUserModel.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/14.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import HandyJSON
|
||||||
|
|
||||||
|
struct SendGiftUserModel: HandyJSON{
|
||||||
|
var avatar = ""
|
||||||
|
var nick = ""
|
||||||
|
var position = ""
|
||||||
|
var vipMic = false
|
||||||
|
var isChoose = false
|
||||||
|
var uid = 0
|
||||||
|
}
|
@@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// SendGiftFaceplateView.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/14.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class SendGiftFaceplateView: UIView {
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
addSubview(dissBtn)
|
||||||
|
addSubview(bgMaskView)
|
||||||
|
addSubview(contentStackView)
|
||||||
|
}
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var dissBtn:UIButton = {
|
||||||
|
let _dissBtn = UIButton()
|
||||||
|
return _dissBtn
|
||||||
|
}()
|
||||||
|
private lazy var bgMaskView:UIVisualEffectView = {
|
||||||
|
let blur = UIBlurEffect(style: .dark)
|
||||||
|
let _bgMaskView = UIVisualEffectView(effect: blur)
|
||||||
|
|
||||||
|
return _bgMaskView
|
||||||
|
}()
|
||||||
|
private lazy var contentStackView:UIStackView = {
|
||||||
|
let _contentStackView = UIStackView()
|
||||||
|
_contentStackView.axis = .vertical
|
||||||
|
_contentStackView.distribution = .fill
|
||||||
|
_contentStackView.alignment = .fill
|
||||||
|
_contentStackView.spacing = 0
|
||||||
|
_contentStackView.backgroundColor = .clear
|
||||||
|
return _contentStackView
|
||||||
|
}()
|
||||||
|
}
|
@@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// SendGiftTopView.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/14.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class SendGiftTopView: UIView {
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
addSubview(giftBtn)
|
||||||
|
addSubview(lineView)
|
||||||
|
giftBtn.snp.makeConstraints { make in
|
||||||
|
make.leading.equalTo(UIDevice.scaleWidth(width: 16))
|
||||||
|
make.centerY.equalTo(self)
|
||||||
|
make.width.equalTo(UIDevice.scaleWidth(width: 40))
|
||||||
|
}
|
||||||
|
lineView.snp.makeConstraints { make in
|
||||||
|
make.height.equalTo(1)
|
||||||
|
make.leading.trailing.bottom.equalTo(self)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var giftBtn:UIButton = {
|
||||||
|
let _giftBtn = UIButton.getCustomBtn(text: "送礼",font: UIFont.getScaleFont(ofSize: 14, weight: .semibold),color: ThemeColor(hexStr: "#878B9C"),selectedColor: .white)
|
||||||
|
_giftBtn.isSelected = true
|
||||||
|
return _giftBtn
|
||||||
|
}()
|
||||||
|
private lazy var lineView:UIView = {
|
||||||
|
let _lineView = UIView()
|
||||||
|
_lineView.backgroundColor = ThemeColor(hexStr: "#FFFFFF", alpha: 0.1)
|
||||||
|
return _lineView
|
||||||
|
}()
|
||||||
|
}
|
@@ -0,0 +1,71 @@
|
|||||||
|
//
|
||||||
|
// SendGiftUserCell.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/14.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import Nuke
|
||||||
|
|
||||||
|
class SendGiftUserCell: UICollectionViewCell {
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
contentView.addSubview(avatarView)
|
||||||
|
contentView.addSubview(bgBackgroundView)
|
||||||
|
contentView.addSubview(numView)
|
||||||
|
avatarView.snp.makeConstraints { make in
|
||||||
|
make.centerX.top.equalTo(contentView)
|
||||||
|
make.width.height.equalTo(UIDevice.scaleWidth(width: 38))
|
||||||
|
}
|
||||||
|
bgBackgroundView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalTo(avatarView)
|
||||||
|
}
|
||||||
|
numView.snp.makeConstraints { make in
|
||||||
|
make.height.equalTo(UIDevice.scaleWidth(width: 10))
|
||||||
|
make.centerY.equalTo(avatarView.snp.bottom)
|
||||||
|
make.centerX.equalTo(avatarView)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//MARK: - 懒加载
|
||||||
|
var model:SendGiftUserModel? = nil{
|
||||||
|
didSet{
|
||||||
|
guard let _model = model else { return}
|
||||||
|
if let position = Int(_model.position){
|
||||||
|
numView.text = position == -1 ? "房主" : "\(position + 1)"
|
||||||
|
}
|
||||||
|
Nuke.loadImage(with: _model.avatar, into: avatarView, completion: nil)
|
||||||
|
avatarView.layer.borderWidth = _model.isChoose ? 2 : 0
|
||||||
|
bgBackgroundView.isHidden = _model.isChoose
|
||||||
|
numView.backgroundColor = _model.isChoose ? ThemeColor(hexStr: "#FFE710"):ThemeColor(hexStr: "#BDBFD0")
|
||||||
|
numView.textColor = _model.isChoose ? ThemeColor(hexStr: "#282828"):.white
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private lazy var avatarView:UIImageView = {
|
||||||
|
let _avatarView = UIImageView()
|
||||||
|
_avatarView.layer.masksToBounds = true
|
||||||
|
_avatarView.layer.cornerRadius = UIDevice.scaleWidth(width: 38)/2
|
||||||
|
_avatarView.layer.borderColor = ThemeColor(hexStr: "#FFE710").cgColor
|
||||||
|
return _avatarView
|
||||||
|
}()
|
||||||
|
private lazy var bgBackgroundView:UIView = {
|
||||||
|
let _backgroundView = UIView()
|
||||||
|
_backgroundView.backgroundColor = UIColor(white: 0, alpha: 0.2)
|
||||||
|
_backgroundView.layer.cornerRadius = UIDevice.scaleWidth(width: 38)/2
|
||||||
|
_backgroundView.layer.masksToBounds = true
|
||||||
|
return _backgroundView
|
||||||
|
}()
|
||||||
|
private lazy var numView:UILabel = {
|
||||||
|
let _numView = UILabel.getCustomLabel(font: UIFont.getScaleFont(ofSize: 8, weight: .regular),color: .white,textAlignment: .center,backgroundColor: ThemeColor(hexStr: "#999999"),masksToBounds: true,cornerRadius: UIDevice.scaleWidth(width: 10)/2)
|
||||||
|
return _numView
|
||||||
|
}()
|
||||||
|
}
|
@@ -0,0 +1,46 @@
|
|||||||
|
//
|
||||||
|
// SendGiftUserView.swift
|
||||||
|
// yinmeng-ios
|
||||||
|
//
|
||||||
|
// Created by duoban on 2024/3/14.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class SendGiftUserView: UIView {
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
setUILayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
private func setUILayout(){
|
||||||
|
|
||||||
|
}
|
||||||
|
//MARK: - 懒加载
|
||||||
|
private lazy var textVeiw:UILabel = {
|
||||||
|
let _textView = UILabel.getCustomLabel(text: "送给",font: UIFont.getScaleFont(ofSize: 13, weight: .medium),color: .white,textAlignment: .center)
|
||||||
|
return _textView
|
||||||
|
}()
|
||||||
|
private lazy var allUserBtn:UIButton = {
|
||||||
|
let normalImage = UIImage.image(color: ThemeColor(hexStr: "#878B9C"))
|
||||||
|
let selectedImage = UIImage.image(color: ThemeColor(hexStr: "#FFE710"))
|
||||||
|
let _allUserBtn = UIButton.getCustomBtn(text: "全选",font: UIFont.getScaleFont(ofSize: 13, weight: .medium),color: .white,selectedColor: ThemeColor(hexStr: "#28282"),bgImage: normalImage,selectedBgImage: selectedImage)
|
||||||
|
_allUserBtn.layer.cornerRadius = UIDevice.scaleWidth(width: 18)/2
|
||||||
|
_allUserBtn.layer.masksToBounds = true
|
||||||
|
return _allUserBtn
|
||||||
|
}()
|
||||||
|
private lazy var collectionView:UICollectionView = {
|
||||||
|
let flowLayout = UICollectionViewFlowLayout()
|
||||||
|
flowLayout.scrollDirection = .horizontal
|
||||||
|
flowLayout.itemSize = CGSize(width: UIDevice.scaleWidth(width: 38), height: UIDevice.scaleWidth(width: 43))
|
||||||
|
let _collectionView = UICollectionView()
|
||||||
|
|
||||||
|
|
||||||
|
return _collectionView
|
||||||
|
}()
|
||||||
|
}
|
@@ -23,8 +23,8 @@ struct UserFunctionItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct UserObject: HandyJSON {
|
struct UserObject: HandyJSON {
|
||||||
|
var birth:Int64 = 0
|
||||||
|
var userDesc = ""
|
||||||
var uid:Int? = 0
|
var uid:Int? = 0
|
||||||
var erbanNo:Int? = 0
|
var erbanNo:Int? = 0
|
||||||
var avatar:String? = ""
|
var avatar:String? = ""
|
||||||
@@ -35,6 +35,8 @@ struct UserObject: HandyJSON {
|
|||||||
var phone:String? = ""
|
var phone:String? = ""
|
||||||
var giftValue:Int64 = 0
|
var giftValue:Int64 = 0
|
||||||
var userLevelVo:userLevelModel?
|
var userLevelVo:userLevelModel?
|
||||||
|
var userVoice = ""
|
||||||
|
var voiceDura = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
struct userLevelModel:HandyJSON{
|
struct userLevelModel:HandyJSON{
|
||||||
|